From ccfae2f76a6bdc01d538a1bb8b980910a9f9fa32 Mon Sep 17 00:00:00 2001 From: Henning Leutz <leutz@pcsg.de> Date: Wed, 24 Apr 2024 08:01:12 +0200 Subject: [PATCH] refactor: missing return types, qualifier imports, code cleanup --- ajax/create.php | 22 +++--- ajax/delete.php | 7 +- ajax/edit.php | 15 ++-- ajax/frontend/redeem.php | 4 +- ajax/getList.php | 6 +- .../Coupons/CodeGenerators/SimpleString.php | 3 +- src/QUI/ERP/Coupons/CouponCode.php | 53 +++++++------- src/QUI/ERP/Coupons/Events.php | 72 ++++++++++--------- src/QUI/ERP/Coupons/Handler.php | 27 ++++--- .../Products/DigitalCouponProductType.php | 6 +- src/QUI/ERP/Coupons/Products/Handler.php | 71 ++++++++++-------- .../Products/PhysicalCouponProductType.php | 6 +- 12 files changed, 159 insertions(+), 133 deletions(-) diff --git a/ajax/create.php b/ajax/create.php index d3c9297..ce167d3 100644 --- a/ajax/create.php +++ b/ajax/create.php @@ -10,6 +10,7 @@ use QUI\ERP\Coupons\CouponCodeException; use QUI\ERP\Coupons\Handler; use QUI\ERP\Discount\Handler as DiscountsHandler; +use QUI\Translator; use QUI\Utils\Security\Orthos; QUI::$Ajax->registerFunction( @@ -27,7 +28,6 @@ function ($attributes) { try { $amount = 1; - $couponCodes = []; if (!empty($attributes['amount'])) { $amount = (int)$attributes['amount']; @@ -49,14 +49,10 @@ function ($attributes) { } // Create discount - switch ($attributes['discountType']) { - case 'percentage': - $discountType = DiscountsHandler::DISCOUNT_TYPE_PERCENT; - break; - - default: - $discountType = DiscountsHandler::DISCOUNT_TYPE_CURRENCY; - } + $discountType = match ($attributes['discountType']) { + 'percentage' => DiscountsHandler::DISCOUNT_TYPE_PERCENT, + default => DiscountsHandler::DISCOUNT_TYPE_CURRENCY, + }; $Discounts = DiscountsHandler::getInstance(); $NewDiscount = $Discounts->createChild([ @@ -71,7 +67,7 @@ function ($attributes) { $NewCouponCode = Handler::createCouponCode([$NewDiscount->getId()], $attributes); if ($i === 0) { - \QUI\Translator::update( + Translator::update( 'quiqqer/discount', 'discount.' . $NewDiscount->getId() . '.title', 'quiqqer/discount', @@ -85,10 +81,8 @@ function ($attributes) { ] ); - \QUI\Translator::publish('quiqqer/discount'); + Translator::publish('quiqqer/discount'); } - - $couponCodes[] = $NewCouponCode; } } catch (CouponCodeException $Exception) { QUI::getMessagesHandler()->addError( @@ -104,7 +98,7 @@ function ($attributes) { return false; } catch (QUI\Permissions\Exception $Exception) { throw $Exception; - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); QUI::getMessagesHandler()->addError( diff --git a/ajax/delete.php b/ajax/delete.php index 9ba4161..ca71f5c 100644 --- a/ajax/delete.php +++ b/ajax/delete.php @@ -4,6 +4,7 @@ * This file contains package_quiqqer_coupons_ajax_delete */ +use QUI\ERP\Coupons\CouponCodeException; use QUI\ERP\Coupons\Handler; use QUI\Utils\Security\Orthos; @@ -16,14 +17,14 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_coupons_ajax_delete', function ($ids) { - $ids = Orthos::clearArray(\json_decode($ids, true)); + $ids = Orthos::clearArray(json_decode($ids, true)); try { foreach ($ids as $id) { $CouponCode = Handler::getCouponCode((int)$id); $CouponCode->delete(); } - } catch (\QUI\ERP\Coupons\CouponCodeException $Exception) { + } catch (CouponCodeException $Exception) { QUI::getMessagesHandler()->addError( QUI::getLocale()->get( 'quiqqer/coupons', @@ -37,7 +38,7 @@ function ($ids) { return false; } catch (QUI\Permissions\Exception $Exception) { throw $Exception; - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); QUI::getMessagesHandler()->addError( diff --git a/ajax/edit.php b/ajax/edit.php index 1285a40..38fb3b3 100644 --- a/ajax/edit.php +++ b/ajax/edit.php @@ -4,6 +4,7 @@ * This file contains package_quiqqer_coupons_ajax_create */ +use QUI\ERP\Coupons\CouponCodeException; use QUI\ERP\Coupons\Handler; use QUI\Utils\Security\Orthos; @@ -16,24 +17,24 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_coupons_ajax_edit', function ($id, $attributes) { - $id = (int)$id; - $attributes = Orthos::clearArray(\json_decode($attributes, true)); + $id = (int)$id; + $attributes = Orthos::clearArray(json_decode($attributes, true)); try { $discountIds = []; if (!empty($attributes['discountIds'])) { - $discountIds = \explode(',', $attributes['discountIds']); + $discountIds = explode(',', $attributes['discountIds']); } - $couponCodes[] = Handler::editCouponCode($id, $discountIds, $attributes); - } catch (\QUI\ERP\Coupons\CouponCodeException $Exception) { + Handler::editCouponCode($id, $discountIds, $attributes); + } catch (CouponCodeException $Exception) { QUI::getMessagesHandler()->addError( QUI::getLocale()->get( 'quiqqer/coupons', 'message.ajax.edit.error', [ - 'id' => $id, + 'id' => $id, 'error' => $Exception->getMessage() ] ) @@ -42,7 +43,7 @@ function ($id, $attributes) { return false; } catch (QUI\Permissions\Exception $Exception) { throw $Exception; - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); QUI::getMessagesHandler()->addError( diff --git a/ajax/frontend/redeem.php b/ajax/frontend/redeem.php index ac93c3b..0866ff8 100644 --- a/ajax/frontend/redeem.php +++ b/ajax/frontend/redeem.php @@ -26,7 +26,7 @@ function ($code, $orderHash) { QUI::getMessagesHandler()->addError($Exception->getMessage()); return false; - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); QUI::getMessagesHandler()->addError( @@ -95,7 +95,7 @@ function ($code, $orderHash) { $coupons[] = $code; - $coupons = \array_unique($coupons); + $coupons = array_unique($coupons); $Order->setData('quiqqer-coupons', $coupons); $Order->update(); diff --git a/ajax/getList.php b/ajax/getList.php index 23a6489..43e87da 100644 --- a/ajax/getList.php +++ b/ajax/getList.php @@ -20,7 +20,7 @@ function ($searchParams) { Permission::hasPermission(Handler::PERMISSION_VIEW); - $searchParams = Orthos::clearArray(\json_decode($searchParams, true)); + $searchParams = Orthos::clearArray(json_decode($searchParams, true)); $couponCodes = []; $Users = QUI::getUsers(); $L = QUI::getLocale(); @@ -33,7 +33,7 @@ function ($searchParams) { // User try { $User = $Users->get($usage['userId']); - } catch (QUI\Exception $Exception) { + } catch (QUI\Exception) { continue; } @@ -46,7 +46,7 @@ function ($searchParams) { $couponCodes[] = $couponCode; } - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); QUI::getMessagesHandler()->addError( diff --git a/src/QUI/ERP/Coupons/CodeGenerators/SimpleString.php b/src/QUI/ERP/Coupons/CodeGenerators/SimpleString.php index 060098d..96a735f 100644 --- a/src/QUI/ERP/Coupons/CodeGenerators/SimpleString.php +++ b/src/QUI/ERP/Coupons/CodeGenerators/SimpleString.php @@ -6,6 +6,7 @@ namespace QUI\ERP\Coupons\CodeGenerators; +use Exception; use QUI\ERP\Coupons\CodeGeneratorInterface; use QUI\ERP\Coupons\Handler; @@ -27,7 +28,7 @@ class SimpleString implements CodeGeneratorInterface * * @param string $prefix (optional) * @return string - * @throws \Exception + * @throws Exception */ public static function generate($prefix = ''): string { diff --git a/src/QUI/ERP/Coupons/CouponCode.php b/src/QUI/ERP/Coupons/CouponCode.php index 99f766f..f6ac2a4 100644 --- a/src/QUI/ERP/Coupons/CouponCode.php +++ b/src/QUI/ERP/Coupons/CouponCode.php @@ -6,7 +6,11 @@ use Exception; use QUI; use QUI\ERP\Discount\Handler as DiscountHandler; +use QUI\ERP\Order\AbstractOrder; +use QUI\ERP\Order\Order; use QUI\ERP\Order\OrderInterface; +use QUI\ExceptionStack; +use QUI\Interfaces\Users\User; use QUI\Permissions\Permission; use function array_key_first; @@ -37,35 +41,35 @@ class CouponCode * * @var string */ - protected $code; + protected mixed $code; /** * IDs of users that this CouponCode is restricted to * * @var int[] */ - protected $userIds = []; + protected mixed $userIds = []; /** * IDs of groups that this CouponCode is restricted to * * @var int[] */ - protected $groupIds = []; + protected mixed $groupIds = []; /** * IDs of all linked discounts * - * @var int[] + * @var array */ - protected $discountIds = []; + protected array $discountIds = []; /** * List of usages of this CouponCode * * @var array */ - protected $usages = []; + protected mixed $usages = []; /** * Creation Date @@ -84,9 +88,9 @@ class CouponCode /** * CouponCode title * - * @var string + * @var string|null */ - protected $title = null; + protected ?string $title = null; /** * Flag - Is the CouponCode valid? @@ -100,7 +104,7 @@ class CouponCode * * @var string */ - protected $maxUsages = Handler::MAX_USAGE_ONCE_PER_USER; + protected string $maxUsages = Handler::MAX_USAGE_ONCE_PER_USER; /** * CouponCode constructor. @@ -240,7 +244,7 @@ public function getValidUntilDate(): ?DateTime } /** - * @return string + * @return string|null */ public function getTitle(): ?string { @@ -297,13 +301,14 @@ public function getGroupIds(): array * * Hint: This may invalidate the code for future use * - * @param QUI\Interfaces\Users\User $User - The user that redeems the CouponCode [if omitted use Session User] - * @param QUI\ERP\Order\Order|null $Order (optional) - Link redemption to a specific Order + * @param User|null $User - The user that redeems the CouponCode [if omitted use Session User] + * @param AbstractOrder|null $Order (optional) - Link redemption to a specific Order * @return void * @throws CouponCodeException - * @throws QUI\Exception + * @throws QUI\Database\Exception + * @throws ExceptionStack */ - public function redeem(QUI\Interfaces\Users\User $User = null, QUI\ERP\Order\Order $Order = null) + public function redeem(QUI\Interfaces\Users\User $User = null, AbstractOrder $Order = null): void { if (is_null($User)) { $User = QUI::getUserBySession(); @@ -320,7 +325,7 @@ public function redeem(QUI\Interfaces\Users\User $User = null, QUI\ERP\Order\Ord ]; if ($Order instanceof QUI\ERP\Order\Order) { - $usage['orderPrefixedId'] = $Order->getPrefixedId(); + $usage['orderPrefixedId'] = $Order->getPrefixedNumber(); } $this->usages[] = $usage; @@ -349,7 +354,7 @@ public function redeem(QUI\Interfaces\Users\User $User = null, QUI\ERP\Order\Ord * @return void * @throws CouponCodeException - Thrown if not redeemable by the given User */ - public function checkRedemption(QUI\Interfaces\Users\User $User) + public function checkRedemption(QUI\Interfaces\Users\User $User): void { if (!$this->isValid()) { throw new CouponCodeException([ @@ -471,7 +476,7 @@ public function checkRedemption(QUI\Interfaces\Users\User $User) * @param OrderInterface|null $Order * @throws CouponCodeException */ - public function checkOrderRedemption(?OrderInterface $Order) + public function checkOrderRedemption(?OrderInterface $Order): void { if ($Order === null) { return; @@ -517,7 +522,7 @@ public function checkOrderRedemption(?OrderInterface $Order) /** * Check if the given User can redeem this CouponCode * - * @param QUI\Interfaces\Users\User $User - If omitted, use session user + * @param User|null $User - If omitted, use session user * @param OrderInterface|null $Order * @return bool */ @@ -525,7 +530,7 @@ public function isRedeemable(QUI\Interfaces\Users\User $User = null, OrderInterf { try { $this->checkRedemption($User); - } catch (CouponCodeException $Exception) { + } catch (CouponCodeException) { return false; } @@ -577,7 +582,7 @@ public function hasUserRedeemed(QUI\Interfaces\Users\User $User): bool * @return void * @throws QUI\Permissions\Exception */ - public function delete() + public function delete(): void { Permission::checkPermission(Handler::PERMISSION_DELETE); @@ -590,7 +595,7 @@ public function delete() QUI\System\Log::addError($Exception->getMessage()); } - // If hidden discount are connected to this coupon -> delete them aswell + // If hidden discount are connected to this coupon -> delete them as well foreach ($this->getDiscounts() as $Discount) { if (!empty($Discount->getAttribute('hidden'))) { try { @@ -637,7 +642,7 @@ public function toArray(): array * * @return void */ - protected function checkValidity() + protected function checkValidity(): void { // Check if the expiration date has been reached if (!empty($this->ValidUntilDate)) { @@ -686,7 +691,7 @@ protected function checkValidity() * @param QUI\ERP\Order\OrderInProcess $Order * @throws QUI\Exception */ - public function addToOrder(QUI\ERP\Order\OrderInProcess $Order) + public function addToOrder(QUI\ERP\Order\OrderInProcess $Order): void { $coupons = $Order->getDataEntry('quiqqer-coupons'); @@ -712,7 +717,7 @@ public function addToOrder(QUI\ERP\Order\OrderInProcess $Order) /* @var $Coupon CouponCode */ try { $Coupon = Handler::getCouponCodeByCode($coupon); - } catch (Exception $Exception) { + } catch (Exception) { continue; } diff --git a/src/QUI/ERP/Coupons/Events.php b/src/QUI/ERP/Coupons/Events.php index 7f4f137..59637b6 100644 --- a/src/QUI/ERP/Coupons/Events.php +++ b/src/QUI/ERP/Coupons/Events.php @@ -13,10 +13,9 @@ use QUI\ERP\Discount\EventHandling as DiscountEvents; use QUI\ERP\Order\AbstractOrder; use QUI\ERP\Order\Basket\Basket; -use QUI\ERP\Order\Basket\BasketGuest; use QUI\ERP\Products\Handler\Fields; use QUI\ERP\Products\Interfaces\ProductInterface; -use Quiqqer\Engine\Collector; +use QUI\Smarty\Collector; use function array_merge; use function array_search; @@ -40,7 +39,7 @@ class Events * @param QUI\Package\Package $Package * @return void */ - public static function onPackageSetup(QUI\Package\Package $Package) + public static function onPackageSetup(QUI\Package\Package $Package): void { try { self::createProductFields(); @@ -52,7 +51,7 @@ public static function onPackageSetup(QUI\Package\Package $Package) /** * event : on admin load footer */ - public static function onAdminLoadFooter() + public static function onAdminLoadFooter(): void { echo '<script src="' . URL_OPT_DIR . 'quiqqer/coupons/bin/backend/load.js"></script>'; } @@ -61,11 +60,14 @@ public static function onAdminLoadFooter() * Template event quiqqer/order: onQuiqqer::order::orderProcessBasketEnd * * @param Collector $Collector - * @param BasketGuest $Basket - * @param $Order + * @param mixed $Basket + * @param AbstractOrder|null $Order */ - public static function templateOrderProcessBasketEnd(Collector $Collector, $Basket, $Order) - { + public static function templateOrderProcessBasketEnd( + Collector $Collector, + mixed $Basket, + AbstractOrder $Order = null + ): void { if ( !($Basket instanceof Basket) && !($Basket instanceof QUI\ERP\Order\Basket\BasketOrder) @@ -79,8 +81,11 @@ public static function templateOrderProcessBasketEnd(Collector $Collector, $Bask $CouponCode = Handler::getCouponCodeByCode($code); $CouponCode->checkRedemption(QUI::getUserBySession()); - $CouponCode->addToOrder($Order); - } catch (Exception $Exception) { + + if ($Order instanceof QUI\ERP\Order\OrderInProcess) { + $CouponCode->addToOrder($Order); + } + } catch (Exception) { } } @@ -94,7 +99,7 @@ public static function templateOrderProcessBasketEnd(Collector $Collector, $Bask * @throws QUI\ERP\Order\Exception * @throws QUI\Exception */ - public static function onOrderProcess(QUI\ERP\Order\OrderProcess $OrderProcess) + public static function onOrderProcess(QUI\ERP\Order\OrderProcess $OrderProcess): void { $CurrentStep = $OrderProcess->getCurrentStep(); $currentStep = $CurrentStep->getType(); @@ -137,17 +142,17 @@ public static function onOrderProcess(QUI\ERP\Order\OrderProcess $OrderProcess) public static function onQuiqqerOrderBasketRemovePos( QUI\ERP\Order\Basket\Basket $Basket, $pos - ) { + ): void { $Order = null; try { $Order = $Basket->getOrder(); - } catch (QUI\Exception $Exception) { + } catch (QUI\Exception) { $Orders = QUI\ERP\Order\Handler::getInstance(); try { $Order = $Orders->getLastOrderInProcessFromUser(QUI::getUserBySession()); - } catch (QUI\Exception $Exception) { + } catch (QUI\Exception) { } } @@ -177,7 +182,7 @@ public static function onQuiqqerOrderBasketRemovePos( return; } - // custom data has code params, so article is an coupon code + // custom data has code params, so article is a coupon code // we need to delete it if (in_array($articleCouponCode, $orderCoupons)) { $pos = array_search($articleCouponCode, $orderCoupons); @@ -187,7 +192,7 @@ public static function onQuiqqerOrderBasketRemovePos( try { $Order->save(); - } catch (QUI\Exception $Exception) { + } catch (QUI\Exception) { } } @@ -227,15 +232,16 @@ public static function onQuiqqerOrderBasketRemovePos( /** * event - on price factor init * - * @param $Basket + * @param mixed $Basket * @param QUI\ERP\Order\AbstractOrder $Order * @param QUI\ERP\Products\Product\ProductList $Products + * @throws QUI\Exception */ public static function onQuiqqerOrderBasketToOrder( - $Basket, + mixed $Basket, QUI\ERP\Order\AbstractOrder $Order, QUI\ERP\Products\Product\ProductList $Products - ) { + ): void { $coupons = $Order->getDataEntry('quiqqer-coupons'); $sessionCoupons = QUI::getSession()->get('quiqqer-coupons'); @@ -264,7 +270,7 @@ public static function onQuiqqerOrderBasketToOrder( $productCount = $Products->count(); $subSum = $products['calculations']['subSum']; - $checkRedeemable = !$Order->isSuccessful(); // if order is successful we dont need a check + $checkRedeemable = !$Order->isSuccessful(); // if order is successful we don't need a check $OrderInProcess = $Order->getAttribute('OrderInProcess'); $added = false; @@ -283,7 +289,7 @@ public static function onQuiqqerOrderBasketToOrder( /* @var $Coupon CouponCode */ try { $Coupon = Handler::getCouponCodeByCode($coupon); - } catch (Exception $Exception) { + } catch (Exception) { continue; } @@ -302,7 +308,7 @@ public static function onQuiqqerOrderBasketToOrder( if ($Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_GRAND_TOTAL) { // do nothing for this scope - // since this scope requires all price factors etc, this cannot be calculated here + // since this scope requires all price factors etc., this cannot be calculated here } elseif (!DiscountEvents::isDiscountUsableWithPurchaseValue($Discount, $subSum)) { continue; } @@ -361,10 +367,10 @@ public static function onQuiqqerOrderBasketToOrder( * * Redeem coupons used in (completed) orders * - * @param QUI\ERP\Order\Order|QUI\ERP\Order\OrderInProcess $Order + * @param AbstractOrder $Order * @return void */ - public static function onQuiqqerOrderSuccessful($Order) + public static function onQuiqqerOrderSuccessful(AbstractOrder $Order): void { $coupons = $Order->getDataEntry('quiqqer-coupons'); @@ -386,7 +392,7 @@ public static function onQuiqqerOrderSuccessful($Order) * @param $Order * @param $coupons */ - protected static function addSessionCouponsToOrder($Order, $coupons) + protected static function addSessionCouponsToOrder($Order, $coupons): void { if (!is_array($coupons)) { return; @@ -417,7 +423,7 @@ protected static function addSessionCouponsToOrder($Order, $coupons) * @param $Order * @param $coupon */ - protected static function addCouponToOrder($Order, $coupon) + protected static function addCouponToOrder($Order, $coupon): void { if (!($Order instanceof QUI\ERP\Order\OrderInProcess)) { return; @@ -439,7 +445,7 @@ protected static function addCouponToOrder($Order, $coupon) $Order->update(); $CouponCode->addToOrder($Order); - } catch (Exception $Exception) { + } catch (Exception) { } } @@ -448,7 +454,7 @@ protected static function addCouponToOrder($Order, $coupon) * * @return void */ - public static function removeCouponsFromSession() + public static function removeCouponsFromSession(): void { QUI::getSession()->remove('quiqqer-coupons'); } @@ -459,7 +465,7 @@ public static function removeCouponsFromSession() * @return void * @throws QUI\Exception */ - protected static function createProductFields() + protected static function createProductFields(): void { $fields = [ CouponProductsHandler::PRODUCT_FIELD_ID_TRANSFERABLE => [ @@ -627,7 +633,7 @@ protected static function createProductFields() try { Fields::getField($fieldId); continue; - } catch (Exception $Exception) { + } catch (Exception) { // Field does not exist -> create it } @@ -665,7 +671,7 @@ protected static function createProductFields() * * @throws QUI\Exception */ - public static function onQuiqqerProductsProductCreate(ProductInterface $Product) + public static function onQuiqqerProductsProductCreate(ProductInterface $Product): void { if (!($Product instanceof DigitalCouponProductType) && !($Product instanceof PhysicalCouponProductType)) { return; @@ -725,7 +731,7 @@ public static function onQuiqqerProductsProductCreate(ProductInterface $Product) * @throws CouponProductException * @throws QUI\Exception */ - public static function onQuiqqerProductsProductActivate(ProductInterface $Product) + public static function onQuiqqerProductsProductActivate(ProductInterface $Product): void { if (!($Product instanceof DigitalCouponProductType) && !($Product instanceof PhysicalCouponProductType)) { return; @@ -766,7 +772,7 @@ public static function onQuiqqerProductsProductActivate(ProductInterface $Produc * @param AbstractOrder $Order * @return void */ - public static function onQuiqqerOrderCreated(AbstractOrder $Order) + public static function onQuiqqerOrderCreated(AbstractOrder $Order): void { QUI\ERP\Coupons\Products\Handler::createCouponCodesFromOrder($Order); } diff --git a/src/QUI/ERP/Coupons/Handler.php b/src/QUI/ERP/Coupons/Handler.php index 83bbc92..dbd16d3 100644 --- a/src/QUI/ERP/Coupons/Handler.php +++ b/src/QUI/ERP/Coupons/Handler.php @@ -181,10 +181,17 @@ public static function createCouponCode(array $discountIds, array $settings = [] $couponCode['groupIds'] = json_encode(explode(",", $settings['groupIds'])); } - QUI::getDataBase()->insert( - self::getTable(), - $couponCode - ); + try { + QUI::getDataBase()->insert( + self::getTable(), + $couponCode + ); + } catch (QUI\Database\Exception $e) { + throw new CouponCodeException([ + $e->getMessage(), + $e->getCode() + ]); + } return self::getCouponCode(QUI::getPDO()->lastInsertId()); } @@ -301,9 +308,9 @@ public static function editCouponCode(int $id, array $discountIds, array $settin * @param array $searchParams * @param bool $countOnly (optional) - get result count only [default: false] * @return CouponCode[]|int - * @throws CouponCodeException + * @throws CouponCodeException|QUI\Exception */ - public static function search(array $searchParams, bool $countOnly = false) + public static function search(array $searchParams, bool $countOnly = false): array|int { $couponCodes = []; $Grid = new Grid($searchParams); @@ -429,7 +436,7 @@ public static function existsCode(string $code): bool * * @return QUI\Projects\Site|false */ - public static function getRegistrationSite() + public static function getRegistrationSite(): bool|QUI\Projects\Site { try { $Conf = QUI::getPackage('quiqqer/coupons')->getConfig(); @@ -446,7 +453,7 @@ public static function getRegistrationSite() try { return QUI\Projects\Site\Utils::getSiteByLink($regSite); - } catch (Exception $Exception) { + } catch (Exception) { return false; } } @@ -459,7 +466,7 @@ public static function getRegistrationSite() * * @throws Exception */ - public static function deleteExpiredCouponCodes(int $days = null) + public static function deleteExpiredCouponCodes(int $days = null): void { $Now = new DateTime(); $where = [ @@ -493,7 +500,7 @@ public static function deleteExpiredCouponCodes(int $days = null) * * @throws Exception */ - public static function deleteRedeemedCouponCodes(int $days = null) + public static function deleteRedeemedCouponCodes(int $days = null): void { $where = [ 'useDate' => [ diff --git a/src/QUI/ERP/Coupons/Products/DigitalCouponProductType.php b/src/QUI/ERP/Coupons/Products/DigitalCouponProductType.php index 87109fa..6dbd81c 100644 --- a/src/QUI/ERP/Coupons/Products/DigitalCouponProductType.php +++ b/src/QUI/ERP/Coupons/Products/DigitalCouponProductType.php @@ -21,7 +21,7 @@ class DigitalCouponProductType extends DigitalProduct * @throws QUI\ERP\Products\Product\Exception * @throws QUI\Exception */ - public function __construct($pid, $product = []) + public function __construct(int $pid, array $product = []) { parent::__construct($pid, $product); @@ -49,10 +49,10 @@ public function __construct($pid, $product = []) } /** - * @param QUI\Locale $Locale + * @param QUI\Locale|null $Locale * @return string */ - public static function getTypeTitle($Locale = null): string + public static function getTypeTitle(QUI\Locale $Locale = null): string { if ($Locale === null) { $Locale = QUI::getLocale(); diff --git a/src/QUI/ERP/Coupons/Products/Handler.php b/src/QUI/ERP/Coupons/Products/Handler.php index a4239af..d8b316e 100644 --- a/src/QUI/ERP/Coupons/Products/Handler.php +++ b/src/QUI/ERP/Coupons/Products/Handler.php @@ -2,6 +2,7 @@ namespace QUI\ERP\Coupons\Products; +use Exception; use QUI; use QUI\ERP\Coupons\CouponCode; use QUI\ERP\Coupons\Handler as CouponsHandler; @@ -10,8 +11,20 @@ use QUI\ERP\Discount\Handler as DiscountHandler; use QUI\ERP\Products\Handler\Products as ProductsHandler; use QUI\ERP\Products\Product\Product; +use QUI\ExceptionStack; use QUI\HtmlToPdf\Document; +use QUI\Translator; + +use function array_merge; +use function basename; +use function date; +use function date_create; +use function is_numeric; +use function mb_substr; +use function rename; +use function str_replace; + /** * Class Handler * @@ -49,7 +62,7 @@ public static function createCouponCodesFromOrder(QUI\ERP\Order\AbstractOrder $O foreach ($Order->getArticles() as $Article) { try { // Do not parse coupon codes / discounts - if (empty($Article->getId()) || !\is_numeric($Article->getId())) { + if (empty($Article->getId()) || !is_numeric($Article->getId())) { continue; } @@ -99,23 +112,23 @@ public static function createCouponCodesFromOrder(QUI\ERP\Order\AbstractOrder $O 'quiqqer/coupons', 'DownloadProduct.pdf.filename', [ - 'productTitle' => \str_replace(' ', '_', $productTitelSanitized), - 'date' => \date('Y_m_d') + 'productTitle' => str_replace(' ', '_', $productTitelSanitized), + 'date' => date('Y_m_d') ] ); - $fileName .= '__' . \mb_substr($Order->getHash(), 0, 6); + $fileName .= '__' . mb_substr($Order->getUUID(), 0, 6); - $newCouponPdfFile = \str_replace(\basename($couponPdfFile, '.pdf'), $fileName, $couponPdfFile); + $newCouponPdfFile = str_replace(basename($couponPdfFile, '.pdf'), $fileName, $couponPdfFile); - \rename($couponPdfFile, $newCouponPdfFile); + rename($couponPdfFile, $newCouponPdfFile); // Add PDF file to customer files CustomerFiles::addFileToCustomer($Customer->getUUID(), $newCouponPdfFile); - CustomerFiles::addFileToDownloadEntry($Customer->getUUID(), \basename($newCouponPdfFile)); + CustomerFiles::addFileToDownloadEntry($Customer->getUUID(), basename($newCouponPdfFile)); $customerDir = CustomerFiles::getFolderPath($Customer); - $couponFilePathCustomerDir = $customerDir . DIRECTORY_SEPARATOR . \basename($newCouponPdfFile); + $couponFilePathCustomerDir = $customerDir . DIRECTORY_SEPARATOR . basename($newCouponPdfFile); } // Send coupon via email @@ -128,16 +141,10 @@ public static function createCouponCodesFromOrder(QUI\ERP\Order\AbstractOrder $O ); if ($deliveryTypeFieldData) { - switch ($deliveryTypeFieldData['value']) { - // by mail - case 1: - $sendMail = false; - break; - - // by email - default: - $sendMail = true; - } + $sendMail = match ($deliveryTypeFieldData['value']) { + 1 => false, + default => true, + }; } else { $sendMail = $Product->getFieldValue(self::PRODUCT_FIELD_ID_SEND_MAIL); } @@ -156,7 +163,7 @@ public static function createCouponCodesFromOrder(QUI\ERP\Order\AbstractOrder $O ) ); } - } catch (\Exception $Exception) { + } catch (Exception $Exception) { if ($Exception->getCode() === 404) { QUI\System\Log::writeDebugException($Exception); } else { @@ -175,7 +182,7 @@ public static function createCouponCodesFromOrder(QUI\ERP\Order\AbstractOrder $O * @return CouponCode * * @throws QUI\Exception - * @throws \Exception + * @throws Exception */ protected static function createCouponCodeFromProduct( Product $Product, @@ -202,7 +209,7 @@ protected static function createCouponCodeFromProduct( $daysValid = 1095; // 3 years; } - $ValidUntil = \date_create('+ ' . $daysValid . ' days'); + $ValidUntil = date_create('+ ' . $daysValid . ' days'); $couponAttributes['validUntilDate'] = $ValidUntil->format('Y-m-d'); // Transferable (=usable by other users or guests) @@ -263,14 +270,14 @@ protected static function createDiscountFromProduct(Product $Product): Discount ]); } - \QUI\Translator::update( + Translator::update( 'quiqqer/discount', 'discount.' . $NewDiscount->getId() . '.title', 'quiqqer/discount', $discountTitle ); - \QUI\Translator::publish('quiqqer/discount'); + Translator::publish('quiqqer/discount'); return $NewDiscount; } @@ -279,6 +286,7 @@ protected static function createDiscountFromProduct(Product $Product): Discount * @param CouponCode $CouponCode - The coupon code * @param Product $Product - The product the coupon code was created from * @return string - PDF file path + * @throws QUI\Exception */ public static function createCouponCodePdf(CouponCode $CouponCode, Product $Product): string { @@ -296,7 +304,7 @@ public static function createCouponCodePdf(CouponCode $CouponCode, Product $Prod $Engine = QUI::getTemplateManager()->getEngine(); $Engine->assign( - \array_merge( + array_merge( [ 'CouponCode' => $CouponCode, 'Product' => $Product->getViewFrontend(), @@ -311,7 +319,7 @@ public static function createCouponCodePdf(CouponCode $CouponCode, Product $Prod $Document->setHeaderHTML($Engine->fetch($tplDir . 'CouponCode.header.html')); $Document->setContentHTML($Engine->fetch($tplDir . 'CouponCode.body.html')); $Document->setFooterHTML($Engine->fetch($tplDir . 'CouponCode.footer.html')); - } catch (\Exception $Exception) { + } catch (Exception $Exception) { QUI\System\Log::writeException($Exception); } @@ -326,19 +334,19 @@ public static function createCouponCodePdf(CouponCode $CouponCode, Product $Prod * @param QUI\Interfaces\Users\User $Customer * @param string|null $couponPdfFile (optional) - Coupon PDF that is attached to the email * - * @throws \Exception + * @throws Exception */ public static function sendCouponMail( CouponCode $CouponCode, Product $Product, QUI\Interfaces\Users\User $Customer, ?string $couponPdfFile - ) { + ): void { $recipient = QUI\ERP\Customer\Utils::getInstance()->getEmailByCustomer($Customer); if (empty($recipient)) { QUI\System\Log::addWarning( - 'Cannot send coupon code e-mail to customer #' . $Customer->getUniqueId() . ' because user has no' + 'Cannot send coupon code e-mail to customer #' . $Customer->getUUID() . ' because user has no' . ' email address!' ); @@ -378,7 +386,7 @@ public static function sendCouponMail( QUI::getLocale()->get( 'quiqqer/coupons', 'ProductCoupon.mail.body', - \array_merge( + array_merge( $couponViewData, [ 'customerName' => $Customer->getName(), @@ -400,8 +408,10 @@ public static function sendCouponMail( * @param Product $Product * @return array * + * @throws QUI\Database\Exception * @throws QUI\ERP\Products\Product\Exception - * @throws QUI\Users\Exception + * @throws QUI\Exception + * @throws ExceptionStack */ protected static function getCouponViewData(CouponCode $CouponCode, Product $Product): array { @@ -456,6 +466,7 @@ protected static function getCouponViewData(CouponCode $CouponCode, Product $Pro * which are NOT taxed at checkout but only when they are redeemed for a product. * * @return QUI\ERP\Tax\TaxType[] + * @throws QUI\Exception */ public static function getNoVatTaxTypes(): array { diff --git a/src/QUI/ERP/Coupons/Products/PhysicalCouponProductType.php b/src/QUI/ERP/Coupons/Products/PhysicalCouponProductType.php index c997533..9b8298b 100644 --- a/src/QUI/ERP/Coupons/Products/PhysicalCouponProductType.php +++ b/src/QUI/ERP/Coupons/Products/PhysicalCouponProductType.php @@ -20,7 +20,7 @@ class PhysicalCouponProductType extends QUI\ERP\Products\Product\Types\AbstractT * @throws QUI\ERP\Products\Product\Exception * @throws QUI\Exception */ - public function __construct($pid, $product = []) + public function __construct(int $pid, array $product = []) { parent::__construct($pid, $product); @@ -48,10 +48,10 @@ public function __construct($pid, $product = []) } /** - * @param QUI\Locale $Locale + * @param QUI\Locale|null $Locale * @return string */ - public static function getTypeTitle($Locale = null): string + public static function getTypeTitle(QUI\Locale $Locale = null): string { if ($Locale === null) { $Locale = QUI::getLocale(); -- GitLab