public function getPossibleDayPricesForAnnouncement(Advertisement $announcement) { $zonePrices = $this->getActiveZonesPrices(); $expireDate = $announcement->getExpireDate(); $toExpirationInterval = $expireDate->diff(new \DateTime()); $possiblePrices = array(); $percentageDiscount = $this->getPercentageDiscountForUser($announcement->getAdvertiser()); foreach ($zonePrices as $zoneId => $defaultPrice) { $calculatedPrice = ($defaultPrice - $defaultPrice * $percentageDiscount) * $toExpirationInterval->days; $possiblePrices[$zoneId] = $this->getRoundedPrice($calculatedPrice); } return $possiblePrices; }
public function buildForm(FormBuilderInterface $builder, array $options) { if (empty($this->announcement)) { throw new \LogicException('Advertisement has to be provided'); } $announcementId = $this->announcement->getId(); $builder->add('announcement', 'entity', array('query_builder' => function (EntityRepository $repository) use($announcementId) { return $repository->createQueryBuilder('an')->where('an.id = ?1')->setParameter(1, $announcementId); }, 'class' => 'Hyper\\AdsBundle\\Entity\\Advertisement', 'data' => $this->announcement, 'read_only' => true, 'label' => 'announcement', 'translation_domain' => 'HyperAdsBundle')); $builder->add('zone', 'entity', array('query_builder' => function (EntityRepository $repository) { return $repository->createQueryBuilder('z')->where('z.enabled = ?1')->setParameter(1, true); }, 'class' => 'Hyper\\AdsBundle\\Entity\\Zone', 'mapped' => false, 'label' => 'zone', 'translation_domain' => 'HyperAdsBundle')); $builder->add('payment_to', 'date', array('label' => 'pay.to', 'data' => $this->announcement->getExpireDate(), 'translation_domain' => 'HyperAdsBundle')); }
public function __construct() { parent::__construct(); $this->zones = new ArrayCollection(); $this->announcementPaymentType = AnnouncementPaymentType::ANNOUNCEMENT_PAYMENT_TYPE_PREMIUM; $this->type = BannerType::BANNER_TYPE_TEXT; }
public function isActive() { if (AnnouncementPaymentType::ANNOUNCEMENT_PAYMENT_TYPE_STANDARD == $this->announcementPaymentType) { return true; } else { return parent::isActive(); } }
/** * @param \Hyper\AdsBundle\Entity\Advertisement $entity * @return \Swift_Message */ private function prepareMessage(Advertisement $entity) { $message = new \Swift_Message(); $messageContent = $this->templating->render('HyperAdsBundle:Mailing:postPersistAnnouncement.html.twig', array('announcement' => $entity)); $message->setBody($messageContent, 'text/html', 'utf-8'); $message->setFrom($this->mailerFromEmail, $this->mailerFromName); $message->setSubject($this->translator->trans('announcement.edited', array('%user%' => $entity->getAdvertiser()->getUsernameCanonical(), '%title%' => $entity->getTitle()), 'HyperAdsBundle')); foreach ($this->mailingPersonList as $person) { $message->addTo($person); } return $message; }
private function accessDeniedWhenInvalidUser(Advertisement $announcement = null) { /** @var $user \Hyper\AdsBundle\Entity\Advertiser */ $user = $this->getUser(); if (null === $user) { throw new AccessDeniedException('Only logged in user can perform this action'); } if (null !== $announcement && !$user->hasRole('ROLE_ADMIN') && $announcement->getAdvertiser() != $user) { throw new AccessDeniedException("You can edit only your own advertisements when you don't have admin privileges"); } }
private function markAsExpiredAndPersist(OutputInterface $output, Advertisement $announcement) { $announcement->setExpired(true); $this->entityManager->persist($announcement); $this->verboseWrite($output, sprintf('Announcement with id <info>%d</info> (<comment>%s</comment>) marked as expired', $announcement->getId(), $announcement->getTitle())); }
private function throwUnlessValidUser(Advertisement $advertisement) { if ($this->getUser()->getId() !== $advertisement->getAdvertiser()->getId()) { throw new AccessDeniedException($this->trans('access.denied')); } }