Sindbad~EG File Manager

Current Path : /var/www/html/aventurasolar.sumar.com.py/app/Http/Livewire/
Upload File :
Current File : /var/www/html/aventurasolar.sumar.com.py/app/Http/Livewire/Usuarios.php

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\User;
use App\Models\Equipo;
use App\Models\Matricula;
use App\Models\Matriculaindividual;
use Livewire\WithPagination;
use Illuminate\Support\Facades\Hash;
use Livewire\WithFileUploads;
use App\File;
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\UsersImport;
use Carbon\Carbon;
use Auth;
use DB; 

class Usuarios extends Component{
 
    use WithPagination;
    use WithFileUploads;

	protected $queryString = ['buscar' => ['except' => '']];

    protected $paginationTheme = 'bootstrap';

	public $buscar='';

	public $usuario_id,$name,$email,$password,$fileusuarios,$equipo_id,$desafio_id=[];

    public function render(){

        $usuarios=User::where('name','LIKE',"%{$this->buscar}%")->paginate(20);

        $equipos=Equipo::where('estado',1)->get();

        $desafios=DB::table('desafioindividuals')
            ->whereDate('fecha_limite','>=',Carbon::today()->toDateString())
            ->where('estado',1)->get();

        return view('livewire.usuarios.index',[
            "usuarios"=>$usuarios,
            "equipos"=>$equipos,
            "desafios"=>$desafios
        ]);
    }

    private function resetInputFields(){
        $this->name = '';
        $this->email = '';
        $this->password = '';
        $this->equipo_id = '';
        $this->usuario_id = '';
        $this->desafio_id=[];
    }

    public function cancel(){
        $this->resetInputFields();
    }

    public function store(){
        $validatedDate = $this->validate([
            'fileusuarios' => 'required',
        ],[
            'fileusuarios.required' => 'Seleccione un archivo',
        ]);
        Excel::import(new UsersImport, $this->fileusuarios);

        $this->emit('alert', ['type' => 'info', 'message' => 'Usuarios importados correctamente.']);
        $this->resetInputFields();
    }

    public function storesimple(){
        $validatedDate = $this->validate([
            'name' => 'required',
            'email' => 'required',
            'password' => 'required',
            'equipo_id' => 'required',
            'desafio_id' => 'required',
        ],[
            'name.required' => 'El campo Nombre y Apellido no puede estar vacio',
            'email.required' => 'El campo Email no puede estar vacio',
            'password.required' => 'El campo Contraseña no puede estar vacio',
            'equipo_id.required' => 'El campo Equipo no puede estar vacio',
            'desafio_id.required' => 'El campo Desafios no puede estar vacio',
        ]);
        $usuario = new User;
            $usuario->name = $this->name;
            $usuario->email = $this->email;
            $usuario->password = Hash::make($this->password);
        if($usuario->save()){
            $matricula = new Matricula();
                $matricula->equipo_id = $this->equipo_id;
                $matricula->usuario_id = $usuario->id;
            $matricula->save();
            foreach($this->desafio_id as $desafio){
                $matriculaindividual=new Matriculaindividual;
                    $matriculaindividual->desafio_id=$desafio;
                    $matriculaindividual->usuario_id=$usuario->id;
                $matriculaindividual->save();
            }
        }
        $this->emit('alert', ['type' => 'info', 'message' => 'Usuario creado correctamente.']);
        $this->resetInputFields();
    }

    public function edit($id){
        $this->resetInputFields();
        $usuario = User::find($id);
        $this->usuario_id = $id;
        $this->name = $usuario->name;
        $this->email = $usuario->email;
        if($matricula=Matricula::where('usuario_id',$this->usuario_id)->first()){
            $this->equipo_id=$matricula->equipo_id;
        }
        if($matriculaindividual=Matriculaindividual::where('usuario_id',$this->usuario_id)->get()){
            foreach($matriculaindividual as $individual){
                $this->desafio_id[]=$individual->desafio_id;
            }
        }
    }

    public function update(){
         
        $validatedDate = $this->validate([
                'name' => 'required',
                'email' => 'required',
                'equipo_id' => 'required',
                'desafio_id' => 'required',
            ],
            [
                'name.required' => 'El campo Nombre y Apellido es requerido',
                'email.required' => 'El campo email es requerido',
                'equipo_id.required' => 'El campo grupo es requerido',
                'desafio_id.required' => 'El campo Desafios no puede estar vacio',
            ]
        );
        if ($this->usuario_id) {
            $usuario = User::find($this->usuario_id);
            if($this->password){
                $usuario->update([
                    'name' => $this->name,
                    'email' => $this->email,
                    'password' => Hash::make($this->password),
                ]);
            }else{
                $usuario->update([
                    'name' => $this->name,
                    'email' => $this->email,
                ]);
            }
            if($matricula=Matricula::where('usuario_id',$this->usuario_id)->first()){
                $matricula->equipo_id=$this->equipo_id;
                $matricula->update();
            }else{
                Matricula::create([
                    'equipo_id' => $this->equipo_id,
                    'usuario_id' =>  $this->usuario_id,
                ]);
            }
            if($matriculaindividual=Matriculaindividual::where('usuario_id',$this->usuario_id)->get()){
                foreach($matriculaindividual as $individual){
                    $individual->delete();
                }
            }
            foreach($this->desafio_id as $desafio){
                $matriculaindividual=new Matriculaindividual;
                    $matriculaindividual->desafio_id=$desafio;
                    $matriculaindividual->usuario_id=$this->usuario_id;
                $matriculaindividual->save();
            }
            $this->emit('alert', ['type' => 'info', 'message' => 'usuario actualizado correctamente.']);
            $this->emit('cerrarmodal');
            $this->resetInputFields();
        }
    }

    public function delete($id){
        if($id){
            $usuario = User::find($id);
            if ($usuario->estado == 1) {
                $usuario->update([
                    'estado' => 0,
                ]);
                $this->emit('alert', ['type' => 'error', 'message' => '¡Usuario bloqueado correctamente.!']);
            }else{
                $usuario->update([
                    'estado' => 1,
                ]); 
                $this->emit('alert', ['type' => 'success', 'message' => '¡Usuario activado correctamente.!']);
            }
        }
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists