// check if max allowed redemption of promotion have been reached or not
// if max redemption has been reached promotion will not be added
$allPromotions =
$this->
getEligiblePromotionsWithDiscounts($allPromotions,
$context->
getCustomer());
$discountLineItems =
[];
$foundCodes =
[];
/** @var PromotionCodeTuple $tuple */
foreach ($allPromotions->
getPromotionCodeTuples() as $tuple) { // verify if the user might have removed and "blocked"
// the promotion from being added again
if ($cartExtension->
isPromotionBlocked($tuple->
getPromotion()->
getId())) { continue;
} // lets build separate line items for each
// of the available discounts within the current promotion
$lineItems =
$this->
buildDiscountLineItems($tuple->
getCode(),
$tuple->
getPromotion(),
$original,
$context);
// add to our list of all line items
/** @var LineItem $nested */
foreach ($lineItems as $nested) { $discountLineItems[] =
$nested;
}