Files
Sistema-Educativo-Laravel/app/Livewire/GrupoAlumno.php
T

82 lines
2.1 KiB
PHP

<?php
namespace App\Livewire;
use App\Models\Alumno;
use Illuminate\Support\Facades\Auth;
use Livewire\Attributes\On;
use Livewire\Component;
class GrupoAlumno extends Component
{
public $grupo = null;
public $selectedAlumnos = [];
public $carrera;
#[On('create-grupo')]
public function creategrupo()
{
$this->dispatch('open-grupo-modal');
}
public function mount($grupo)
{
$this->grupo = $grupo;
}
public function guardar()
{
if (empty($this->selectedAlumnos)) {
session()->flash('error', 'Selecciona al menos un alumno');
return;
}
$this->grupo->alumnos()->syncWithoutDetaching($this->selectedAlumnos);
$this->reset('selectedAlumnos');
$this->dispatch('swal',
icon: 'success',
title: 'Anexado!',
text: 'Se agrego el alumno correctamente',
timer: 2000,
confirm: false,
closeModal: true,
reload: 2000
);
$this->dispatch('close-modal');
}
public function render()
{
$user = Auth::user();
$grupo = $this->grupo;
$plantelesUsuario = $user->plantelUsuarios->pluck('id');
$alumnos = Alumno::query()
->with(['usuario', 'statusAlumno', 'plan.carreraRel', 'nivelRel'])
// ✅ Cambia el 2 por el status correcto
->whereIn('status', [2, 3]) // inscrito o alumno
->where('nivel', $grupo->nivel)
->whereDoesntHave('grupos')
->whereHas('usuario', function ($q) use ($plantelesUsuario) {
$q->whereHas('plantelUsuarios', function ($q2) use ($plantelesUsuario) {
$q2->whereIn('plantel_user.plantel_id', $plantelesUsuario);
});
})
->orderByRaw("CASE WHEN plan_id = {$grupo->plan_id} THEN 0 ELSE 1 END")
->orderByRaw("CASE WHEN nivel = {$grupo->nivel} THEN 0 ELSE 1 END")
->get();
return view('livewire.grupo-alumno', [
'alumnos' => $alumnos,
]);
}
}