<?php

namespace App\Http\Livewire\Tasa;

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


class PanelMovil extends Component
{
    use WithPagination;
    use WithFileUploads;
    /******************************/
    /**  OBJETO                  **/
    /******************************/
    public $tasa;
    /******************************/
    /**  ATRIBUTOS               **/
    /******************************/
    public $identificador;
    public $monto_tasa;
    public $fecha_reg;
    public $hora_reg;
    public $activo;
    /*****************************/
    /*** INTERACTUAR            **/
    /*****************************/
    protected $paginationTheme = 'bootstrap';
    public $numeroregistros = 10;
    public $campo_orden = 'id';
    public $ordenado = 'desc';
    public $buscador_tasa;
    /*****************************************/
    /*** VALIDAR                           ***/
    /*****************************************/
    public function rules()
    {
        return [
            'monto_tasa' => 'required|regex:/^\d*(\.\d{2})?$/',
            'fecha_reg' => ['required'],
            'hora_reg' => ['required'],
        ];
    }
    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function resetear()
    {
        $this->reset([

            'monto_tasa',
            'fecha_reg',
            'hora_reg',
        ]);
    }

    /*************************/
    /**  ORDENAR            **/
    /*************************/
    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 preparar($id)
    {
        $this->tasa = Tasa::find($id);
        $this->identificador = $this->tasa->id;
        $this->monto_tasa = $this->tasa->monto_tasa;
        $this->monto_tasa = $this->tasa->monto_tasa;
        $this->hora_reg = $this->tasa->hora_reg;
        $this->activo = $this->tasa->activo;
    }
    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function desactivar_tasa()
    {
        if($tasa_activa = Tasa::where('activo','=','2')->get()) 
        {
            $tasa_activa[0]->activo = '1';
            $tasa_activa[0]->update();
        }
    }
    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function activar_tasa()
    {
        
        $this->desactivar_tasa();
        $this->tasa->activo =  '2';
        $this->tasa->update();

        $this->emit('ev_refrescar_panel_tasa');
        $mensaje = 'La tasa fue reactivada sactifactoriamente.';
        $this->emit('ev_cerrar_modal', 'modal_activar_tasa');
        $this->emit('ev_msj_guardado', $mensaje);
        $this->tasa = ' ';
        $this->resetear();
    }

    /*************************/
    /**  RESETEAR           **/
    /*************************/
    public function crear_tasa()
    {

        $this->validate();
        $this->desactivar_tasa();
        $nueva_tasa = Tasa::create([
            'monto_tasa' => $this->monto_tasa,
            'fecha_reg' => $this->fecha_reg,
            'hora_reg' => $this->hora_reg,
            'activo' => '2',

        ]);
        $this->emit('ev_refrescar_panel_tasa');
        $mensaje = 'La tasa fue creada sactifactoriamente.';
        $this->emit('ev_cerrar_modal', 'modal_crear_tasa');
        $this->emit('ev_msj_guardado', $mensaje);
        $this->resetear();
    }

    public function render()
    {
        $tasas = DB::table('tasas')
            ->where('tasas.activo', '!=', '0')
            ->select(
                'tasas.id',
                'tasas.monto_tasa',
                'tasas.fecha_reg',
                'tasas.hora_reg',
                'tasas.activo',
            )
            ->where(function ($query) {
                $query->where('tasas.monto_tasa', 'like', '%' . $this->buscador_tasa . '%')
                    ->Orwhere('tasas.fecha_reg', 'like', '%' . $this->buscador_tasa . '%')
                    ->Orwhere('tasas.hora_reg', 'like', '%' . $this->buscador_tasa . '%');
            })->orderBy('tasas.activo','desc')
            ->orderBy('tasas.fecha_reg','desc')
            ->paginate($this->numeroregistros);

        $count_tasas_busqueda = $tasas->count();

        $count_tasas = DB::table('tasas')->where('tasas.activo', '!=', '0')->count();
        return view('livewire.tasa.panel-movil',compact('tasas', 'count_tasas_busqueda', 'count_tasas'))->layout('layouts.appmovil');
    }
}
