Skip to content
Code-Schnipsel Gruppen Projekte
redeem.php 1,55 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    
    /**
     * This file contains package_quiqqer_coupons_ajax_delete
     */
    
    use QUI\ERP\Coupons\Handler;
    
    /**
     * Redeem a CouponCode
     *
     * @param int $id - CouponCode ID
     * @return bool - success
     */
    QUI::$Ajax->registerFunction(
        'package_quiqqer_coupons_ajax_frontend_redeem',
    
        function ($code, $orderHash) {
    
    Patrick Müller's avatar
    Patrick Müller committed
                $code       = Handler::sanitizeCode($code);
    
                $CouponCode = Handler::getCouponCodeByCode($code);
                $CouponCode->checkRedemption(QUI::getUserBySession());
    
            } catch (QUI\ERP\Coupons\CouponCodeException $Exception) {
                QUI\System\Log::writeDebugException($Exception);
    
                QUI::getMessagesHandler()->addError($Exception->getMessage());
    
                return false;
    
            } catch (\Exception $Exception) {
                QUI\System\Log::writeException($Exception);
    
                QUI::getMessagesHandler()->addError(
                    QUI::getLocale()->get(
                        'quiqqer/coupons',
                        'message.ajax.general_error'
                    )
                );
    
                return false;
            }
    
    
            $Order     = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash);
            $coupons   = $Order->getDataEntry('quiqqer-coupons');
            $coupons[] = $code;
    
            $coupons = array_unique($coupons);
    
            $Order->setData('quiqqer-coupons', $coupons);
            $Order->update();
    
            // add
            if ($Order instanceof QUI\ERP\Order\OrderInProcess) {
                $CouponCode->addToOrder($Order);
            }
    
    
            return true;
        },