ajoute les devoirs maison (chantier vrai cockpit, étape 3) : rendu en texte libre, suivi des rendus, notation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
bd74eaf20f
commit
33531de44d
17 changed files with 582 additions and 2 deletions
51
portail/app/Http/Controllers/DevoirEleveController.php
Normal file
51
portail/app/Http/Controllers/DevoirEleveController.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Devoir;
|
||||
use App\Models\Eleve;
|
||||
use App\Models\RenduDevoir;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\View\View;
|
||||
|
||||
/**
|
||||
* Côté élève des devoirs maison (chantier « vrai cockpit », étape 3) :
|
||||
* rendu en texte libre, une seule fois par devoir, avant l'échéance.
|
||||
*/
|
||||
class DevoirEleveController extends Controller
|
||||
{
|
||||
public function show(Devoir $devoir): View
|
||||
{
|
||||
$eleve = $this->verifierAppartenance($devoir);
|
||||
|
||||
return view('devoirs.eleve', [
|
||||
'devoir' => $devoir,
|
||||
'rendu' => RenduDevoir::where('devoir_id', $devoir->id)->where('eleve_id', $eleve->id)->first(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function rendre(Request $request, Devoir $devoir): RedirectResponse
|
||||
{
|
||||
$eleve = $this->verifierAppartenance($devoir);
|
||||
abort_if($devoir->echeanceDepassee(), 409, 'L’échéance est dépassée.');
|
||||
|
||||
$donnees = $request->validate(['reponse' => ['required', 'string', 'max:10000']]);
|
||||
|
||||
RenduDevoir::updateOrCreate(
|
||||
['devoir_id' => $devoir->id, 'eleve_id' => $eleve->id],
|
||||
['reponse' => $donnees['reponse'], 'rendu_a' => now()]
|
||||
);
|
||||
|
||||
return redirect()->route('devoirs.eleve.show', $devoir)->with('rendu_envoye', true);
|
||||
}
|
||||
|
||||
private function verifierAppartenance(Devoir $devoir): Eleve
|
||||
{
|
||||
$eleve = Auth::guard('eleve')->user();
|
||||
abort_if($devoir->classe_id !== $eleve->classe_id, 403);
|
||||
|
||||
return $eleve;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue