<?php

namespace App\Http\Livewire\Buscador;

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

class PorFechaFactura extends Component
{

    use WithPagination;
    /**REGISTRO**/


    public $fecha_desde;
    public $fecha_hasta;

    public $valor_busqueda;
    public $resultado_busqueda;
    public $resultado_bandera;

    public $id_registro;
    public $codigo;
    public $documento;
    public $paciente;
    public $cirujano;
    public $intervencion;
    public $fecha_intervencion;

    protected $paginationTheme = 'bootstrap';
    public $buscador_registro;
    public $campo_orden = 'id';
    public $ordenado = 'desc';
    public $numeroregistros = 10;

    /*************************/
    /**  DATATABLE          **/
    /*************************/
    public function updatingBuscador()
    {
        $this->resetPage();
    }
    /****************************/
    /**  ORDENAR POR COLUMNA   **/
    /****************************/
    public function ordenar($_columna)
    {
        $this->campo_orden = $_columna;

        if ($this->campo_orden == $_columna) {
            if ($this->ordenado == 'desc') {
                $this->ordenado = 'asc';
            } else {
                $this->ordenado = 'desc';
            }
        } else {
            $this->campo_orden = $_columna;
            $this->ordenado = 'asc';
        }
    }
    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function resetear()
    {
        $this->reset([

            'registro',
            'id_registro',
            'codigo',
            'documento',
            'paciente',
            'cirujano',
            'intervencion',
            'fecha_intervencion',

        ]);
    }
    /********************************/
    /** OYENTES                    **/
    /********************************/
    protected $listeners = ['ev_buscar_fecha' => 'constructor'];

    /*****************************/
    /*** CONSTRUCTOR            **/
    /*****************************/
    public function constructor($_fecha_desde, $_fecha_hasta)
    {
        $this->fecha_desde = $_fecha_desde;
        $this->fecha_hasta = $_fecha_hasta;
    }

    /****************************/
    /**  SELECCIONAR REGISTRO  **/
    /****************************/
    public function seleccionar_registro($_id)
    {
        $this->resetear();
        $this->registro = Registro::find($_id);
        $this->id_registro = $this->registro->id;
        $this->codigo = $this->registro->codigo;
        $this->documento = $this->registro->documento;
        $this->paciente = $this->registro->nombres . " " . $this->registro->apellidos;
        $this->cirujano = $this->registro->cirujano->nombre;
        $this->intervencion = $this->registro->intervencion->nombre;
        $this->fecha_intervencion = $this->registro->fecha_iq;
    }
    /****************************/
    /**  RENDER                **/
    /****************************/
    public function render()
    {

        // $this->emit('ev_modal_test');
        $registros = DB::table('registros')
            ->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(
                DB::raw('YEAR(CURDATE())-YEAR(registros.fecha_nac ) as edad'),
                'registros.id',
                'registros.codigo',
                'registros.documento',
                'registros.nombres',
                'registros.apellidos',
                'registros.genero',
                'registros.fecha_nac',
                'registros.nro_factura',
                'registros.fecha_factura',
                'registros.fecha_iq',
                'registros.status',
                'registros.monto',
                'registros.monto_pagado',
                'registros.monto_diferencia',
                'tasas.monto_tasa as monto_tasa',
                'cirujanos.nombre as cirujano',
                'anestesiologos.nombre as anestesiologo',
                'clinicas.nombre as clinica',
                'intervencions.nombre as intervencion',
                'registros.created_at',
                'registros.activo'
            )
            ->where(function ($query) {
                $query->whereBetween('registros.fecha_factura', [$this->fecha_desde, $this->fecha_hasta]);
            })->orderBy($this->campo_orden, $this->ordenado)
            ->paginate($this->numeroregistros);

   
            $count_busqueda_registros = DB::table('registros')
            ->whereBetween('registros.fecha_factura', [$this->fecha_desde, $this->fecha_hasta])->count();

        return view('livewire.buscador.por-fecha-factura',compact('registros','count_busqueda_registros'));
    }
}