Sindbad~EG File Manager

Current Path : /var/www/html/xfacil.desafio.com.py/app/Http/Livewire/
Upload File :
Current File : /var/www/html/xfacil.desafio.com.py/app/Http/Livewire/Listadopuntos.php

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Puntos;
use App\Models\Mision;
use App\Models\Equipo;
use App\Models\Comentariomisionequipo;
use Livewire\WithPagination;
use Carbon\Carbon;
use Auth;
use DB; 

class Listadopuntos extends Component{

    use WithPagination;

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

    protected $paginationTheme = 'bootstrap';

	public $buscar='',$fecha_inicio,$fecha_fin;

	public $equipo_id,$mision_id,$puntos,$puntosextras,$puntos_id,$comentario_id,$comentario;
    
    public $updateMode = false;

    public function render(){

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

    	$misiones = Mision::where('estado',1)->whereYear('fecha_limite','>=',Carbon::now())->get();

        if($this->fecha_inicio && $this->fecha_fin){

            $puntoscol=DB::table('puntos as p') 
                ->join('misions as m','p.mision_id','m.id')
                ->join('equipos as e','p.equipo_id','e.id')
                ->select('p.*','m.titulo','e.nombre')
                ->whereDate('m.fecha_limite','>=',Carbon::parse($this->fecha_inicio)->toDateString())
                ->whereDate('m.fecha_limite','<=',Carbon::parse($this->fecha_fin)->toDateString())
                ->where('e.nombre','LIKE',"%{$this->buscar}%")->orderBy('p.id','desc')->paginate(12);
        }else{
            $puntoscol=DB::table('puntos as p') 
                ->join('misions as m','p.mision_id','m.id')
                ->join('equipos as e','p.equipo_id','e.id')
                ->select('p.*','m.titulo','e.nombre')
                ->where('e.nombre','LIKE',"%{$this->buscar}%")
                ->orwhere('m.titulo','LIKE',"%{$this->buscar}%")
                ->orwhere('m.puntos','LIKE',"%{$this->buscar}%")->orderBy('p.id','desc')->paginate(12);
        }

        return view('livewire.listadopuntos.index',["puntoscol" => $puntoscol,"equipos" => $equipos,"misiones" => $misiones]);
    }

    private function resetInputFields(){
        $this->equipo_id = '';
        $this->mision_id = '';
        $this->puntos = '';
        $this->puntosextras = '';
        $this->puntos_id = '';
        $this->comentario = '';
        $this->comentario_id = ''; 
    }
 
    public function store()
    {
        $validatedDate = $this->validate([
            'equipo_id' => 'required',
            'mision_id' => 'required',
            'puntos' => 'required',
            'puntosextras' => 'required',
        ]);
 
        Puntos::create([
            'equipo_id' => $this->equipo_id,
            'mision_id' => $this->mision_id,
            'puntos' => $this->puntos,
            'puntos_extras' => $this->puntosextras,
        ]);

        $equipo=Equipo::findOrFail($this->equipo_id);

	        $equipo->puntos+=$this->puntos;
	        $equipo->puntos_extras+=$this->puntosextras;

        $equipo->update();
 
        $this->emit('alert', ['type' => 'success', 'message' => 'Puntos agregados correctamente.']);
 
        $this->resetInputFields();
 
    }
 
    public function edit($id)
    {
        $this->updateMode = true;
        $punto = Puntos::find($id);
        $this->puntos_id = $id;
        $this->equipo_id = $punto->equipo_id;
        $this->mision_id = $punto->mision_id;
        $this->puntos = $punto->puntos;
        $this->puntosextras = $punto->puntos_extras;
    }
 
    public function cancel()
    {
        $this->updateMode = false;
        $this->resetInputFields();
    }
 
    public function update()
    {
        $validatedDate = $this->validate([
            'equipo_id' => 'required',
            'mision_id' => 'required',
            'puntos' => 'required',
            'puntosextras' => 'required',
        ]);
 
        if ($this->puntos_id) {

        	$punto = Puntos::find($this->puntos_id);

        	$equipo=Equipo::findOrFail($this->equipo_id);

		        $equipo->puntos-=$punto->puntos;
		        $equipo->puntos_extras-=$punto->puntos_extras;

	        $equipo->update();

            $punto->update([
                'equipo_id' => $this->equipo_id,
                'mision_id' => $this->mision_id,
                'puntos' => $this->puntos,
                'puntos_extras' => $this->puntosextras,
            ]);

            $equipo=Equipo::findOrFail($this->equipo_id);

		        $equipo->puntos+=$this->puntos;
		        $equipo->puntos_extras+=$this->puntosextras;

	        $equipo->update();

            $this->updateMode = false;
            $this->emit('alert', ['type' => 'info', 'message' => 'Puntos actualizada correctamente.']);
            $this->resetInputFields();
 
        }
    }

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

        	$punto = Puntos::find($id);

	        	$equipo=Equipo::findOrFail($punto->equipo_id);

			        $equipo->puntos-=$punto->puntos;
			        $equipo->puntos_extras-=$punto->puntos_extras;

		        $equipo->update();

                $comentarios=Comentariomisionequipo::where('punto_id',$punto->id)->get();

                foreach($comentarios as $comentario){
                    $comentario->delete();
                }

            $punto->delete();
            $this->emit('alert', ['type' => 'error', 'message' => '¡Puntos eliminados correctamente.!']);
        }
    }

    public function editcomentario($id){
        if($comentario = Comentariomisionequipo::find($id)){
            $this->comentario = $comentario->comentario;
            $this->comentario_id = $id;
        }
    }

    public function updatecomentario($id){

        $validatedDate = $this->validate([ 
            'comentario' => 'required',
        ]);

        if($this->comentario_id){
            $comentario = Comentariomisionequipo::find($this->comentario_id);

            $comentario->comentario = $this->comentario; 
            $comentario->usuario_id = Auth::user()->id; 
            $comentario->punto_id = $id; 

            $comentario->update();
        }else{
            $comentario = new Comentariomisionequipo;

            $comentario->comentario = $this->comentario; 
            $comentario->usuario_id = Auth::user()->id; 
            $comentario->punto_id = $id; 

            $comentario->save();
        }

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

    }
}

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