From 3ef2c11b2e8e80ce686b81da78df524e21064987 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Thu, 13 Nov 2025 15:19:55 +0100 Subject: [PATCH] feat: rename project statuses --- .../Project/ProjectApiResource.php | 2 +- src/Benzina/ProjectsPump.php | 14 ++--- src/Entity/Project/Project.php | 2 +- src/Entity/Project/ProjectStatus.php | 55 ++++++++++++++----- src/Factory/Project/ProjectFactory.php | 2 +- tests/Entity/ProjectApi/GetAllTest.php | 10 ++-- tests/Entity/ProjectApi/GetOneTest.php | 2 +- tests/Entity/ProjectCalendarTest.php | 2 +- 8 files changed, 57 insertions(+), 32 deletions(-) diff --git a/src/ApiResource/Project/ProjectApiResource.php b/src/ApiResource/Project/ProjectApiResource.php index 44eb8d1..6851448 100644 --- a/src/ApiResource/Project/ProjectApiResource.php +++ b/src/ApiResource/Project/ProjectApiResource.php @@ -148,7 +148,7 @@ class ProjectApiResource */ #[API\ApiFilter(filterClass: SearchFilter::class, strategy: 'exact')] #[API\ApiProperty(securityPostDenormalize: 'is_granted("PROJECT_EDIT", previous_object)')] - public ProjectStatus $status = ProjectStatus::InEditing; + public ProjectStatus $status = ProjectStatus::InDraft; /** * List of the ProjectRewards this Project offers. diff --git a/src/Benzina/ProjectsPump.php b/src/Benzina/ProjectsPump.php index ae70737..6f5e005 100644 --- a/src/Benzina/ProjectsPump.php +++ b/src/Benzina/ProjectsPump.php @@ -50,12 +50,12 @@ class ProjectsPump implements PumpInterface } $status = $this->getProjectStatus($record); - if (\in_array($status, [ProjectStatus::Rejected])) { + if (\in_array($status, [ProjectStatus::CampaignReviewRejected])) { return; } $created = new \DateTime($record['created']); - if (\in_array($status, [ProjectStatus::InDraft, ProjectStatus::InEditing]) && $created < new \DateTime('2024-01-01')) { + if (\in_array($status, [ProjectStatus::InDraft, ProjectStatus::InDraft]) && $created < new \DateTime('2024-01-01')) { return; } @@ -167,19 +167,19 @@ class ProjectsPump implements PumpInterface { switch ($record['status']) { case 1: - return ProjectStatus::InEditing; + return ProjectStatus::InDraft; case 2: - return ProjectStatus::InReview; + return ProjectStatus::InCampaignReview; case 3: return ProjectStatus::InCampaign; case 6: - return ProjectStatus::Unfunded; + return ProjectStatus::CampaignFailed; case 4: case 5: - return ProjectStatus::Funded; + return ProjectStatus::FundingPaid; case 0: default: - return ProjectStatus::Rejected; + return ProjectStatus::CampaignReviewRejected; } } diff --git a/src/Entity/Project/Project.php b/src/Entity/Project/Project.php index 877e8f8..5604f4d 100644 --- a/src/Entity/Project/Project.php +++ b/src/Entity/Project/Project.php @@ -109,7 +109,7 @@ class Project implements UserOwnedInterface, AccountingOwnerInterface, Localized * Projects have a start and an end, and in the meantime they go through different phases represented under this status. */ #[ORM\Column(type: 'string', enumType: ProjectStatus::class)] - private ProjectStatus $status = ProjectStatus::InEditing; + private ProjectStatus $status = ProjectStatus::InDraft; /** * @var Collection diff --git a/src/Entity/Project/ProjectStatus.php b/src/Entity/Project/ProjectStatus.php index ba151fe..625a40a 100644 --- a/src/Entity/Project/ProjectStatus.php +++ b/src/Entity/Project/ProjectStatus.php @@ -13,47 +13,72 @@ enum ProjectStatus: string case InDraft = 'in_draft'; /** - * Owner finished editing and Project is ready for review. + * Owner finished editing and Project is ready for campaign review. */ - case ToReview = 'to_review'; + case ToCampaignReview = 'to_campaign_review'; /** - * An admin is reviewing the Project. + * A reviewer is reviewing the Project for campaign. */ - case InReview = 'in_review'; + case InCampaignReview = 'in_campaign_review'; /** - * Admin asked for changes and the Project is under edition by it's owner. + * Owner requested to do changes by the campaign reviewer. */ - case InEditing = 'in_editing'; + case InCampaignReviewRequestChange = 'in_campaign_review.request_change'; /** - * An admin reviewed it and rejected it. Final. + * Project is KO for campaign by the reviewer, final. */ - case Rejected = 'rejected'; + case CampaignReviewRejected = 'campaign_review.rejected'; /** - * An admin reviewed it and deemed worthy to campaign. + * Project is OK for campaign by the reviewer, can move forward. */ case ToCampaign = 'to_campaign'; /** - * Project was reviewed and is in campaign for funding. + * Project is in live campaign and raising funds. */ case InCampaign = 'in_campaign'; /** - * Project finished campaigning but didn't meet funding goals. Final. + * Project failed to raise enough funds, final. */ - case Unfunded = 'unfunded'; + case CampaignFailed = 'campaign.failed'; /** - * Project successfully finished campaigning and owner can receive funds. + * Project raised enough funds, can move forward. + */ + case ToFundingReview = 'to_funding_review'; + + /** + * Project is under financial review. + */ + case InFundingReview = 'in_funding_review'; + + /** + * Owner requested to do changes by the financial reviewer. + */ + case InFundingReviewRequestChange = 'in_funding_review.request_change'; + + /** + * Project is KO for funding by the reviewer, final. + */ + case FundinReviewRejected = 'funding_review.rejected'; + + /** + * Project is OK for funding by the reviewer, can move forward. + */ + case ToFunding = 'to_funding'; + + /** + * Project is being funded. */ case InFunding = 'in_funding'; /** - * Project owner received all raised funds. Final. + * Project's funds were paid. Final. */ - case Funded = 'funded'; + case FundingPaid = 'funding.paid'; } diff --git a/src/Factory/Project/ProjectFactory.php b/src/Factory/Project/ProjectFactory.php index 4e38947..56262aa 100644 --- a/src/Factory/Project/ProjectFactory.php +++ b/src/Factory/Project/ProjectFactory.php @@ -44,7 +44,7 @@ final class ProjectFactory extends PersistentProxyObjectFactory 'description' => '', 'territory' => new Territory('ES'), 'owner' => new User(), - 'status' => ProjectStatus::InEditing, + 'status' => ProjectStatus::InDraft, 'subtitle' => 'Subtitle', 'title' => 'Title', ]; diff --git a/tests/Entity/ProjectApi/GetAllTest.php b/tests/Entity/ProjectApi/GetAllTest.php index fbabf78..ba5a017 100644 --- a/tests/Entity/ProjectApi/GetAllTest.php +++ b/tests/Entity/ProjectApi/GetAllTest.php @@ -120,7 +120,7 @@ class GetAllTest extends ProjectTestCase public function testGetCollection(): void { - $status = ProjectStatus::InEditing; + $status = ProjectStatus::InDraft; $attributes = [ 'title' => 'Test Project', 'status' => $status, @@ -247,18 +247,18 @@ class GetAllTest extends ProjectTestCase public function testGetAllByStatusInEditing() { - $this->testGetAllByParam('status', ProjectStatus::InEditing, ProjectStatus::InCampaign); + $this->testGetAllByParam('status', ProjectStatus::InDraft, ProjectStatus::InCampaign); } public function testGetAllByStatusFulfilled() { - $this->testGetAllByParam('status', ProjectStatus::Funded, ProjectStatus::InCampaign); + $this->testGetAllByParam('status', ProjectStatus::FundingPaid, ProjectStatus::InCampaign); } public function testGetAllByStatusList() { - $searchValues = [ProjectStatus::InCampaign, ProjectStatus::Funded]; - $this->testGetAllByParamList('status', $searchValues, ProjectStatus::Rejected); + $searchValues = [ProjectStatus::InCampaign, ProjectStatus::FundingPaid]; + $this->testGetAllByParamList('status', $searchValues, ProjectStatus::CampaignReviewRejected); } public function testGetAllByPartialDescription() diff --git a/tests/Entity/ProjectApi/GetOneTest.php b/tests/Entity/ProjectApi/GetOneTest.php index 2e6bdfb..08a69eb 100644 --- a/tests/Entity/ProjectApi/GetOneTest.php +++ b/tests/Entity/ProjectApi/GetOneTest.php @@ -72,7 +72,7 @@ class GetOneTest extends ProjectTestCase public function testGetOneFilteredByStatusFunded(): void { - $this->testGetOneFilteredByStatus(ProjectStatus::Funded); + $this->testGetOneFilteredByStatus(ProjectStatus::FundingPaid); } public function testGetOneUnauthorized(): void diff --git a/tests/Entity/ProjectCalendarTest.php b/tests/Entity/ProjectCalendarTest.php index eb879b1..1bbe5a5 100644 --- a/tests/Entity/ProjectCalendarTest.php +++ b/tests/Entity/ProjectCalendarTest.php @@ -47,7 +47,7 @@ class ProjectCalendarTest extends ApiTestCase $project->setDescription('Test Project Description'); $project->setTerritory(new Territory('ES')); $project->setOwner($this->owner); - $project->setStatus(ProjectStatus::InReview); + $project->setStatus(ProjectStatus::InCampaignReview); return $project; }