feat(workflow) : fixtures - workflow Standard + statuts catégorisés + projets attachés

This commit is contained in:
2026-05-19 19:52:35 +02:00
parent a21914312a
commit 25f2fc4b16

View File

@@ -16,8 +16,10 @@ use App\Entity\TaskStatus;
use App\Entity\TaskTag; use App\Entity\TaskTag;
use App\Entity\TimeEntry; use App\Entity\TimeEntry;
use App\Entity\User; use App\Entity\User;
use App\Entity\Workflow;
use App\Entity\ZimbraConfiguration; use App\Entity\ZimbraConfiguration;
use App\Enum\RecurrenceType; use App\Enum\RecurrenceType;
use App\Enum\StatusCategory;
use DateTimeImmutable; use DateTimeImmutable;
use DateTimeZone; use DateTimeZone;
use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Bundle\FixturesBundle\Fixture;
@@ -86,57 +88,31 @@ class AppFixtures extends Fixture
$clientNova->setPostalCode('69007'); $clientNova->setPostalCode('69007');
$manager->persist($clientNova); $manager->persist($clientNova);
// Projets // Workflow par défaut
$projectSirh = new Project(); $standardWorkflow = new Workflow();
$projectSirh->setCode('SIRH'); $standardWorkflow->setName('Standard');
$projectSirh->setName('SIRH'); $standardWorkflow->setIsDefault(true);
$projectSirh->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac blandit turpis.'); $standardWorkflow->setPosition(0);
$projectSirh->setColor('#222783'); $manager->persist($standardWorkflow);
$projectSirh->setClient($clientLiot);
$manager->persist($projectSirh);
$projectCrm = new Project(); // Task Statuses (rattachés au workflow Standard)
$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)
$defaultStatuses = [ $defaultStatuses = [
['A faire', '#222783', 0], ['A faire', '#222783', 0, StatusCategory::Todo, false],
['En cours', '#4A90D9', 1], ['En cours', '#4A90D9', 1, StatusCategory::InProgress, false],
['Bloqué', '#C62828', 2], ['Bloqué', '#C62828', 2, StatusCategory::Blocked, false],
['En attente de validation', '#FF8F00', 3], ['En attente de validation', '#FF8F00', 3, StatusCategory::Review, false],
['Terminé', '#26A69A', 4], ['Terminé', '#26A69A', 4, StatusCategory::Done, true],
]; ];
$statusObjects = []; $statusObjects = [];
foreach ($defaultStatuses as [$label, $color, $position]) { foreach ($defaultStatuses as [$label, $color, $position, $category, $isFinal]) {
$status = new TaskStatus(); $status = new TaskStatus();
$status->setLabel($label); $status->setLabel($label);
$status->setColor($color); $status->setColor($color);
$status->setPosition($position); $status->setPosition($position);
if ('Terminé' === $label) { $status->setCategory($category);
$status->setIsFinal(true); $status->setIsFinal($isFinal);
} $standardWorkflow->addStatus($status);
$manager->persist($status); $manager->persist($status);
$statusObjects[$label] = $status; $statusObjects[$label] = $status;
} }
@@ -147,6 +123,43 @@ class AppFixtures extends Fixture
$statusReview = $statusObjects['En attente de validation']; $statusReview = $statusObjects['En attente de validation'];
$statusDone = $statusObjects['Terminé']; $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 // Task Efforts
$effortS = new TaskEffort(); $effortS = new TaskEffort();
$effortS->setLabel('S'); $effortS->setLabel('S');