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/Categoriacursos.php
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Cursocategoria;
use Livewire\WithFileUploads;
use Image, file;

class Categoriacursos extends Component{

    use WithPagination;
    use WithFileUploads;

    protected $paginationTheme = 'bootstrap';

    public $search='';

    public $categoriacurso_id,$titulo,$logo,$logoupdate;

    public $updateMode = 0;

    public function render(){

        $categorias = Cursocategoria::where('titulo','LIKE','%'.$this->search.'%')->where('estado',1)->paginate(20);
        
        return view('livewire.categoriacursos.index',["categorias"=>$categorias]);
    
    }

    private function resetInputFields(){
        $this->categoriacurso_id = '';
        $this->titulo = '';
        $this->logo = '';
        $this->logoupdate = '';
    }

    public function store(){

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

        if($file = $this->logo) {
            $control=0;
            $nombre = rand().".".$file->getClientOriginalExtension();
            while ($control == 0) {
                if (is_file( public_path() . '/images/categoriacurso/' . $nombre )) {
                    $nombre = rand() . $nombre;
                }else{
                    Image::make($this->logo)
                        ->heighten(1000)
                        ->save(public_path() . '/images/categoriacurso/' . $nombre);
                    $control=1;
                }
            }
        }

        Cursocategoria::create([
            'titulo' => $this->titulo,
            'logo' => $nombre,
        ]);

        session()->flash('success', 'Categoria agregada correctamente!');

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

    }

    public function edit($id){

        $this->updateMode = 2;
        $categoria = Cursocategoria::where('id',$id)->first();
        $this->categoriacurso_id = $id;
        $this->titulo = $categoria->titulo;
        $this->logo = $categoria->logo;
    }

    public function crear(){

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

    }

    public function cancel(){

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

    }

    public function update(){

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

        if ($this->categoriacurso_id) {

            $categoria = Cursocategoria::find($this->categoriacurso_id);
            
            if($this->logoupdate) {
                $file = $this->logoupdate;
                $control=0;
                $nombre = rand().".".$file->getClientOriginalExtension();
                while ($control == 0) {
                    if (is_file( public_path() . '/images/categoriacurso/' . $nombre )) {
                        $nombre = rand() . $nombre;
                    }else{
                        Image::make($this->logoupdate)
                            ->heighten(1000)
                            ->save(public_path() . '/images/categoriacurso/' . $nombre);
                        $control=1;
                    }
                }
                $categoria->update([
                    'titulo' => $this->titulo,
                    'logo' => $nombre,
                ]);
            }else{
                $categoria->update([
                    'titulo' => $this->titulo,
                ]);
            }
            
            
            $this->updateMode = 0;
            session()->flash('success', 'Categoria actualizada correctamente');
            $this->resetInputFields();

        }
    }

    public function delete($id){
        if($id){

            $categoria = Cursocategoria::find($id);
            if($categoria->estado == 1){
                $categoria->estado=0;
                session()->flash('error', 'Categoria desactivada correctamente');
            }else{
                $categoria->estado=1;
                session()->flash('success', 'Categoria activada correctamente');
            }

            $categoria->update();
        }
    }
}