From 039741a13ec28b34608e8c7db4bb4c2c31e27f56 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Wed, 8 May 2024 13:17:55 +0200 Subject: [PATCH 1/2] Update ProjectsPump to migrate project status from v3 --- src/Library/Benzina/Pump/ProjectsPump.php | 40 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/Library/Benzina/Pump/ProjectsPump.php b/src/Library/Benzina/Pump/ProjectsPump.php index 39049da..e052ae3 100644 --- a/src/Library/Benzina/Pump/ProjectsPump.php +++ b/src/Library/Benzina/Pump/ProjectsPump.php @@ -4,6 +4,7 @@ namespace App\Library\Benzina\Pump; use App\Entity\Accounting; use App\Entity\Project; +use App\Entity\ProjectStatus; use App\Entity\User; use App\Repository\UserRepository; use Doctrine\ORM\EntityManagerInterface; @@ -109,22 +110,23 @@ class ProjectsPump implements PumpInterface { $owners = $this->getOwners($data); - foreach ($data as $key => $data) { - if (!\array_key_exists($data['owner'], $owners)) { + foreach ($data as $key => $record) { + if (!\array_key_exists($record['owner'], $owners)) { continue; } - if (empty($data['name'])) { + if (empty($record['name'])) { continue; } $project = new Project; - $project->setTitle($data['name']); - $project->setOwner($owners[$data['owner']]); + $project->setTitle($record['name']); + $project->setOwner($owners[$record['owner']]); + $project->setStatus($this->getProjectStatus($record['status'])); $project->setMigrated(true); - $project->setMigratedReference($data['id']); + $project->setMigratedReference($record['id']); - $accounting = $this->getAccounting($data); + $accounting = $this->getAccounting($record); $accounting->setProject($project); $this->entityManager->persist($project); @@ -152,10 +154,30 @@ class ProjectsPump implements PumpInterface return $owners; } - private function getAccounting(array $data): Accounting + private function getProjectStatus(int $status): ProjectStatus + { + switch ($status) { + case 0: + return ProjectStatus::Rejected; + case 1: + return ProjectStatus::Editing; + case 2: + return ProjectStatus::Reviewing; + case 3: + return ProjectStatus::InCampaign; + case 4: + return ProjectStatus::Funded; + case 5: + return ProjectStatus::Fulfilled; + case 6: + return ProjectStatus::Unfunded; + } + } + + private function getAccounting(array $record): Accounting { $accounting = new Accounting; - $accounting->setCurrency($data['currency']); + $accounting->setCurrency($record['currency']); return $accounting; } From 3d3e012c3b067fb4a480bbe2dd7d91d6be086a66 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Wed, 8 May 2024 13:20:33 +0200 Subject: [PATCH 2/2] Make projects pump a progressive pump --- src/Library/Benzina/Pump/ProjectsPump.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Library/Benzina/Pump/ProjectsPump.php b/src/Library/Benzina/Pump/ProjectsPump.php index e052ae3..f0c54b0 100644 --- a/src/Library/Benzina/Pump/ProjectsPump.php +++ b/src/Library/Benzina/Pump/ProjectsPump.php @@ -12,6 +12,7 @@ use Doctrine\ORM\EntityManagerInterface; class ProjectsPump implements PumpInterface { use ArrayPumpTrait; + use ProgressivePumpTrait; private const PROJECT_KEYS = [ 'id', @@ -108,9 +109,14 @@ class ProjectsPump implements PumpInterface public function process(mixed $data): void { + $pumped = $this->getPumped(Project::class, $data, ['migratedReference' => 'id']); $owners = $this->getOwners($data); foreach ($data as $key => $record) { + if ($this->isPumped($record, $pumped)) { + continue; + } + if (!\array_key_exists($record['owner'], $owners)) { continue; }