/** * @param \Generated\Shared\Transfer\VoucherCreateInfoTransfer $voucherCreateInfoInterface * * @return $this */ protected function addVoucherCreateMessage(VoucherCreateInfoTransfer $voucherCreateInfoInterface) { if ($voucherCreateInfoInterface->getType() === DiscountConstants::MESSAGE_TYPE_SUCCESS) { return $this->addSuccessMessage($voucherCreateInfoInterface->getMessage()); } if ($voucherCreateInfoInterface->getType() === DiscountConstants::MESSAGE_TYPE_ERROR) { return $this->addErrorMessage($voucherCreateInfoInterface->getMessage()); } return $this->addInfoMessage($voucherCreateInfoInterface->getMessage()); }
/** * @param \Generated\Shared\Transfer\DiscountVoucherTransfer $discountVoucherTransfer * @param int $quantity * * @return \Generated\Shared\Transfer\VoucherCreateInfoTransfer */ protected function generateAndSaveVoucherCodes(DiscountVoucherTransfer $discountVoucherTransfer, $quantity) { $length = $discountVoucherTransfer->getRandomGeneratedCodeLength(); $messageCreateInfoTransfer = new VoucherCreateInfoTransfer(); if (!$length && !$discountVoucherTransfer->getCustomCode()) { $messageCreateInfoTransfer->setType(DiscountConstants::MESSAGE_TYPE_ERROR); $messageCreateInfoTransfer->setMessage('You must provide length or custom code values.'); return $messageCreateInfoTransfer; } $codeCollisions = $this->generateCodes($discountVoucherTransfer, $quantity); if ($codeCollisions === 0) { $messageCreateInfoTransfer->setType(DiscountConstants::MESSAGE_TYPE_SUCCESS); $messageCreateInfoTransfer->setMessage('Voucher codes successfully generated.'); return $messageCreateInfoTransfer; } if ($codeCollisions === $discountVoucherTransfer->getQuantity()) { $messageCreateInfoTransfer->setType(DiscountConstants::MESSAGE_TYPE_ERROR); $messageCreateInfoTransfer->setMessage('No available codes to generate.'); return $messageCreateInfoTransfer; } if ($codeCollisions === $this->remainingCodesToGenerate) { $messageCreateInfoTransfer->setType(DiscountConstants::MESSAGE_TYPE_ERROR); $messageCreateInfoTransfer->setMessage('No available codes to generate. Select higher code length.'); return $messageCreateInfoTransfer; } $this->remainingCodesToGenerate = $codeCollisions; return $this->generateAndSaveVoucherCodes($discountVoucherTransfer, $codeCollisions); }