From 0ba487cfa90bb972b527adee67a560ecb7117ebf Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 20:20:27 +0100 Subject: [PATCH] feat(fixtures) : add client users, client tickets, and ticket-task link Co-Authored-By: Claude Opus 4.6 (1M context) --- src/DataFixtures/AppFixtures.php | 89 ++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index a9b3a0e..a179dda 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\DataFixtures; use App\Entity\Client; +use App\Entity\ClientTicket; use App\Entity\Project; use App\Entity\Task; use App\Entity\TaskEffort; @@ -543,6 +544,94 @@ 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); + $manager->flush(); } }