From f6c332f38d10d9fcc2c51f91dfb126cc119ae821 Mon Sep 17 00:00:00 2001 From: Tom Udding Date: Fri, 21 Jun 2024 19:13:10 +0200 Subject: [PATCH] Change how renewal works for existing external members Co-Authored-By: Rink --- module/Checker/src/Mapper/Member.php | 4 ++-- module/Checker/src/Service/Checker.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/module/Checker/src/Mapper/Member.php b/module/Checker/src/Mapper/Member.php index aad391540..3a73863d4 100644 --- a/module/Checker/src/Mapper/Member.php +++ b/module/Checker/src/Mapper/Member.php @@ -41,7 +41,7 @@ public function getMembersToCheck(int $limit): array $qb->select('m') ->addSelect('CASE WHEN m.lastCheckedOn IS NULL THEN 0 ELSE 1 END AS HIDDEN fix_ordering') ->from('Database\Model\Member', 'm') - ->where('m.type = \'ordinary\'') + ->where('m.type = \'ordinary\' OR m.type = \'external\'') ->andWhere('m.tueUsername IS NOT NULL') ->andWhere('m.membershipEndsOn IS NULL') ->andWhere('m.lastCheckedOn IS NULL OR m.lastCheckedOn < CURRENT_DATE()') @@ -86,7 +86,7 @@ public function getExpiringMembershipsWithNormalTypes(): array $qb->select('m') ->from('Database\Model\Member', 'm') - ->where('m.type = \'ordinary\'') + ->where('m.type = \'ordinary\' OR m.type = \'external\'') ->andWhere('m.membershipEndsOn IS NULL') ->andWhere('m.expiration <= :endOfCurrentAssociationYear'); diff --git a/module/Checker/src/Service/Checker.php b/module/Checker/src/Service/Checker.php index 43f750968..9c36218cf 100644 --- a/module/Checker/src/Service/Checker.php +++ b/module/Checker/src/Service/Checker.php @@ -430,10 +430,15 @@ public function checkAtTUe(): void echo '--> Member is still studying but not at the department of MCS' . PHP_EOL; // The member does not study at WIN anymore, so we set the expiration date for the membership $member->setChangedOn(new DateTime()); + $member->setIsStudying(true); $member->setMembershipEndsOn($exp); } else { echo '--> Member is still studying at the department of MCS' . PHP_EOL; - // The user is still studying at MCS, so don't change anything + // The member is still studying at MCS, so their membership does not end. If the member is currently + // external they will be converted to ordinary on July 1. + $member->setChangedOn(new DateTime()); + $member->setIsStudying(true); + $member->setMembershipEndsOn(null); } // If we made it here, we have successfully checked the member @@ -480,7 +485,10 @@ public function checkProperMembershipType(): void echo 'Not an active member' . PHP_EOL; // We only have to change the membership type for external or graduates depending on whether the // member is still studying. - if ($member->getIsStudying()) { + if ( + $member->getIsStudying() + && $member->getLastCheckedOn() >= (new DateTime())->sub(new DateInterval('P1Y')) + ) { echo 'But is studying, so becoming EXTERNAL. Extending membership to ' . $exp->format('Y-m-d') . PHP_EOL; $member->setType(MembershipTypes::External); @@ -491,6 +499,7 @@ public function checkProperMembershipType(): void } else { echo 'Nor studying, so becoming GRADUATE. Not extending membership' . PHP_EOL; $member->setType(MembershipTypes::Graduate); + $member->setIsStudying(false); } } @@ -527,6 +536,7 @@ public function checkNormalExpiration(): void echo 'Expired, thus extending to ' . $exp->format('Y-m-d') . PHP_EOL; $member->setChangedOn(new DateTime()); + $member->setType(MembershipTypes::Ordinary); $member->setExpiration($exp); $this->memberService->getMemberMapper()->persist($member);