HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /var/www/html/xfacil.desafio.com.py/app/Http/Livewire/Categoriainfos.php
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Categoriainfo;

class Categoriainfos extends Component{

    use WithPagination;

    protected $paginationTheme = 'bootstrap';
    public $search='';
    public $categoria_id,$categoria,$vista;
    public $updateMode = 0;

    public function render(){

        $categorias = Categoriainfo::where('categoria','LIKE','%'.$this->search.'%')
            ->where('estado',1)->where('vista',$this->vista)->orderBy('orden','asc')->paginate(20);

        return view('livewire.categoriainfos.index',["categorias"=>$categorias]);
    }

    private function resetInputFields(){
        $this->categoria_id = '';
        $this->categoria = '';
    }

    public function store(){

        $validatedDate = $this->validate([
            'categoria' => 'required',
        ],
        [
            'categoria.required' => 'El campo titulo es requerido'
        ]);

        if($ultimoorden=Categoriainfo::where('estado',1)->where('vista',$this->vista)->orderBy('orden','desc')->first()){
            $orden=$ultimoorden->orden+1;
        }else{
            $orden=1;
        }

        Categoriainfo::create([
            'categoria' => $this->categoria,
            'vista' => $this->vista,
            'orden' => $orden
        ]);

        $this->emit('alert', ['type' => 'success', 'message' => 'Categoria creada correctamente.']);

        $this->updateMode = 0;
        $this->resetInputFields();

    }

    public function edit($id){

        $this->updateMode = 2;
        $categoria = Categoriainfo::find($id);
        $this->categoria_id = $id;
        $this->categoria = $categoria->categoria;
    }

    public function crear(){

        $this->updateMode = 1;
        $this->resetInputFields();

    }

    public function cancel(){

        $this->updateMode = 0;
        $this->resetInputFields();

    }

    public function update(){

        $validatedDate = $this->validate([
            'categoria' => 'required',
        ],
        [
            'categoria.required' => 'El campo titulo es requerido',
        ]);

        if ($this->categoria_id) {

            $categoria = Categoriainfo::find($this->categoria_id);
            
            $categoria->update([
                'categoria' => $this->categoria,
            ]);
            
            $this->updateMode = 0;
            $this->emit('alert', ['type' => 'success', 'message' => 'Categoria editada correctamente.']);
            $this->resetInputFields();

        }
    }

    public function delete($id){
        if($id){
            $categoria = Categoriainfo::find($id);
                $categoria->estado=0;
            $categoria->update();
            $this->emit('alert', ['type' => 'error', 'message' => 'Categoria eliminada correctamente.']);
        }
    }

    public function reordenar($estado,$orden){
        $categoriaactual=Categoriainfo::where('orden',$orden)->where('vista',$this->vista)->first();
        if($estado=='aumentar'){
            $numeracionacambiar=$categoriaactual->orden+1;
            $categoriacambiar=Categoriainfo::where('orden',$numeracionacambiar)->where('vista',$this->vista)->first();
            //aumentar orden categoria actual
            $categoriaactual->orden+=1;
            $categoriaactual->update();
            //disminuir categoria afectada
            $categoriacambiar->orden-=1;
            $categoriacambiar->update();
        }else{
            $numeracionacambiar=$categoriaactual->orden-1;
            $categoriacambiar=Categoriainfo::where('orden',$numeracionacambiar)->where('vista',$this->vista)->first();
            //disminuar orden categoria actual
            $categoriaactual->orden-=1;
            $categoriaactual->update();
            //aumentar categoria afectada
            $categoriacambiar->orden+=1;
            $categoriacambiar->update();
        }
    }
}