<?php

namespace App\Http\Livewire\Registro;

use App\Models\Registro;
use App\Models\Tasa;
use Livewire\Component;

class Nuevos extends Component
{

    public $identificador;
    public $codigo;
    public $tipo_documento;
    public $documento;
    public $nombres;
    public $apellidos;
    public $genero;
    public $fecha_nac;
    public $tipo_paciente;
    public $fecha_intervencion;
    public $responsable_pago;
    public $status;
    public $nro_factura;
    public $fecha_factura;
    public $fecha_pago;
    public $fecha_iq;
    public $comentario;
    public $honorarios_anestesiologo;
    public $evaluacion_preanestesica;
    public $activo;
    public $tasa_id;
    public $cirujano_id;
    public $intervencion_id;
    public $anestesiologo_id;

    // public $id;
    /*  public $codigo = 111115;
    public $documento = 'V21374276';
    public $nombres = 'Jounnerth Argenis 02';
    public $apellidos = 'Torres Olivares';
    public $genero = 'M';
    public $fecha_nac = '1991-03-01';
    public $tipo_paciente = 'F';
    public $fecha_intervencion = '1991-03-01';
    public $responsable_pago = 'Responsable 02';
    public $status = 'P';
    public $nro_factura = 123456;
    public $fecha_factura = '1991-03-01';
    public $fecha_pago = '1991-03-01';
    public $fecha_iq = '1991-03-01';
    public $comentario = 'Comentario';
    public $honorarios_anestesiologo = 5000.00;
    public $honorarios_anestesiologo_p = 0.00;
    public $honorarios_anestesiologo_total = 0.00;
    public $evaluacion_preanestesica = 0.00;
    public $evaluacion_preanestesica_p = 0.00;
    public $evaluacion_preanestesica_total = 0.00;
    public $monto = 100000.00;
    public $monto_pagado = 0;
    public $monto_diferencia = 100000.00;
    public $activo = 1;
    public $tasa_id = 1;
    public $cirujano_id = 1;
    public $intNervencion_id = 1;
    /*
    /********************************/
    /** OYENTES                    **/
    /********************************/
    protected $listeners = ['ev_formulario_registro' => 'listeners'];

    public function listeners($operacion, $parametro)
    {

        if ($operacion == "seleccionar_cirujano") {
            $this->seleccionar_cirujano($parametro);
        } elseif ($operacion == "seleccionar_intervencion") {
            $this->seleccionar_intervencion($parametro);
        } elseif ($operacion == "seleccionar_tasa") {
            $this->seleccionar_tasa($parametro);
        } elseif ($operacion == "seleccionar_anestesiologo") {
            $this->seleccionar_anestesiologo($parametro);
        } elseif ($operacion == "redirecion") {
            $this->redirecion($parametro);
        } else {
            dd("error");
        }
    }

    public function seleccionar_cirujano($parametro)
    {
        $this->cirujano_id = $parametro;
    }

    public function seleccionar_intervencion($parametro)
    {
        $this->intervencion_id = $parametro;
    }

    public function seleccionar_tasa($parametro)
    {
        $this->tasa_id = $parametro;
    }

    public function seleccionar_anestesiologo($parametro)
    {
        $this->anestesiologo_id = $parametro;
    }

    public function redirecion($registro)
    {
        if ($registro == 0) {

            /********************************/
            /** REDIRECCIONAR A            **/
            /** LISTADO DE REGISTRO        **/
            /********************************/
            return redirect('registro/listado');

        } else {

            /********************************/
            /** REDIRECCIONAR              **/
            /** PARA AGERGAR PAGOS         **/
            /********************************/
            return redirect('registro/pagos/' . $registro);
        }
    }

    public function rules()
    {
        return [
            'codigo' => ['required', 'integer'],
            //  'tipo_documento' => ['required'],
            'documento' => ['required', 'string', 'min:5', 'max:20'],
            'nombres' => ['required', 'string', 'min:1', 'max:50'],
            'apellidos' => ['required', 'string', 'min:1', 'max:50'],
            //  'genero' => ['required'],
            'fecha_nac' => ['required', 'date'],
            //  'tipo_paciente' => ['required'],
            'fecha_intervencion' => ['required'],
            'nro_factura' => ['required'],
            'honorarios_anestesiologo' => ['required', 'between:1,99999999.99'],
            'evaluacion_preanestesica' => ['required', 'between:1,99999999.99'],

        ];
    }

    public function guardar_registro()
    {

        /************************************/
        /* PARA SELECCIONAR LA TASA ACTIVA  */
        /* EN CASO DE VIAJAR VACIA          */
        /************************************/
        if ($this->tasa_id == null) {
            $tasa = Tasa::where('activo', '2')->get();
            $this->tasa_id = $tasa[0]->id;
        }
        /***********************************/
        /* PARA VALIDAR LOS SELECT          */
        /************************************/
        if ($this->tipo_documento == null) {
            $mensaje = "Debe seleccionar un tipo de documento.";
        } elseif ($this->genero == null) {
            $mensaje = "Debe seleccionar el genero del paciente.";
        } elseif ($this->tipo_paciente == null) {
            $mensaje = "Debe seleccionar el tipo del paciente.";
        } elseif ($this->cirujano_id == null) {
            $mensaje = "Debe seleccionar una intervencion.";
        } elseif ($this->intervencion_id == null) {
            $mensaje = "Debe seleccionar un cirujano.";
        } elseif ($this->anestesiologo_id == null) {
            $mensaje = "Debe seleccionar un anestesiologo.";
        }

        if (isset($mensaje)) {
            $this->emit('ev_msj_info', $mensaje);
        }

        /************************************/
        /* CALCULO HONORARIO ANESTESIOLOGO   */
        /*************************************/
        $honorarios_anestesiologo_p = $this->honorarios_anestesiologo * 0.15;
        $honorarios_anestesiologo_total = $this->honorarios_anestesiologo - $honorarios_anestesiologo_p;
        /**************************************/
        /* CALCULO EVALUACION PPREANESTECICA   */
        /****************************************/
        $evaluacion_preanestesica_p = $this->evaluacion_preanestesica * 0.15;
        $evaluacion_preanestesica_total = $this->evaluacion_preanestesica - $evaluacion_preanestesica_p;
        /***********************************/
        /* CALCULO TOTALES                 */
        /***********************************/
        $monto = $evaluacion_preanestesica_total + $honorarios_anestesiologo_total;
        $this->validate();

        $registro = Registro::create([
            'codigo' => $this->codigo,
            'documento' => $this->documento,
            'nombres' => $this->nombres,
            'apellidos' => $this->apellidos,
            'genero' => $this->genero,
            'fecha_nac' => $this->fecha_nac,
            'tipo_paciente' => $this->tipo_paciente,
            'fecha_intervencion' => $this->fecha_intervencion,
            'responsable_pago' => $this->responsable_pago,
            'status' => "N",
            'nro_factura' => $this->nro_factura,
            'fecha_factura' => $this->fecha_factura,
            'fecha_iq' => $this->fecha_iq,
            'comentario' => $this->comentario,
            'honorarios_anestesiologo' => $this->honorarios_anestesiologo,
            'honorarios_anestesiologo_p' => $honorarios_anestesiologo_p,
            'honorarios_anestesiologo_total' => $honorarios_anestesiologo_total,
            'evaluacion_preanestesica' => $this->evaluacion_preanestesica,
            'evaluacion_preanestesica_p' => $evaluacion_preanestesica_p,
            'evaluacion_preanestesica_total' => $evaluacion_preanestesica_total,
            'monto' => $monto,
            'monto_pagado' => 0,
            'monto_diferencia' => $monto,
            'activo' => '1',
            'tasa_id' => $this->tasa_id,
            'cirujano_id' => $this->cirujano_id,
            'intervencion_id' => $this->intervencion_id,
            'anestesiologo_id' => $this->anestesiologo_id,
        ]);

        $registro->save();
        $mensaje = 'El registro: <strong> ' . $this->codigo . ' </strong> ha sido activado exitosamente. Desea registrar un pago?';
        //  $this->emit('ev_cerrar_modal', 'modal_activar_pais');
        $this->emit('ev_msj_guardado_modal', $mensaje, $registro->id);
        // $this->resetear();
    }

    public function render()
    {
        return view('livewire.registro.nuevos');
    }
}
