feat(absences) : avancement module absences + suppression du portail client
Deux lots regroupés sur la branche feat/absence-management. Suppression complète du portail client : - retire ROLE_CLIENT (security.yaml) ; User::getRoles() ajoute toujours ROLE_USER - supprime l'entité ClientTicket (+ repo, states, relations), User.client et User.allowedProjects, NotificationService, ProjectAllowedExtension, le bloc ROLE_CLIENT de MailAccessChecker - front : pages /portal, layout portal, composants client-ticket/, AdminClientTicketTab, services/dto/i18n/docs associés - fixtures : retire les users client-liot / client-acme - migration Version20260522110000 (drop client_ticket, user_allowed_projects, colonnes liées ; task_document.task_id -> NOT NULL) - tests : retire les cas obsolètes testant le blocage des clients sur le mail Module gestion des absences (WIP) : - entités / migrations (Version20260521160000, Version20260522090000) - pages absences.vue / team-absences.vue, composants frontend/components/absence/ - services front, AccrueLeaveCommand, PublicHolidayController Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,6 @@ use App\Entity\AbsenceBalance;
|
||||
use App\Entity\AbsencePolicy;
|
||||
use App\Entity\AbsenceRequest;
|
||||
use App\Entity\Client;
|
||||
use App\Entity\ClientTicket;
|
||||
use App\Entity\MailConfiguration;
|
||||
use App\Entity\Project;
|
||||
use App\Entity\Task;
|
||||
@@ -593,94 +592,6 @@ class AppFixtures extends Fixture
|
||||
$manager->persist($entry);
|
||||
}
|
||||
|
||||
// =============================================
|
||||
// Client Users
|
||||
// =============================================
|
||||
$clientUserLiot = new User();
|
||||
$clientUserLiot->setUsername('client-liot');
|
||||
$clientUserLiot->setRoles(['ROLE_CLIENT']);
|
||||
$clientUserLiot->setPassword($this->passwordHasher->hashPassword($clientUserLiot, 'client'));
|
||||
$clientUserLiot->setClient($clientLiot);
|
||||
$clientUserLiot->addAllowedProject($projectSirh);
|
||||
$manager->persist($clientUserLiot);
|
||||
|
||||
$clientUserAcme = new User();
|
||||
$clientUserAcme->setUsername('client-acme');
|
||||
$clientUserAcme->setRoles(['ROLE_CLIENT']);
|
||||
$clientUserAcme->setPassword($this->passwordHasher->hashPassword($clientUserAcme, 'client'));
|
||||
$clientUserAcme->setClient($clientAcme);
|
||||
$clientUserAcme->addAllowedProject($projectCrm);
|
||||
$manager->persist($clientUserAcme);
|
||||
|
||||
// =============================================
|
||||
// Client Tickets
|
||||
// =============================================
|
||||
$ticket1 = new ClientTicket();
|
||||
$ticket1->setNumber(1);
|
||||
$ticket1->setType('bug');
|
||||
$ticket1->setTitle('Erreur 500 sur la page de login');
|
||||
$ticket1->setDescription('Quand je clique sur "Se connecter" avec un mot de passe vide, j\'obtiens une page blanche avec une erreur 500.');
|
||||
$ticket1->setUrl('https://sirh.liot.fr/login');
|
||||
$ticket1->setStatus('new');
|
||||
$ticket1->setProject($projectSirh);
|
||||
$ticket1->setSubmittedBy($clientUserLiot);
|
||||
$ticket1->setCreatedAt(new DateTimeImmutable('-3 days'));
|
||||
$ticket1->setUpdatedAt(new DateTimeImmutable('-3 days'));
|
||||
$manager->persist($ticket1);
|
||||
|
||||
$ticket2 = new ClientTicket();
|
||||
$ticket2->setNumber(2);
|
||||
$ticket2->setType('improvement');
|
||||
$ticket2->setTitle('Ajouter un export PDF des fiches employés');
|
||||
$ticket2->setDescription('Il serait utile de pouvoir exporter les fiches employés au format PDF pour les archiver.');
|
||||
$ticket2->setStatus('in_progress');
|
||||
$ticket2->setProject($projectSirh);
|
||||
$ticket2->setSubmittedBy($clientUserLiot);
|
||||
$ticket2->setCreatedAt(new DateTimeImmutable('-7 days'));
|
||||
$ticket2->setUpdatedAt(new DateTimeImmutable('-2 days'));
|
||||
$manager->persist($ticket2);
|
||||
|
||||
$ticket3 = new ClientTicket();
|
||||
$ticket3->setNumber(3);
|
||||
$ticket3->setType('other');
|
||||
$ticket3->setTitle('Demande de formation sur le module congés');
|
||||
$ticket3->setDescription('Notre équipe RH souhaiterait une formation sur le nouveau module de gestion des congés.');
|
||||
$ticket3->setStatus('done');
|
||||
$ticket3->setStatusComment('Formation planifiée le 20/03. Ticket clos.');
|
||||
$ticket3->setProject($projectSirh);
|
||||
$ticket3->setSubmittedBy($clientUserLiot);
|
||||
$ticket3->setCreatedAt(new DateTimeImmutable('-14 days'));
|
||||
$ticket3->setUpdatedAt(new DateTimeImmutable('-5 days'));
|
||||
$manager->persist($ticket3);
|
||||
|
||||
$ticket4 = new ClientTicket();
|
||||
$ticket4->setNumber(1);
|
||||
$ticket4->setType('bug');
|
||||
$ticket4->setTitle('Doublons dans la liste des contacts');
|
||||
$ticket4->setDescription('Certains contacts apparaissent en double après l\'import CSV. Le problème semble lié aux accents dans les noms.');
|
||||
$ticket4->setStatus('new');
|
||||
$ticket4->setProject($projectCrm);
|
||||
$ticket4->setSubmittedBy($clientUserAcme);
|
||||
$ticket4->setCreatedAt(new DateTimeImmutable('-1 day'));
|
||||
$ticket4->setUpdatedAt(new DateTimeImmutable('-1 day'));
|
||||
$manager->persist($ticket4);
|
||||
|
||||
$ticket5 = new ClientTicket();
|
||||
$ticket5->setNumber(2);
|
||||
$ticket5->setType('improvement');
|
||||
$ticket5->setTitle('Filtre par date sur le pipeline de vente');
|
||||
$ticket5->setDescription('Pouvoir filtrer le pipeline de vente par période (mois, trimestre, année).');
|
||||
$ticket5->setStatus('rejected');
|
||||
$ticket5->setStatusComment('Cette fonctionnalité est déjà prévue dans la prochaine version. Pas besoin de ticket spécifique.');
|
||||
$ticket5->setProject($projectCrm);
|
||||
$ticket5->setSubmittedBy($clientUserAcme);
|
||||
$ticket5->setCreatedAt(new DateTimeImmutable('-10 days'));
|
||||
$ticket5->setUpdatedAt(new DateTimeImmutable('-8 days'));
|
||||
$manager->persist($ticket5);
|
||||
|
||||
// Link a task to a client ticket
|
||||
$task3->setClientTicket($ticket1);
|
||||
|
||||
// =============================================
|
||||
// Zimbra Configuration
|
||||
// =============================================
|
||||
@@ -777,18 +688,19 @@ class AppFixtures extends Fixture
|
||||
// Paid-leave balances for the current reference period (June 1st → May 31st)
|
||||
$cpPeriod = '2025-2026';
|
||||
$balanceData = [
|
||||
// [user, acquired, taken, pending]
|
||||
[$admin, 22.5, 5.0, 0.0],
|
||||
[$userAlice, 18.0, 2.0, 5.0],
|
||||
[$userBob, 14.0, 0.0, 0.0],
|
||||
// [user, acquired (N-1), acquiring (N, en cours), taken, pending]
|
||||
[$admin, 10.0, 22.5, 5.0, 0.0],
|
||||
[$userAlice, 8.0, 18.0, 2.0, 5.0],
|
||||
[$userBob, 0.0, 14.0, 0.0, 0.0],
|
||||
];
|
||||
|
||||
foreach ($balanceData as [$bUser, $acquired, $taken, $pending]) {
|
||||
foreach ($balanceData as [$bUser, $acquired, $acquiring, $taken, $pending]) {
|
||||
$balance = new AbsenceBalance();
|
||||
$balance->setUser($bUser);
|
||||
$balance->setType(AbsenceType::PaidLeave);
|
||||
$balance->setPeriod($cpPeriod);
|
||||
$balance->setAcquired($acquired);
|
||||
$balance->setAcquiring($acquiring);
|
||||
$balance->setTaken($taken);
|
||||
$balance->setPending($pending);
|
||||
$manager->persist($balance);
|
||||
|
||||
Reference in New Issue
Block a user