L'admin doit pouvoir voir en un coup d'œil quelles matières sont actives (notes saisies) pour décider lesquelles peuvent être supprimées sans perte de données. Auparavant, la suppression d'une matière était silencieuse : elle cascade-deletait évaluations et notes sans avertir. La liste des matières affiche désormais les compteurs d'enseignants, classes, évaluations et notes. La suppression déclenche une confirmation explicite quand la matière contient des notes, avec récapitulatif des volumes impactés, pour rendre l'action irréversible consciente. Côté tests, un endpoint de seeding HTTP remplace les appels docker exec dans les E2E (gain ~30-60s → 5-10s par test), et un trait partagé factorise le SQL de seeding entre les deux suites fonctionnelles.
23 lines
454 B
PHP
23 lines
454 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Administration\Application\Port;
|
|
|
|
/**
|
|
* Statistiques d'impact d'une suppression de matière : évaluations et notes liées.
|
|
*/
|
|
final readonly class SubjectGradeStats
|
|
{
|
|
public function __construct(
|
|
public int $evaluationCount,
|
|
public int $gradeCount,
|
|
) {
|
|
}
|
|
|
|
public function hasGrades(): bool
|
|
{
|
|
return $this->gradeCount > 0 || $this->evaluationCount > 0;
|
|
}
|
|
}
|