<?php

namespace App\Http\Livewire\Pabellon;

use App\Libraries\Utilities\Functions;
use Jantinnerezo\LivewireAlert\LivewireAlert;
use Livewire\Component;
use App\Models\Pabellon;
use App\Models\Tumba;
use App\Models\Detalle_tumba;
use App\Models\Entierro;
use App\Models\Detalle_entierro;
use App\Models\Traslados;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Livewire\WithFileUploads;

class Pabellones extends Component
{
    use WithFileUploads;
    use LivewireAlert;
    
    public $pabellonId;
    public $pabellones;
    public $pabellon;
    public $tumbas;
    
    public $filas;
    public $columnas;

    public $tumbaId;
    public $estadoInicio; /* ESTADO INICIAL O ANTERIOR */
    /* public $descripcionEstado; */

    public $contador;
    public $montoTumba;
    public $datoEstado; /* ESTADO CRUD */
    public $nombrePabellon;
    public $datoLetra;
    public $datoNumero;
    public $oldCodigo;

    public $datoTitular;
    public $datoDni;
    public $datoCelular;
    public $obrasAdicionalesId;
    /* public $descripcionServicios; */

    public $estadoPagoId;
    /* public $descripcionPago; */

    public $observacionTumba;
    public $tipoTraslado;
    public $cementerioTraslado;

    public $nombreDifunto;
    public $fechaFallecimiento;
    public $fechaEntierro;
    public $horaEntierro;

    public $actaDefuncion;

    public $selectedEstado;
    public $showTraslado = false;
    public $showDifunto = false;

    protected $token;

    protected $files = [];

    protected $rule = [
        'datoTitular' => 'required|string|max:200',
        /* 'datoDni' => 'required',
        'datoCelular' => 'required', */
        'oldCodigo' => 'required',
        'datoEstado' => 'required',
        /* 'tipoTraslado' => 'required',
        'cementerioTraslado' => 'required', */
        /* 'nombreDifunto' => 'required',
        'fechaFallecimiento' => 'required',
        'fechaEntierro' => 'required',
        'horaEntierro' => 'required', */
        'obrasAdicionalesId' => 'required',
        /* 'montoTumba' => 'required', */
        'actaDefuncion' => 'file|mimes:pdf|max:5120', // 5MB Max
        'estadoPagoId' => 'required',
    ];

    public $estadoTumba;
    public $estadoDetTumba;

    public $fullPath;
    public $etiquetaDifunto;

    public function mount()
    {
        $this->pabellonId;
        $this->pabellones = Pabellon::where('estado_pabellon', 1)->get();
        $this->pabellon;

        $this->filas;
        $this->columnas;

        $this->tumbas;
        $this->tumbaId;

        $this->montoTumba = '';
        $this->datoEstado; /* ESTADO CRUD */
        $this->nombrePabellon = '';
        $this->datoLetra;
        $this->datoNumero;
        $this->oldCodigo = '';

        $this->datoTitular = '';
        $this->datoDni = '';
        $this->datoCelular = '';
        $this->obrasAdicionalesId = '';

        $this->estadoPagoId = '';

        $this->observacionTumba = '';
        $this->tipoTraslado = '';
        $this->cementerioTraslado = ''; 

        $this->nombreDifunto = '';
        $this->fechaFallecimiento = '';
        $this->fechaEntierro = '';
        $this->horaEntierro = '';

        $this->actaDefuncion;

        $this->selectedEstado;
        $this->showTraslado;
        $this->showDifunto;

        $this->files = [];

        $this->fullPath;

        $this->etiquetaDifunto;
    }

    public function render()
    {
        return view('livewire.pabellon.pabellones');
    }

    public function selectPabellon()
    {
        $queryPabellon = Pabellon::find($this->pabellonId);
        $tumbas = Tumba::where('pabellon_id', $this->pabellonId)->get();

        $tumbas->each(function ($tumba) {
            if ($tumba->estado == 3) {
                $entierro = Detalle_entierro::join('entierros', 'detalle_entierro.id_entierro', '=', 'entierros.id')
                    ->select('entierros.nombre_difunto')
                    ->where([
                        ['detalle_entierro.id_tumba', $tumba->id],
                        ['detalle_entierro.estadoDetEntierro', 1]
                            ])
                    ->first();
                
                // Agrega el valor extra al modelo Tumba
                $tumba->nombreDifunto = $entierro ? $entierro->nombre_difunto : 'Sin Nombre';
            } else {
                $tumba->nombreDifunto = 'Sin Nombre';
            }
        });
        
        if($queryPabellon)
        {
            $this->filas = $queryPabellon->cant_filas;
            $this->columnas = $queryPabellon->cant_columnas;
            $this->pabellon = $queryPabellon;
            $this->tumbas = $tumbas;

            $this->emit('updateStyles', [
                'filas' => $this->filas,
                'columnas' => $this->columnas
            ]);
        }else{
            $this->mount();
            $this->emit('updateStyles', [
                'filas' => 0,
                'columnas' => 0
            ]);
        }
    }

    public function getActaDefuncionPath()
    {
        // Construir la ruta completa
        $direccion = public_path('storage/' . $this->actaDefuncion);

        // Verificar si el archivo existe
        if (file_exists($direccion)) {
            $this->fullPath = $direccion;
        }else{
            $this->fullPath = null;
        }

    }

    public function updateDetalleTumba($id, $estado)
    {
        $this->tumbaId = $id;
        $tumba = Tumba::join('detalle_tumbas', 'tumbas.id', '=', 'detalle_tumbas.tumba_id')
                    ->join('detalle_entierro', 'tumbas.id', '=', 'detalle_entierro.id_tumba')
                    ->join('entierros', 'detalle_entierro.id_entierro', '=', 'entierros.id')
                    ->select('tumbas.*', 'detalle_tumbas.*', 'detalle_entierro.*', 'entierros.*')
                    ->where([
                        ['tumbas.id',$this->tumbaId],
                        ['tumbas.estadoTumba', 1],
                        ['detalle_tumbas.estadoDetTumba', 1],
                        ['detalle_entierro.estadoDetEntierro', 1]
                    ])/* ->where('tumbas.estadoTumba', '1') */
                    /* ->orderBy('detalle_tumbas.id', 'desc') */
                    ->first();
        /* dd($tumba); */
        $this->estadoInicio = $estado;
        

        try {
            /* TUMBA */
            $this->montoTumba = $tumba->montoTumba;
            $this->datoEstado = $tumba->estado;
            $this->nombrePabellon = $tumba->nombre_pabellon;
            $letras = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
            $this->datoLetra = $letras[$tumba->letra-1];
            $this->datoNumero = $tumba->numero;
            $this->oldCodigo = $tumba->oldCodigo;
            $this->contador = $tumba->contador;

            /* DETALLE TUMBA */
            $this->datoTitular = $tumba->titular;
            $this->datoDni = $tumba->dni;
            $this->datoCelular = $tumba->celular;
            $this->obrasAdicionalesId = $tumba->obrasAdicionales_id;

            $this->estadoPagoId = $tumba->estadoPago_id;

            /* ENTIERRO */
            $this->observacionTumba = $tumba->observacion;
            $this->tipoTraslado = $tumba->tipoTrasladoAdd;
            $this->cementerioTraslado = $tumba->cementerioAdd;

            /* DETALLE ENTIERRO */
            $this->nombreDifunto = $tumba->nombre_difunto;
            $this->fechaFallecimiento = $tumba->fecha_fallecimiento;
            $this->fechaEntierro = $tumba->fecha_entierro;
            $this->horaEntierro = $tumba->hora_entierro;

            $this->actaDefuncion = $tumba->acta_defuncion;

            $this->estadoTumba = $tumba->estadoTumba;
            $this->estadoDetTumba = $tumba->estadoDetTumba;

            /* dd($tumba->acta_defuncion); */

            $actaPath = $this->getActaDefuncionPath();

            $this->updatedDatoEstado();

        } catch (\Throwable $th) {

            try{
                $tumba = Tumba::join('detalle_tumbas', 'tumbas.id', '=', 'detalle_tumbas.tumba_id')
                    ->select('tumbas.*', 'detalle_tumbas.*')
                    ->where([
                        ['tumbas.id',$this->tumbaId],
                        ['tumbas.estadoTumba', 1],
                        ['detalle_tumbas.estadoDetTumba', 1]
                    ])
                    ->first();

                    $this->montoTumba = $tumba->montoTumba;
                    $this->datoEstado = $tumba->estado;
                    $this->nombrePabellon = $tumba->nombre_pabellon;
                    $letras = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
                    $this->datoLetra = $letras[$tumba->letra-1];
                    $this->datoNumero = $tumba->numero;
                    $this->oldCodigo = $tumba->oldCodigo;
                    $this->contador = $tumba->contador;

                    /* DETALLE TUMBA */
                    $this->datoTitular = $tumba->titular;
                    $this->datoDni = $tumba->dni;
                    $this->datoCelular = $tumba->celular;
                    $this->obrasAdicionalesId = $tumba->obrasAdicionales_id;

                    $this->estadoPagoId = $tumba->estadoPago_id;

                    $this->estadoTumba = $tumba->estadoTumba;
                    $this->estadoDetTumba = $tumba->estadoDetTumba;

                    /* ENTIERRO */
                    $this->observacionTumba = '';
                    $this->tipoTraslado = '';
                    $this->cementerioTraslado = '';

                    /* DETALLE ENTIERRO */
                    $this->nombreDifunto = '';
                    $this->fechaFallecimiento = '';
                    $this->fechaEntierro = '';
                    $this->horaEntierro = '';

                    $this->actaDefuncion = $tumba->acta_defuncion;

                    $this->updatedDatoEstado();

            }catch(\Throwable $th){
                $tumba = Tumba::find($this->tumbaId);
                $letras = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
                $this->datoLetra = $letras[$tumba->letra-1];
                $this->datoNumero = $tumba->numero;
                $this->datoEstado = $tumba->estado;
                $this->contador = $tumba->contador;
                $this->updatedDatoEstado();
                $this->mount();
            }
        }

        $this->selectPabellon();
    }

    public function updatedDatoEstado()
    {
        if ($this->datoEstado == 0 || $this->datoEstado == 1 || $this->datoEstado == 2) {
            $this->showTraslado = false;
            $this->showDifunto = false;
            // Resto de la lógica para ocultar otros campos
        } elseif ($this->datoEstado == 3) {
            $this->showTraslado = false;
            $this->showDifunto = true;
            // Resto de la lógica para mostrar campos relacionados con difunto
        } elseif ($this->datoEstado == 4 || $this->datoEstado == 5) {
            $this->showTraslado = true;
            $this->showDifunto = true;
        } else {
            $this->showTraslado = false;
            $this->showDifunto = false;
        }
    }

    public function updateTumba()
    {
        /* dd($this->estadoInicio, $this->datoEstado); */

        $this->validate($this->rule);
        $token = Str::random(100);
        $this->token = $token.$this->tumbaId;

        if($this->estadoInicio === 0)
            {
                if($this->datoEstado == "1" || $this->datoEstado == "2")
                {
                    $this->nichoInicial();
                    $this->pendienteComprado();
                }
                elseif($this->datoEstado == "3")
                {
                    $this->nichoInicial();
                    $this->disponibleSepultado();
                    /* $this->storeFile(); */
                }
                elseif($this->datoEstado == "4" || $this->datoEstado == "5")
                {
                    $this->nichoInicial();
                    $this->disponibleTraslado();
                }
            }
        elseif($this->estadoInicio === 1 || $this->estadoInicio === 2)
            {
                $this->nichoInicial();

                if($this->datoEstado === "1" || $this->datoEstado ===  "2")
                {
                    $this->logicaUpdate();
                }
                elseif($this->datoEstado === "0"){
                    $this->inicioDisponible();
                }
                elseif($this->datoEstado === "3")
                {
                    $this->pendienteSepultado();
                }
                elseif($this->datoEstado === "4" || $this->datoEstado ==  "5")
                {
                    $this->pendienteTraslado();
                }
            }
        elseif($this->estadoInicio === 3)
            {
                if($this->datoEstado === "3"){
                    $this->logicaUpdate();
                    $this->reset('actaDefuncion');
                    /* $this->storeFile(); */
                }
                elseif($this->datoEstado === "0"){
                    $this->inicioDisponible();
                }
                elseif($this->datoEstado === "1" || $this->datoEstado ===  "2")
                {
                    $this->sepultadoPendiente();
                }
                elseif($this->datoEstado === "4" || $this->datoEstado ===  "5")
                {
                    $this->sepultadoTraslado();
                }
            }
        elseif($this->estadoInicio === 4 || $this->estadoInicio === 5)
            {
                $this->nichoFinal();

                if($this->datoEstado === "4" || $this->datoEstado === "5")
                {
                    $this->logicaUpdate();
                }
                elseif($this->datoEstado === "1" || $this->datoEstado === "2")
                {
                    $this->trasladoPendiente();
                }
                elseif($this->datoEstado === "3")
                {
                    $this->trasladoSepultado();
                }
            }
        else{
            dd("no esta tomando los datos de estado");
        }

            /* dd($estadoInicio, $datoEstado); */

        $this->emit('render');
        $this->emit('alert', ['type' => 'success', 'message' => 'Actualizado correctamente']);
        $this->emit('closeModal');
        $this->selectPabellon();

    }

    public function nichoInicial()
    {
        Tumba::where('id', $this->tumbaId)
            ->update([
                'contador' => $this->contador,
                'oldCodigo' => $this->oldCodigo,
                'estado' => $this->datoEstado,
                'estadoTumba' => 1,
            ]);
    }

    public function nichoFinal()
    {
        Tumba::where('id', $this->tumbaId)
            ->update([
                'contador' => $this->contador,
                'oldCodigo' => $this->oldCodigo,
                'estado' => $this->datoEstado,
                'estadoTumba' => 0,
            ]);
    }

    public function inicioDisponible()
    {
        Tumba::where('id', $this->tumbaId)
            ->update([
                'contador' => $this->contador,
                'oldCodigo' => $this->oldCodigo,
                'estado' => $this->datoEstado,
                'estadoTumba' => 0,
            ]);

        $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

        $detalleTumba->update([
            'estadoDetTumba' => 0,
        ]);

        try{
            $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                ->where('estadoDetEntierro', 1)
                                ->first();

            $detalleEntierro->update([
                'estadoDetEntierro' => 0,
        ]);
        } catch(\Throwable $th){
            
        }

        /* dd($detalleTumba, $detalleEntierro);
        dd("holaaa"); */
    }

    public function logicaUpdate()
    {
        if($this->estadoDetTumba === 0 || $this->estadoDetTumba === null)
        {
            $detalleTumba = Detalle_tumba::create([
                'tumba_id' => $this->tumbaId,
                'obrasAdicionales_id' => $this->obrasAdicionalesId,
                'estadoPago_id' => $this->estadoPagoId,
                'titular' => $this->datoTitular,
                'contador_detalle' => $this->contador,
                'dni' => $this->datoDni,
                'celular' => $this->datoCelular,
                'observacion' => 'Actualizacion Nicho',
                'tipoTrasladoAdd' => $this->tipoTraslado,
                'cementerioAdd' => $this->cementerioTraslado,
                'montoFinal' => $this->montoTumba,
                'token' => $this->token,
                'estadoDetTumba' => 1,
            ]);

            $entierro = Entierro::create([
                'nombre_difunto' => $this->nombreDifunto,
                'fecha_fallecimiento' => $this->fechaFallecimiento,
                'fecha_entierro' => $this->fechaEntierro,
                'hora_entierro' => $this->horaEntierro,
            ]);

            if($this->actaDefuncion)
            {
                $ruta = 'actas';
                $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
                $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

                $detalleEntierro = Detalle_entierro::create([
                    'id_entierro' => $entierro->id,
                    'id_tumba' => $this->tumbaId,
                    'acta_defuncion' => $path,
                    'observacion' => 'Actualizacion de difunto',
                    'estadoDetEntierro' => 1,
                ]);

                $this->dispatchBrowserEvent('file-reset');

            }else{

                $detalleEntierro = Detalle_entierro::create([
                    'id_entierro' => $entierro->id,
                    'id_tumba' => $this->tumbaId,
                    'observacion' => 'Actualizacion de difunto',
                    'estadoDetEntierro' => 1,
                ]);
            }
            /* $this->resetInputFields(); */

        }else{

            $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

            if ($detalleTumba) {
                $detalleTumba->update([
                    'obrasAdicionales_id' => $this->obrasAdicionalesId,
                    'estadoPago_id' => $this->estadoPagoId,
                    'titular' => $this->datoTitular,
                    'contador_detalle' => $this->contador,
                    'dni' => $this->datoDni,
                    'celular' => $this->datoCelular,
                    'observacion' => 'Sepultura de difunto',
                    'tipoTrasladoAdd' => $this->tipoTraslado,
                    'cementerioAdd' => $this->cementerioTraslado,
                    'montoFinal' => $this->montoTumba,
                ]);

                try {
                    $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                                    ->where('estadoDetEntierro', 1)
                                                    ->first();

                    $entierro = Entierro::where('id', $detalleEntierro->id_entierro)->first();
                    
                    if ($entierro) {
                        $entierro->update([
                            'nombre_difunto' => $this->nombreDifunto,
                            'fecha_fallecimiento' => $this->fechaFallecimiento,
                            'fecha_entierro' => $this->fechaEntierro,
                            'hora_entierro' => $this->horaEntierro,
                        ]);

                        if($this->actaDefuncion)
                        {
                            $ruta = 'actas';
                            $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
                            $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

                            $detalleEntierro->update([
                                'acta_defuncion' => $path,
                                'observacion' => 'Entierro de difunto',
                                'estadoDetEntierro' => 1,
                            ]);

                            $this->dispatchBrowserEvent('file-reset');

                        } else {
                            $detalleEntierro->update([
                                'observacion' => 'Entierro de difunto',
                                'estadoDetEntierro' => 1,
                            ]);
                        }

                    } else {

                        $entierro = Entierro::create([
                            'nombre_difunto' => $this->nombreDifunto,
                            'fecha_fallecimiento' => $this->fechaFallecimiento,
                            'fecha_entierro' => $this->fechaEntierro,
                            'hora_entierro' => $this->horaEntierro,
                        ]);

                        if($this->actaDefuncion){

                            $ruta = 'actas';
                            $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
                            $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

                            Detalle_entierro::create([
                                'id_entierro' => $entierro->id,
                                'id_tumba' => $this->tumbaId,
                                'acta_defuncion' => $path,
                                'observacion' => 'Entierro de difunto',
                                'estadoDetEntierro' => 1,
                            ]);

                            $this->dispatchBrowserEvent('file-reset');

                            /* dd("actulizacion"); */

                        } else {

                            Detalle_entierro::create([
                                'id_entierro' => $entierro->id,
                                'id_tumba' => $this->tumbaId,
                                'observacion' => 'Entierro de difunto',
                                'estadoDetEntierro' => 1,
                            ]);
                        }
                    }

                }catch(\Throwable $th){

                    dd("no se ejecuto la actulizacion");

                }
            }
        }

        $this->emit('render');
        $this->emit('alert', 'Actualizado correctamente');
        $this->selectPabellon();
       /*  $this */
    }

   /*  public function resetInputFields()
    {
        $this->actaDefuncion = null;
    } */

    public function pendienteComprado()
    {
        $detalleTumba = Detalle_tumba::create([
            'tumba_id' => $this->tumbaId,
            'obrasAdicionales_id' => $this->obrasAdicionalesId,
            'estadoPago_id' => $this->estadoPagoId,
            'titular' => $this->datoTitular,
            'contador_detalle' => $this->contador+1,
            'dni' => $this->datoDni,
            'celular' => $this->datoCelular,
            'observacion' => 'Nicho Comprado',
            'tipoTrasladoAdd' => $this->tipoTraslado,
            'cementerioAdd' => $this->cementerioTraslado,
            'montoFinal' => $this->montoTumba,
            'token' => $this->token,
            'estadoDetTumba' => 1,
        ]);
    }

    public function disponibleSepultado()
    {
        $detalleTumba = Detalle_tumba::create([
            'tumba_id' => $this->tumbaId,
            'obrasAdicionales_id' => $this->obrasAdicionalesId,
            'estadoPago_id' => $this->estadoPagoId,
            'titular' => $this->datoTitular,
            'contador_detalle' => $this->contador+1,
            'dni' => $this->datoDni,
            'celular' => $this->datoCelular,
            'token' => $this->token,
            'observacion' => 'Sepultura de difunto',
            'tipoTrasladoAdd' => $this->tipoTraslado,
            'cementerioAdd' => $this->cementerioTraslado,
            'montoFinal' => $this->montoTumba,
            'estadoDetTumba' => 1,
        ]);
        $entierro = Entierro::create([
            'nombre_difunto' => $this->nombreDifunto,
            'fecha_fallecimiento' => $this->fechaFallecimiento,
            'fecha_entierro' => $this->fechaEntierro,
            'hora_entierro' => $this->horaEntierro,
        ]);

        if($this->actaDefuncion){
            $ruta = 'actas';
            $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
            $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

            $detalleEntierro = Detalle_entierro::create([
                'id_entierro' => $entierro->id,
                'id_tumba' => $this->tumbaId,
                'acta_defuncion' => $path,
                'observacion' => 'Entierro de difunto',
                'estadoDetEntierro' => 1,
            ]);

            $this->dispatchBrowserEvent('file-reset');

        }else{

            $detalleEntierro = Detalle_entierro::create([
                'id_entierro' => $entierro->id,
                'id_tumba' => $this->tumbaId,
                'observacion' => 'Entierro de difunto',
                'estadoDetEntierro' => 1,
            ]);
        }
    }

    public function disponibleTraslado()
    {
        $traslado = Traslados::create([
            'id_tumba' => $this->tumbaId,
            'cementerio' => $this->cementerioTraslado,
            'tipo' => $this->tipoTraslado,
            'acta_defuncion' => 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.pdf',
        ]);
    }

    public function pendienteSepultado()
    {
        try{
            $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

            $detalleTumba->update([
                'tumba_id' => $this->tumbaId,
                'obrasAdicionales_id' => $this->obrasAdicionalesId,
                'estadoPago_id' => $this->estadoPagoId,
                'titular' => $this->datoTitular,
                'contador_detalle' => $this->contador,
                'dni' => $this->datoDni,
                'celular' => $this->datoCelular,
                'observacion' => 'Sepultura de difunto',
                'tipoTrasladoAdd' => $this->tipoTraslado,
                'cementerioAdd' => $this->cementerioTraslado,
                'montoFinal' => $this->montoTumba,
            ]);
        } catch(\Throwable $th){
            dd("no se ejecuto la actulizacion");
        }

        try{
            $entierro = Entierro::update([
                'nombre_difunto' => $this->nombreDifunto,
                'fecha_fallecimiento' => $this->fechaFallecimiento,
                'fecha_entierro' => $this->fechaEntierro,
                'hora_entierro' => $this->horaEntierro,
            ])->where('id', $detalleTumba->id_entierro);

            if($this->actaDefuncion)
            {
                $ruta = 'actas';
                $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
                $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

                $detalleEntierro = Detalle_entierro::update([
                    'id_tumba' => $this->tumbaId,
                    'acta_defuncion' => $path,
                    'observacion' => 'Entierro de difunto',
                ])->where('id_tumba', $this->tumbaId)->first();

                $this->dispatchBrowserEvent('file-reset');

            }else{
        
            $detalleEntierro = Detalle_entierro::update([
                'id_tumba' => $this->tumbaId,
                'observacion' => 'Entierro de difunto',
            ])->where('id_tumba', $this->tumbaId)->first();

            }
        
        }catch(\Throwable $th){

            $entierro = Entierro::create([
                'nombre_difunto' => $this->nombreDifunto,
                'fecha_fallecimiento' => $this->fechaFallecimiento,
                'fecha_entierro' => $this->fechaEntierro,
                'hora_entierro' => $this->horaEntierro,
            ]);

            if($this->actaDefuncion)
            {
                $ruta = 'actas';
                $fileName = 'ActaDefuncion-'.date("d-m-Y").'-'.$this->nombreDifunto . '.' . $this->actaDefuncion->getClientOriginalExtension();
                $path = $this->actaDefuncion->storeAs($ruta, $fileName, 'public');

                $detalleEntierro = Detalle_entierro::create([
                    'id_entierro' => $entierro->id,
                    'id_tumba' => $this->tumbaId,
                    'acta_defuncion' => $path,
                    'observacion' => 'Entierro de difunto',
                    'estadoDetEntierro' => 1,
                ]);

                $this->dispatchBrowserEvent('file-reset');

            }else{

                $detalleEntierro = Detalle_entierro::create([
                    'id_entierro' => $entierro->id,
                    'id_tumba' => $this->tumbaId,
                    'observacion' => 'Entierro de difunto',
                    'estadoDetEntierro' => 1,
                ]);
            }

        }
    }

    public function pendienteTraslado()
    {
        $traslado = Traslados::create([
            'id_tumba' => $this->tumbaId,
            'cementerio' => $this->cementerioTraslado,
            'tipo' => $this->tipoTraslado,
            'acta_defuncion' => $this->actaDefuncion,
        ]);

        $tumba = Tumba::find($this->tumbaId);
        $tumba->estado = $this->datoEstado;
        $tumba->estadoTumba = 0;
        $tumba->save();

        $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first(); 
        
        $detalleTumba->update([
            'estadoDetTumba' => 0,
        ]);

        $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                ->where('estadoDetEntierro', 1)
                                ->first();

        $detalleEntierro->update([
            'estadoDetEntierro' => 0,
        ]);

        $this->emit('render');
        $this->emit('alert', ['type' => 'success', 'message' => 'Actualizado correctamente']);
    }

    public function sepultadoPendiente()
    {
        $tumba = Tumba::find($this->tumbaId);
        $tumba->estado = $this->datoEstado;
        $tumba->oldCodigo = $this->oldCodigo;
        $tumba->save();

        $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

        $detalleTumba->update([
            'titular' => $this->datoTitular,
            'dni' => $this->datoDni,
            'celular' => $this->datoCelular,
            'obrasAdicionales_id' => $this->obrasAdicionalesId,
            'estadoPago_id' => $this->estadoPagoId,
        ]);

        $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                ->where('estadoDetEntierro', 1)
                                ->first();

        $detalleEntierro->update([
            'estadoDetEntierro' => 0,
        ]);

        /* $entierro = Entierro::where('id', $detalleEntierro->id_entierro)->first();

        if($entierro)
        {
            $entierro->update([
                'nombre_difunto' => '',
                'fecha_fallecimiento' => '',
                'fecha_entierro' => '',
                'hora_entierro' => '',
            ]);
        } */

        $this->emit('render');
        $this->emit('alert', ['type' => 'success', 'message' => 'Actualizado correctamente']);
    }

    public function sepultadoTraslado()
    {
        $tumba = Tumba::find($this->tumbaId);
        $tumba->estado = $this->datoEstado;
        $tumba->save();

        $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

        $detalleTumba->update([
            'estadoDetTumba' => 0,
        ]);

        $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                ->where('estadoDetEntierro', 1)
                                ->first();

        $detalleEntierro->update([
            'estadoDetEntierro' => 0,
        ]);

        $entierro = Entierro::where('id', $detalleEntierro->id_entierro)->first();

        if($entierro)
        {
            $entierro->update([
                'nombre_difunto' => $this->nombreDifunto,
                'fecha_fallecimiento' => $this->fechaFallecimiento,
                'fecha_entierro' => $this->fechaEntierro,
                'hora_entierro' => $this->horaEntierro,
            ]);
        }

        $traslado = Traslados::create([
            'id_tumba' => $this->tumbaId,
            'cementerio' => $this->cementerioTraslado,
            'tipo' => $this->tipoTraslado,
            'acta_defuncion' => $this->actaDefuncion,
        ]);


        
    }

    public function trasladoPendiente()
    {
        $tumba = Tumba::find($this->tumbaId);
        $tumba->estado = $this->datoEstado;
        $tumba->save();

        $entierro = Entierro::where('id', $this->tumbaId)->first();

        if($entierro)
        {
            $entierro->update([
                'nombre_difunto' => '',
                'fecha_fallecimiento' => '',
                'fecha_entierro' => '',
                'hora_entierro' => '',
            ]);

            $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                    ->where('estadoDetEntierro', 1)
                                    ->first();

            $detalleEntierro->update([
                'estadoDetEntierro' => 0,
            ]);

            $traslado = Traslados::create([
                'id_tumba' => $this->tumbaId,
                'cementerio' => $this->cementerioTraslado,
                'tipo' => $this->tipoTraslado,
                'acta_defuncion' => $this->actaDefuncion,
            ]);
        }

        $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                     ->where('estadoDetTumba', 1)
                                     ->first();

        $detalleTumba->update([
            'estadoDetTumba' => 0,
        ]);

        $detalleEntierro = Detalle_entierro::where('id_tumba', $this->tumbaId)
                                ->where('estadoDetEntierro', 1)
                                ->first();

        $detalleEntierro->update([
            'estadoDetEntierro' => 0,
        ]);
    }

    public function trasladoSepultado()
    {
        $entierro = Entierro::where('id', $this->tumbaId)->first();

        if($entierro)
        {
            $entierro->update([
                'nombre_difunto' => $this->nombreDifunto,
                'fecha_fallecimiento' => $this->fechaFallecimiento,
                'fecha_entierro' => $this->fechaEntierro,
                'hora_entierro' => $this->horaEntierro,
            ]);

            $detalleTumba = Detalle_tumba::where('tumba_id', $this->tumbaId)
                                        ->where('estadoDetTumba', 1)
                                        ->first();

            $detalleTumba->update([
                'estadoDetTumba' => 1,
                'tipoTraslado' => '',
                'cementerioTraslado' => '',
            ]);

            $traslado = Traslados::create([
                'id_tumba' => $this->tumbaId,
                'cementerio' => $this->cementerioTraslado,
                'tipo' => $this->tipoTraslado,
                'acta_defuncion' => $this->actaDefuncion,
            ]);

        }

    }

    public function storeFile()
    {
        /* Storage::disk('public')->put('texto.txt', 'Hola'); */
        dd("hola");
        if($this->actaDefuncion->hasFile('actaDefuncion'))
        {
            dd("obtener archivo");
            $file = $this->actaDefuncion->file('actaDefuncion');

            $name = "pdf_".time().".".$file->guessExtension();

            $ruta = public_path()."/storage/actas/";

            if($file->guessExtension() == "pdf")
            {
                copy($file, $ruta);

            }else{
                dd("no es pdf");
            }

        }
        /* {
            $file = $request->file('file');

            $name = $file->getClientOriginalName();

            $file->storeAs('',$name.'.'.$file->getClientOriginalExtension(), 'public');
        } */

        /* return response()->json(['success' => 'File uploaded successfully']); */
        /* $path = $request->file('files')->store('public/files');
        $this->files[] = $path; */
        /* return $this->mount(); */
    }

}
