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;
 }
Пример #2
0
 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'));
 }
Пример #3
0
 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'));
     }
 }