feat: Gestion des matières scolaires
Les établissements ont besoin de définir leur référentiel de matières pour pouvoir ensuite les associer aux enseignants et aux classes. Cette fonctionnalité permet aux administrateurs de créer, modifier et archiver les matières avec leurs propriétés (nom, code court, couleur). L'architecture suit le pattern DDD avec des Value Objects utilisant les property hooks PHP 8.5 pour garantir l'immutabilité et la validation. L'isolation multi-tenant est assurée par vérification dans les handlers.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Infrastructure\School;
|
||||
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
/**
|
||||
* Service temporaire pour résoudre le schoolId à partir du tenant.
|
||||
*
|
||||
* TODO: Ce service sera remplacé quand le module Schools sera implémenté.
|
||||
* Actuellement, il génère un UUID déterministe basé sur le tenantId,
|
||||
* ce qui suppose qu'un tenant = une école.
|
||||
*
|
||||
* Quand le module multi-écoles sera implémenté :
|
||||
* 1. Ce service lira le schoolId depuis le contexte utilisateur
|
||||
* 2. Les données existantes devront être migrées vers les vraies écoles
|
||||
*/
|
||||
final readonly class SchoolIdResolver
|
||||
{
|
||||
/**
|
||||
* Résout le schoolId pour le tenant courant.
|
||||
*
|
||||
* @param string $tenantId L'identifiant du tenant
|
||||
*
|
||||
* @return string L'identifiant de l'école (UUID)
|
||||
*/
|
||||
public function resolveForTenant(string $tenantId): string
|
||||
{
|
||||
// Génère un UUID déterministe basé sur le tenantId
|
||||
// Cela garantit que le même tenantId donne toujours le même schoolId
|
||||
return Uuid::uuid5(Uuid::NAMESPACE_DNS, "school-{$tenantId}")->toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user