From 0a72c05ac6d0f2498bc030f6d3c7aef886027c83 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Thu, 12 Dec 2024 04:01:18 +0800 Subject: [PATCH] New voucher CIEFPC30 setup with new business logic --- .../ControllersLogic/CreateVoucherLogic.php | 5 ++- .../CreateVoucherObject.php | 15 ++++++++- .../Standards/Rules/CanCreateVoucher.php | 23 +++++++------ ...code_unique_to_voucher_campaigns_table.php | 32 +++++++++++++++++++ 4 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 database/migrations/2024_12_11_032042_add_is_voucher_code_unique_to_voucher_campaigns_table.php diff --git a/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php b/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php index bf809212..059b1e41 100644 --- a/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php +++ b/app/Classes/Modules/Vouchers/ControllersLogic/CreateVoucherLogic.php @@ -118,9 +118,12 @@ class CreateVoucherLogic extends AbstractControllerLogic //Process request input $userParam = User::where('id', $request->input('userId'))->first(); $voucherCodeInput = $request->input('voucherCode'); + $voucherCampaign = VoucherCampaign::where('name', $voucherCodeInput)->where('is_voucher_code_unique', true)->first(); + $userRewardObject = new CreateVoucherObject( $voucherCodeInput, $userParam, + $voucherCampaign !== null ? true : false, ); $this->canCreateVoucher->passes($userRewardObject); @@ -142,7 +145,7 @@ class CreateVoucherLogic extends AbstractControllerLogic } //Voucherify - creates new voucher at voucherify - if ($voucherCodeInput === Vouchers::SORRY_50 || $voucherCodeInput === Vouchers::SORRY_100 || $voucherCodeInput === Vouchers::SORRY_200 || $voucherCodeInput === Vouchers::CIEFPC30) { + if ($voucherCampaign) { $result = $this->newVoucherifyVoucherIssuanceHandler($voucherCodeInput); } else //Voucherify - validates existing voucher at voucherify diff --git a/app/Classes/Modules/Vouchers/DataTransferObjects/CreateVoucherObject.php b/app/Classes/Modules/Vouchers/DataTransferObjects/CreateVoucherObject.php index 74ef0e19..f0258cf1 100644 --- a/app/Classes/Modules/Vouchers/DataTransferObjects/CreateVoucherObject.php +++ b/app/Classes/Modules/Vouchers/DataTransferObjects/CreateVoucherObject.php @@ -13,15 +13,20 @@ class CreateVoucherObject implements DataTransferObject /** @var User */ private $user; + /** @var bool */ + private $isVoucherCodeUnique; + /** * CreateVoucherObject constructor. * @param string $voucherCode * @param null|User $user + * @param bool $isVoucherCodeUnique */ - public function __construct(string $voucherCode, ?User $user) + public function __construct(string $voucherCode, ?User $user, bool $isVoucherCodeUnique = false) { $this->user = $user; $this->voucherCode = $voucherCode; + $this->isVoucherCodeUnique = $isVoucherCodeUnique; } @@ -41,4 +46,12 @@ class CreateVoucherObject implements DataTransferObject return $this->user; } + /** + * @return bool + */ + public function getIsVoucherCodeUnique(): bool + { + return $this->isVoucherCodeUnique; + } + } diff --git a/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php b/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php index af40f6aa..97c6d545 100644 --- a/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php +++ b/app/Classes/Modules/Vouchers/Standards/Rules/CanCreateVoucher.php @@ -31,16 +31,19 @@ class CanCreateVoucher extends AbstractRule protected function authorized($object): bool { $isAuthorized = true; - switch ($object->getVoucherCode()) { - case Vouchers::SORRY_50: - case Vouchers::SORRY_100: - case Vouchers::SORRY_200: - // $isAuthorized = Auth::user()->can('add voucher'); - $isAuthorized = in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES); - break; - default: - $isAuthorized = true; - break; + // switch ($object->getVoucherCode()) { + // case Vouchers::SORRY_50: + // case Vouchers::SORRY_100: + // case Vouchers::SORRY_200: + // // $isAuthorized = Auth::user()->can('add voucher'); + // $isAuthorized = in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES); + // break; + // default: + // $isAuthorized = true; + // break; + // } + if($object->getIsVoucherCodeUnique()){ + $isAuthorized = in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES); } return $isAuthorized; } diff --git a/database/migrations/2024_12_11_032042_add_is_voucher_code_unique_to_voucher_campaigns_table.php b/database/migrations/2024_12_11_032042_add_is_voucher_code_unique_to_voucher_campaigns_table.php new file mode 100644 index 00000000..5b122a16 --- /dev/null +++ b/database/migrations/2024_12_11_032042_add_is_voucher_code_unique_to_voucher_campaigns_table.php @@ -0,0 +1,32 @@ +boolean('is_voucher_code_unique')->default(false)->after('is_display'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('voucher_campaigns', function (Blueprint $table) { + $table->dropColumn('is_voucher_code_unique'); + }); + } +}