File: /var/www/html/xfacil.desafio.com.py/app/Http/Livewire/Puntajes.php
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\Puntos;
use App\Models\Matricula;
use App\Models\Mision;
use App\Models\Equipo;
use Livewire\WithPagination;
use Carbon\Carbon;
use Auth;
use DB;
class Puntajes extends Component{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $fecha_inicio,$fecha_fin;
public function mount(){
$this->fecha_inicio=Carbon::now()->format('Y')."-01-01";
$this->fecha_fin=Carbon::now()->format('Y-m-d');
}
public function render(){
$total=0;
$totallogrados=0;
$matricula=Matricula::where('usuario_id',Auth::user()->id)->first();
$totalpuntos=DB::table('mision_matriculas as mm')
->join('misions as m','mm.mision_id','m.id')
->where('m.estado',1)
->where('mm.equipo_id',$matricula->equipo_id)->sum('m.puntos');
$totalpuntosextras=DB::table('mision_matriculas as mm')
->join('misions as m','mm.mision_id','m.id')
->where('m.estado',1)
->where('mm.equipo_id',$matricula->equipo_id)->sum('m.puntos_extras');
$total=$totalpuntos+$totalpuntosextras;
$totalpuntoslogrados=DB::table('puntos as p')
->join('misions as m','p.mision_id','m.id')
->where('m.estado',1)
->where('p.equipo_id',$matricula->equipo_id)->sum('p.puntos');
$totalpuntosextraslogrados=DB::table('puntos as p')
->join('misions as m','p.mision_id','m.id')
->where('m.estado',1)
->where('p.equipo_id',$matricula->equipo_id)->sum('p.puntos_extras');
$totallogrados=$totalpuntoslogrados+$totalpuntosextraslogrados;
if($this->fecha_inicio && $this->fecha_fin){
$misiones=DB::table('mision_matriculas as mm')
->join('misions as m','mm.mision_id','m.id')
->select('m.*')
->whereDate('m.fecha_limite','>=',Carbon::parse($this->fecha_inicio)->toDateString())
->whereDate('m.fecha_limite','<=',Carbon::parse($this->fecha_fin)->toDateString())
->where('m.estado',1)
->where('mm.equipo_id',$matricula->equipo_id)->orderBy('m.id','desc')->paginate(10);
}else{
$misiones=DB::table('mision_matriculas as mm')
->join('misions as m','mm.mision_id','m.id')
->select('m.*')
->where('m.estado',1)
->where('mm.equipo_id',$matricula->equipo_id)->orderBy('m.id','desc')->paginate(10);
}
return view('livewire.puntajes',[
'misiones'=>$misiones,
'totalpuntos'=>$total,
'totalpuntoslogrados'=>$totallogrados
]);
}
}