src/Modules/VoucherCart/Service/VoucherService.php line 50
<?phpnamespace App\Modules\VoucherCart\Service;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Doctrine\Persistence\ManagerRegistry;use App\Common\Modules\Voucher\Service\VoucherService as CommonVoucherService;use App\Modules\User\Entity\User;use App\Admin\Modules\Voucher\Service\VoucherPackageService as AdminVoucherPackageService;use App\Admin\Modules\Voucher\Service\VoucherPackageTemplateService as AdminVoucherPackageTemplateService;use App\Admin\Modules\Voucher\Entity\VoucherPackage;use App\Admin\Modules\Voucher\Entity\VoucherPackageVoucher;use App\Admin\Modules\AmountVoucherSettings\Entity\AmountVoucherSettings;use App\Modules\VoucherCart\Entity\VoucherOrderVoucher;class VoucherService{private $_router;private $_doctrine;private $_commonVoucherService;private $_adminVoucherPackageService;private $_adminVoucherPackageTemplateService;private $_adminUser;public function __construct(RouterInterface $router,ManagerRegistry $doctrine,CommonVoucherService $commonVoucherService,AdminVoucherPackageService $adminVoucherPackageService,AdminVoucherPackageTemplateService $adminVoucherPackageTemplateService){$this->_router = $router;$this->_doctrine = $doctrine;$this->_commonVoucherService = $commonVoucherService;$this->_adminVoucherPackageService = $adminVoucherPackageService;$this->_adminVoucherPackageTemplateService = $adminVoucherPackageTemplateService;}public function getAdminUser(){return $this->_adminUser;}public function setAdminUser(User $user){$this->_adminUser = $user;}public function setAdminUserByAlias($alias){$this->_adminUser = $this->_doctrine->getRepository(User::class)->createQueryBuilder('t')->join('t.admin', 'admin')->where('t.type=:type')->andWhere('t.isActive=1')->andWhere('admin.alias=:alias')->setParameters([':type' => User::TYPE_ADMIN,':alias' => $alias])->getQuery()->getOneOrNullResult();return $this->_adminUser ? true : false;}public function getUrl($route, array $params = array(), $isAbsolute = false){$params['adminAlias'] = $this->getAdminUser()->getAdmin()->getAlias();$params['phpsid'] = session_id();return $this->_router->generate($route, $params, $isAbsolute ? UrlGeneratorInterface::ABSOLUTE_URL : UrlGeneratorInterface::ABSOLUTE_PATH);}public function getVoucherSettingsData(bool $throwException = true, bool $refresh = false){$data = $this->_getVoucherSettingsData($refresh);if (!$data && $throwException)throw new \Exception('Voucher niedostęny.');return $data;}private static $_voucherSettingsData;private function _getVoucherSettingsData(bool $refresh){if (!self::$_voucherSettingsData || $refresh){if (!$refresh && self::$_voucherSettingsData === false)return;$adminUser = $this->getAdminUser();if (!$adminUser ||!$adminUser->getAdmin() ||!$adminUser->getAdmin()->getAvailableVoucherCount()){self::$_voucherSettingsData = false;return;}$settings = $this->_doctrine->getRepository(AmountVoucherSettings::class)->findOneBy(['adminUser' => $this->getAdminUser()]);if (!$settings ||!$settings->getPackage() ||$settings->getPackage()->getVoucherType() != VoucherPackage::VOUCHER_TYPE_AMOUNT ||!count($settings->getAmounts())){self::$_voucherSettingsData = false;return;}self::$_voucherSettingsData = array('entity' => $settings,'image_url' => null,'max_quantity' => $adminUser->getAdmin()->getAvailableVoucherCount());// zdjecie voucheraself::$_voucherSettingsData['image_url'] = $this->_adminVoucherPackageService->getSaleImageUrl($settings->getPackage());if (self::$_voucherSettingsData['image_url'] == ''){$templateData = $this->_adminVoucherPackageTemplateService->getTemplateByName($settings->getPackage()->getTemplateName(), $adminUser);if (!$templateData){self::$_voucherSettingsData = false;return;}self::$_voucherSettingsData['image_url'] = $templateData['image_url'];}}return self::$_voucherSettingsData;}public function addIndividualVoucherFromOrder(VoucherOrderVoucher $orderVoucher){if (!$orderVoucher->getPackage())return false;for ($i = 0; $i < $orderVoucher->getQuantity(); $i++){$voucher = new VoucherPackageVoucher();$voucher->setAmValue($orderVoucher->getValue());$this->_commonVoucherService->prepareIndividual($voucher, ['package' => $orderVoucher->getPackage(),'admin_user' => $orderVoucher->getPackage()->getAddedByUser(),'email' => $orderVoucher->getOrder()->getEmail(),], false);$orderVoucher->addPackageVoucher($voucher);}$em = $this->_doctrine->getManager();$em->persist($orderVoucher);$em->flush();return true;}}