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();
}
}
}