From 25f2fc4b16ee3a037c0e7b22f1ae209284cd5ad7 Mon Sep 17 00:00:00 2001 From: matthieu Date: Tue, 19 May 2026 19:52:35 +0200 Subject: [PATCH] =?UTF-8?q?feat(workflow)=20:=20fixtures=20-=20workflow=20?= =?UTF-8?q?Standard=20+=20statuts=20cat=C3=A9goris=C3=A9s=20+=20projets=20?= =?UTF-8?q?attach=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DataFixtures/AppFixtures.php | 97 ++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 42 deletions(-) diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index 2236b02..bf8e9a1 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -16,8 +16,10 @@ use App\Entity\TaskStatus; use App\Entity\TaskTag; use App\Entity\TimeEntry; use App\Entity\User; +use App\Entity\Workflow; use App\Entity\ZimbraConfiguration; use App\Enum\RecurrenceType; +use App\Enum\StatusCategory; use DateTimeImmutable; use DateTimeZone; use Doctrine\Bundle\FixturesBundle\Fixture; @@ -86,57 +88,31 @@ class AppFixtures extends Fixture $clientNova->setPostalCode('69007'); $manager->persist($clientNova); - // Projets - $projectSirh = new Project(); - $projectSirh->setCode('SIRH'); - $projectSirh->setName('SIRH'); - $projectSirh->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac blandit turpis.'); - $projectSirh->setColor('#222783'); - $projectSirh->setClient($clientLiot); - $manager->persist($projectSirh); + // Workflow par défaut + $standardWorkflow = new Workflow(); + $standardWorkflow->setName('Standard'); + $standardWorkflow->setIsDefault(true); + $standardWorkflow->setPosition(0); + $manager->persist($standardWorkflow); - $projectCrm = new Project(); - $projectCrm->setCode('CRM'); - $projectCrm->setName('CRM'); - $projectCrm->setDescription('Gestion de la relation client et suivi commercial.'); - $projectCrm->setColor('#E91E63'); - $projectCrm->setClient($clientAcme); - $manager->persist($projectCrm); - - $projectErp = new Project(); - $projectErp->setCode('ERP'); - $projectErp->setName('ERP'); - $projectErp->setDescription('Planification des ressources et gestion des stocks.'); - $projectErp->setColor('#4A90D9'); - $projectErp->setClient($clientNova); - $manager->persist($projectErp); - - $projectInterne = new Project(); - $projectInterne->setCode('SITE'); - $projectInterne->setName('Site vitrine'); - $projectInterne->setDescription('Refonte du site web corporate.'); - $projectInterne->setColor('#26A69A'); - $projectInterne->setClient(null); - $manager->persist($projectInterne); - - // Task Statuses (global) + // Task Statuses (rattachés au workflow Standard) $defaultStatuses = [ - ['A faire', '#222783', 0], - ['En cours', '#4A90D9', 1], - ['Bloqué', '#C62828', 2], - ['En attente de validation', '#FF8F00', 3], - ['Terminé', '#26A69A', 4], + ['A faire', '#222783', 0, StatusCategory::Todo, false], + ['En cours', '#4A90D9', 1, StatusCategory::InProgress, false], + ['Bloqué', '#C62828', 2, StatusCategory::Blocked, false], + ['En attente de validation', '#FF8F00', 3, StatusCategory::Review, false], + ['Terminé', '#26A69A', 4, StatusCategory::Done, true], ]; $statusObjects = []; - foreach ($defaultStatuses as [$label, $color, $position]) { + foreach ($defaultStatuses as [$label, $color, $position, $category, $isFinal]) { $status = new TaskStatus(); $status->setLabel($label); $status->setColor($color); $status->setPosition($position); - if ('Terminé' === $label) { - $status->setIsFinal(true); - } + $status->setCategory($category); + $status->setIsFinal($isFinal); + $standardWorkflow->addStatus($status); $manager->persist($status); $statusObjects[$label] = $status; } @@ -147,6 +123,43 @@ class AppFixtures extends Fixture $statusReview = $statusObjects['En attente de validation']; $statusDone = $statusObjects['Terminé']; + // Projets + $projectSirh = new Project(); + $projectSirh->setCode('SIRH'); + $projectSirh->setName('SIRH'); + $projectSirh->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac blandit turpis.'); + $projectSirh->setColor('#222783'); + $projectSirh->setClient($clientLiot); + $projectSirh->setWorkflow($standardWorkflow); + $manager->persist($projectSirh); + + $projectCrm = new Project(); + $projectCrm->setCode('CRM'); + $projectCrm->setName('CRM'); + $projectCrm->setDescription('Gestion de la relation client et suivi commercial.'); + $projectCrm->setColor('#E91E63'); + $projectCrm->setClient($clientAcme); + $projectCrm->setWorkflow($standardWorkflow); + $manager->persist($projectCrm); + + $projectErp = new Project(); + $projectErp->setCode('ERP'); + $projectErp->setName('ERP'); + $projectErp->setDescription('Planification des ressources et gestion des stocks.'); + $projectErp->setColor('#4A90D9'); + $projectErp->setClient($clientNova); + $projectErp->setWorkflow($standardWorkflow); + $manager->persist($projectErp); + + $projectInterne = new Project(); + $projectInterne->setCode('SITE'); + $projectInterne->setName('Site vitrine'); + $projectInterne->setDescription('Refonte du site web corporate.'); + $projectInterne->setColor('#26A69A'); + $projectInterne->setClient(null); + $projectInterne->setWorkflow($standardWorkflow); + $manager->persist($projectInterne); + // Task Efforts $effortS = new TaskEffort(); $effortS->setLabel('S');