requestStack = $requestStack; } public function checkCoupons(CartEvent $event): void { $cart = $event->getCart(); $purchaseState = $cart->getPurchaseState(); foreach ($purchaseState->getDiscounts() as $discount) { if ($couponPrice = $discount->getNote()['coupon_price']) { $totalDiscountPrice = toDecimal($couponPrice); if ($cart->totalPriceWithVat->lowerThan($totalDiscountPrice)) { $coupon = $discount->getNote()['generated_coupon']['code']; $this->deleteCoupon($cart, $coupon, sprintf(translate('cart_coupon_failed_value', 'cyklospeciality'), $coupon, printPrice($totalDiscountPrice))); } } } parent::checkCoupons($event); } private function deleteCoupon(Cart $cart, string $coupon, ?string $deleteMessage = null): void { try { $session = $this->requestStack->getSession(); } catch (SessionNotFoundException) { return; } $messages = $session->getFlashBag()->peek('success'); foreach ($messages as $index => $message) { if (str_starts_with((string) $message['id'], 'coupon')) { unset($messages[$index]); } } $session->getFlashBag()->set('success', $messages); $cart->deleteCoupon(strtoupper($coupon)); addUserMessage( $deleteMessage ?: sprintf(translate('cart_coupon_failed', 'cyklospeciality'), $coupon), 'warning', [ 'id' => 'coupons_'.$coupon, ], ); } }