Skip to content
Code-Schnipsel Gruppen Projekte

feat: show errors direclty under the input

Zusammengeführt Michael Danielczok schlägt vor, 20-feat-ux-error-handling in next-2.x zu mergen.
4 Dateien
+ 208
60
Änderungen vergleichen
  • Nebeneinander
  • In der Reihe
Dateien
4
  • dcd11476
    Improve error handling for coupon code input.
    Added a catch block to handle errors when adding a coupon code to the basket.
    The error message is now displayed directly under the input field, providing a better user experience.
    
    Related: #20
+ 65
36
<?php
/**
* This file contains package_quiqqer_coupons_ajax_delete
* This file contains package_quiqqer_coupons_ajax_frontend_redeem
*/
use QUI\ERP\Coupons\Handler;
@@ -13,6 +13,15 @@
* @param int $id - CouponCode ID
* @return bool - success
*/
/**
* Redeem a CouponCode
* @param string $code - coupon code
* @param string $orderHash - Order hash
*
* @throws QUI\Exception
* @throws QUI\ERP\Coupons\CouponCodeException
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_coupons_ajax_frontend_redeem',
function ($code, $orderHash) {
@@ -23,20 +32,25 @@ function ($code, $orderHash) {
} catch (QUI\ERP\Coupons\CouponCodeException $Exception) {
QUI\System\Log::writeDebugException($Exception);
QUI::getMessagesHandler()->addError($Exception->getMessage());
return false;
// QUI::getMessagesHandler()->addError($Exception->getMessage());
throw $Exception;
// return false;
} catch (Exception $Exception) {
QUI\System\Log::writeException($Exception);
QUI::getMessagesHandler()->addError(
QUI::getLocale()->get(
'quiqqer/coupons',
'message.ajax.general_error'
)
);
throw new QUI\Exception([
'quiqqer/coupons',
'message.ajax.general_error'
]);
return false;
// QUI::getMessagesHandler()->addError(
// QUI::getLocale()->get(
// 'quiqqer/coupons',
// 'message.ajax.general_error'
// )
// );
// return false;
}
$Order = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash);
@@ -49,40 +63,55 @@ function ($code, $orderHash) {
foreach ($discounts as $Discount) {
if (!DiscountEvents::isDiscountUsableWithQuantity($Discount, $productCount)) {
QUI::getMessagesHandler()->addError(
QUI::getLocale()->get(
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
)
);
return false;
throw new QUI\Exception([
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
]);
// QUI::getMessagesHandler()->addError(
// QUI::getLocale()->get(
// 'quiqqer/coupons',
// 'exception.CouponCode.discounts_invalid'
// )
// );
//
// return false;
}
if ($Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_GRAND_TOTAL) {
if (!DiscountEvents::isDiscountUsableWithPurchaseValue($Discount, $sum)) {
QUI::getMessagesHandler()->addError(
QUI::getLocale()->get(
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
)
);
return false;
throw new QUI\Exception([
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
]);
// QUI::getMessagesHandler()->addError(
// QUI::getLocale()->get(
// 'quiqqer/coupons',
// 'exception.CouponCode.discounts_invalid'
// )
// );
//
// return false;
}
continue;
}
if (!DiscountEvents::isDiscountUsableWithPurchaseValue($Discount, $subSum)) {
QUI::getMessagesHandler()->addError(
QUI::getLocale()->get(
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
)
);
return false;
throw new QUI\Exception([
'quiqqer/coupons',
'exception.CouponCode.discounts_invalid'
]);
// QUI::getMessagesHandler()->addError(
// QUI::getLocale()->get(
// 'quiqqer/coupons',
// 'exception.CouponCode.discounts_invalid'
// )
// );
//
// return false;
}
}
@@ -105,7 +134,7 @@ function ($code, $orderHash) {
$CouponCode->addToOrder($Order);
}
return true;
// return true;
},
['code', 'orderHash']
);