<?php

namespace App\Http\Livewire\Registro;

use App\Models\Pago;
use App\Models\Registro;
use Illuminate\Support\Facades\DB;
use Livewire\Component;

class Vista extends Component
{
    public $id_vista_registro;
    /* REGISTRO */
    public $codigo;
    public $fecha_reg;
    public $comentario;
    /* PACIENTE */
    public $numero_historia;
    public $documento;
    public $genero;
    public $nombres;
    public $apellidos;
    public $fecha_nacimiento;
    public $edad;
    public $tipo_raciente;
    /* INTERVENCION */
    public $clinica;
    public $intervencion;
    public $fecha_intervencion;
    /* MEDICOS */
    public $cirujano;
    public $anestesiologo;
    /* FACTURA */
    public $nro_factura;
    public $fecha_factura;
    public $monto_factura;
    public $tasa;
    public $hora_tasa;
    public $fecha_tasa;
    public $responsable_pago;
    /* HONORARIOS ANESTESIOLOGO */
    public $honorarios_anestesiologo;
    public $honorarios_anestesiologo_p;
    public $honorarios_anestesiologo_total;
    /* HONORARIOS PREANESTESIA */
    public $evaluacion_preanestesica;
    public $evaluacion_preanestesica_p;
    public $evaluacion_preanestesica_total;
    /* MONTOS TOTALES */
    public $monto;
    public $monto_pagado;
    public $monto_diferencia;
    /* STATUS */
    public $status;
    public $activo;
    /* STATUS */
    public $registro_total_pagado;
    public $registro_diferencia;
    // -----------------------------
    // MOUNT
    // -----------------------------
    public function mount($id)
    {
        $this->id_vista_registro = $id;
    }
    // -----------------------------------------------
    // SELECCIONAR REGISTRO
    // FUNCION VACIA PARA EL FUNCIONAMIENTO DEL MODAL
    // -----------------------------------------------
    public function seleccionar_registro() {}
    // -----------------------------------------------
    // RECETEAR
    // FUNCION VACIA PARA EL FUNCIONAMIENTO DEL MODAL
    // -----------------------------------------------
    public function resetear() {}
    public function activar_registro()
    {
        $registro = Registro::find($this->id_vista_registro);
        $registro->update(['activo' => '1']);
        $mensaje = 'El registro numero: <strong> ' . $this->codigo.' </strong> ha sido activado exitosamente';
        $this->emit('ev_cerrar_modal', 'modal_activar_registro');
        $this->emit('ev_msj_guardado', $mensaje);
    }
    public function desactivar_registro()
    {
        $registro = Registro::find($this->id_vista_registro);
        $registro->update(['activo' => '2']);
        $mensaje = 'El registro numero: <strong> ' . $this->codigo.' </strong> ha sido desactivado exitosamente';
        $this->emit('ev_cerrar_modal', 'modal_desactivar_registro');
        $this->emit('ev_msj_guardado', $mensaje);
    }
    public function render()
    {
        $pagos = Pago::where('registro_id', $this->id_vista_registro)
            ->where('pagos.activo', '1')
            ->join('tasas', 'tasas.id', '=', 'pagos.tasa_id')
            ->join('tipo_pagos', 'tipo_pagos.id', '=', 'pagos.tipo_pago_id')
            ->select(
                'pagos.monto',
                'tasas.monto_tasa',
                'tipo_pagos.nombre',
                'pagos.fecha_reg',
                'pagos.activo'
            )
            ->get();

        $count_pagos = count($pagos);  // (count($pagos));

        // $this->emit('ev_modal_test');
        $registros = DB::table('registros')
            ->where('registros.id', $this->id_vista_registro)
            ->join('tasas', 'tasas.id', '=', 'registros.tasa_id')
            ->join('cirujanos', 'cirujanos.id', '=', 'registros.cirujano_id')
            ->join('intervencions', 'intervencions.id', '=', 'registros.intervencion_id')
            ->join('anestesiologos', 'anestesiologos.id', '=', 'registros.anestesiologo_id')
            ->join('clinicas', 'clinicas.id', '=', 'intervencions.clinica_id')
            ->select(
                'registros.codigo',
                'registros.documento',
                'registros.nombres',
                'registros.apellidos',
                'registros.genero',
                'registros.fecha_nac',
                DB::raw('YEAR(CURDATE())-YEAR(registros.fecha_nac ) as edad'),
                'registros.tipo_paciente',
                'registros.fecha_intervencion',
                'registros.responsable_pago',
                'registros.status',
                'registros.nro_factura',
                'registros.fecha_factura',
                'registros.fecha_iq',
                'registros.comentario',
                'registros.honorarios_anestesiologo',
                'registros.honorarios_anestesiologo_p',
                'registros.honorarios_anestesiologo_total',
                'registros.evaluacion_preanestesica',
                'registros.evaluacion_preanestesica_p',
                'registros.evaluacion_preanestesica_total',
                'registros.monto',
                'registros.monto_pagado',
                'registros.monto_diferencia',
                'registros.comentario',
                'registros.activo',
                'registros.created_at',
                'tasas.monto_tasa as monto_tasa',
                'tasas.hora_reg as hora_tasa',
                'tasas.fecha_reg as fecha_tasa',
                'cirujanos.nombre as cirujano',
                'anestesiologos.nombre as anestesiologo',
                'intervencions.nombre as intervencion',
                'clinicas.nombre as clinica',
                'registros.activo'
            )
            ->get();

        /* REGISTRO */
        $this->codigo = $registros[0]->codigo;
        $this->fecha_reg = $registros[0]->created_at;
        $this->comentario = $registros[0]->comentario;
        /* PACIENTE */
        $this->numero_historia = $registros[0]->codigo;
        $this->documento = $registros[0]->documento;
        $this->genero = $registros[0]->genero;
        $this->nombres = $registros[0]->nombres;
        $this->apellidos = $registros[0]->apellidos;
        $this->fecha_nacimiento = $registros[0]->fecha_nac;
        $this->edad = $registros[0]->edad;
        $this->tipo_raciente = $registros[0]->codigo;
        /* INTERVENCION */
        $this->clinica = $registros[0]->clinica;
        $this->intervencion = $registros[0]->intervencion;
        $this->fecha_intervencion = $registros[0]->fecha_iq;
        /* MEDICOS */
        $this->cirujano = $registros[0]->cirujano;
        $this->anestesiologo = $registros[0]->anestesiologo;
        /* FACTURA */
        $this->fecha_factura = $registros[0]->fecha_factura;
        $this->nro_factura = $registros[0]->nro_factura;
        $this->monto_factura = $registros[0]->monto;
        $this->tasa = $registros[0]->monto_tasa;
        $this->fecha_tasa = $registros[0]->fecha_tasa;
        $this->hora_tasa = $registros[0]->hora_tasa;
        $this->responsable_pago = $registros[0]->responsable_pago;
        /* HONORARIOS ANESTESIOLOGO */
        $this->honorarios_anestesiologo = $registros[0]->honorarios_anestesiologo;
        $this->honorarios_anestesiologo_p = $registros[0]->honorarios_anestesiologo_p;
        $this->honorarios_anestesiologo_total = $registros[0]->honorarios_anestesiologo_total;
        /* HONORARIOS PREANESTESIA */
        $this->evaluacion_preanestesica = $registros[0]->evaluacion_preanestesica;
        $this->evaluacion_preanestesica_p = $registros[0]->evaluacion_preanestesica_p;
        $this->evaluacion_preanestesica_total = $registros[0]->evaluacion_preanestesica_total;
        /* MONTOS TOTALES */
        $this->monto;
        $this->monto_pagado;
        $this->monto_diferencia;
        /* STATUS */
        $this->status = $registros[0]->status;
        $this->activo = $registros[0]->activo;
        /* TOTALES */
        $this->registro_total_pagado = $registros[0]->monto_pagado;
        $this->registro_diferencia = $registros[0]->monto_diferencia;

        return view('livewire.registro.vista', compact('registros', 'pagos', 'count_pagos'));
    }
}
