<?php

namespace App\Http\Livewire\Clinica;

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

class PanelMovil extends Component
{
    use WithPagination;
    public $clinica;
    public $id_clinica;
    public $nombre;
    public $activo;
    /**UTILIDAD*/
    protected $paginationTheme = 'bootstrap';
    public $buscador_clinica ='';
    public $numero_clinicas = 10;
    /*************************/
    /**  DATATABLE          **/
    /*************************/
    public function updatingBuscador()
    {
        $this->resetPage();
    }
    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function resetear()
    {
        $this->reset([
            'clinica',
            'nombre',
        ]);
    }
    /********************************/
    /**  SELECCIONAR CIRUJANO  **/
    /********************************/
    public function seleccionar_clinica($_id)
    {
        $this->resetear();
        $this->clinica = Clinica::find($_id);
        /********************************************/
        /*** DIVIDIMOS EL DOCUMENTO DEL USUARIO   ***/
        /********************************************/
        $this->id_clinica = $this->clinica->id;
        $this->nombre = $this->clinica->nombre;
        $this->activo = $this->clinica->activo;
    }
    /*************************/
    /**  VALIDAR            **/
    /*************************/
    public function rules()
    {
        return [
            'nombre' => ['required','string','min:3','max:50'],
        ];
    }
    /*************************/
    /**  REGISTRAR          **/
    /*************************/
    public function registrar_clinica()
    {
                $this->validate();   
                $clinica = Clinica::create([
                    'nombre' => $this->nombre,
                    'activo' => '1',
                ]);
            $this->emit('ev_cerrar_modal','modal_agregar_clinica');
            $mensaje = 'El clinica ha sido registrada exitosamente.';
            $this->emit('ev_msj_guardado', $mensaje);
            $this->emit('ev_refrescar_clinicas');
            $this->resetear(); 
    }
    /****************************/
    /**  ELIMINAR CIRUJANO     **/
    /****************************/
    public function eliminar_clinica()
    {
        $this->clinica->update(['activo' => '0']);
        $mensaje = 'El clinica: <strong> ' . $this->nombre . ' </strong> ha sido eliminada exitosamente';
        $this->emit('ev_cerrar_modal', 'modal_eliminar_clinica');
        $this->emit('ev_msj_guardado', $mensaje);
        $this->resetear();
    }
    /*******************************/
    /**  ACTUALIZAR CIRUJANO      **/
    /*******************************/
    public function actualizar_clinica()
    {
            $this->validate();
            $this->clinica->update(
                [
                    'nombre' => $this->nombre,
                    'activo' => $this->activo]
            );
            $this->emit('ev_cerrar_modal', 'modal_actualizar_clinica');
            $mensaje = 'El clinica: <strong> ' . $this->nombre . ' </strong> ha sido actualizada exitosamente';
            $this->emit('ev_msj_guardado', $mensaje);
            $this->resetear();
    }
    /****************************/
    /**  RENDER                **/
    /****************************/
    public function render()
    {
        $clinicas = DB::table('clinicas')
            ->where('clinicas.activo', '!=', '0')
            ->select(
                'clinicas.id',
                'clinicas.nombre',
                'clinicas.activo'
            )
            ->where(function ($query) {
                $query->where('clinicas.nombre', 'like', '%' . $this->buscador_clinica . '%')
                    ->Orwhere('clinicas.activo', 'like', '%' . $this->buscador_clinica . '%');
            })->orderBy('created_at', 'desc')
            ->paginate($this->numero_clinicas);
        $count_clinicas_busqueda = $clinicas->count();
        $count_clinicas = DB::table('clinicas')->where('clinicas.activo', '!=', '0')->count();
        return view('livewire.clinica.panel-movil',compact('clinicas', 'count_clinicas_busqueda', 'count_clinicas'))->layout('layouts.appmovil');
    }
}
