Ejemplo n.º 1
0
 /**
  * сохранение площадки
  *
  * @param Platform $platform
  */
 public function save(Platform $platform)
 {
     $isNew = $platform->getId() ? false : true;
     $this->em->persist($platform);
     $this->em->flush($platform);
     if ($isNew) {
         $platform->setHashId($this->hashids->encode($platform->getId()));
     }
     $platform->updateUpdatedAt();
     $this->tagManager->saveTagging($platform);
     $this->em->flush();
 }
 protected static function loadTestFixtures()
 {
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     $paymentManager = self::$container->get('vifeed.payment.video_view_payment_manager');
     $userManager = self::$container->get('fos_user.user_manager');
     $advertiser0 = new User();
     $advertiser0->setType(User::TYPE_ADVERTISER)->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setEnabled(true)->setBalance(0)->setPlainPassword('12345');
     $userManager->updateCanonicalFields($advertiser0);
     $advertiser1 = new User();
     $advertiser1->setType(User::TYPE_ADVERTISER)->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setEnabled(true)->setBalance(0)->setPlainPassword('12345');
     $userManager->updateCanonicalFields($advertiser1);
     $publisher = new User();
     $publisher->setType(User::TYPE_PUBLISHER)->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(0)->setEnabled(true)->setPlainPassword('12345');
     $userManager->updateCanonicalFields($publisher);
     $campaign0 = new Campaign();
     $campaign0->setUser($advertiser0)->setName('111')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHash('123');
     $campaign1 = new Campaign();
     $campaign1->setUser($advertiser1)->setName('222')->setBid(2)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setHash('123')->setStatus(Campaign::STATUS_ON);
     $platform0 = new Platform();
     $platform0->setUser($publisher)->setUrl('123')->setName('111')->setDescription('123');
     $entityManager->persist($advertiser0);
     $entityManager->persist($advertiser1);
     $entityManager->persist($publisher);
     $entityManager->persist($campaign0);
     $entityManager->persist($campaign1);
     $entityManager->persist($platform0);
     $views = [];
     for ($i = 0; $i < 10; $i++) {
         $views[$i] = new VideoView();
         $views[$i]->setCampaign($campaign0)->setPlatform($platform0)->setCurrentTime(30)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(30)->setIp(11111 + $i)->setViewerId(md5($i));
         $entityManager->persist($views[$i]);
         $views[$i + 10] = new VideoView();
         $views[$i + 10]->setCampaign($campaign1)->setPlatform($platform0)->setCurrentTime(30)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(30)->setIp(11111 + $i + 10)->setViewerId(md5($i + 10));
         $entityManager->persist($views[$i + 10]);
     }
     $entityManager->flush();
     foreach ($views as $view) {
         $paymentManager->reckon($view);
     }
     self::$em->refresh($publisher);
     self::$em->refresh($advertiser0);
     self::$em->refresh($advertiser1);
     self::$em->refresh($campaign0);
     self::$em->refresh($campaign1);
     $fixtures = ['advertisers' => [$advertiser0, $advertiser1], 'publisher' => $publisher, 'campaigns' => [$campaign0, $campaign1], 'platofrms' => [$platform0], 'views' => $views];
     return $fixtures;
 }
Ejemplo n.º 3
0
 /**
  * @param FormBuilderInterface $builder
  * @param array                $options
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('name')->add('description')->add('countries')->add('tags', 'text', ['mapped' => false]);
     $tagManager = $this->tagManager;
     $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
         if (!$event->getData() || !$event->getData()->getId()) {
             $event->getForm()->add('url', 'url')->add('type', 'text', ['mapped' => false, 'constraints' => [new Constraints\NotBlank(['groups' => ['new']]), new Constraints\Choice(['choices' => Platform::getAvailableTypes(), 'groups' => ['new'], 'message' => 'Неправильный тип площадки'])]]);
         }
     });
     $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use($tagManager) {
         /** @var Platform $platform */
         $platform = $event->getData();
         $form = $event->getForm();
         $formTags = $form['tags']->getData();
         if (!empty($formTags) && !is_string($formTags)) {
             $error = new FormError('неправильный формат тегов');
             $form['tags']->addError($error);
         } else {
             $tagNames = $tagManager->splitTagNames($form['tags']->getData());
             $tags = $tagManager->loadOrCreateTags($tagNames);
             $tagManager->replaceTags($tags, $platform);
         }
         if (!$platform->getId() && $platform->getUrl()) {
             // для новой площадки
             $url = new Url($platform->getUrl());
             $platform->setUrl(rtrim($url->format('hp'), '//'));
             if (in_array($url->getHostname(), ['vk.com', 'vkontakte.ru']) !== ($form['type']->getData() == 'vk')) {
                 $error = new FormError('Тип площадки не соответствует адресу');
                 $form['url']->addError($error);
             }
         }
     });
 }
Ejemplo n.º 4
0
 /**
  * @return array
  */
 protected static function loadTestFixtures()
 {
     $userManager = self::getContainer()->get('fos_user.user_manager');
     /** @var EntityManager $entityManager */
     $entityManager = self::getContainer()->get('doctrine.orm.entity_manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     /** @var User $advertiser */
     $advertiser = $userManager->createUser();
     $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser, false);
     /** @var User $publisher1 */
     $publisher1 = $userManager->createUser();
     $publisher1->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher1, false);
     /** @var User $publisher2 */
     $publisher2 = $userManager->createUser();
     $publisher2->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher2, false);
     $platform1 = new Platform();
     $platform1->setUser($publisher1)->setName('name1')->setDescription('111')->setUrl('url1');
     $entityManager->persist($platform1);
     $platform2 = new Platform();
     $platform2->setUser($publisher2)->setName('name2')->setDescription('222')->setUrl('ya.ru');
     $entityManager->persist($platform2);
     $platform3 = new Platform();
     $platform3->setUser($publisher2)->setName('name3')->setDescription('333')->setUrl('ya2.ru');
     $entityManager->persist($platform3);
     $platform4 = new VkPlatform();
     $platform4->setUser($publisher2)->setName('name3')->setDescription('333')->setUrl('vk.com/12377')->setVkId(12377);
     $entityManager->persist($platform4);
     // удалённая площадка (soft-delete)
     $platform5 = new VkPlatform();
     $platform5->setUser($publisher2)->setName('name4')->setDescription('333')->setUrl('vk.com/12379')->setVkId(12379)->setDeletedAt(new \DateTime('2014-02-10'));
     $entityManager->persist($platform5);
     $entityManager->flush();
     $tokenManager->createUserToken($advertiser->getId());
     $tokenManager->createUserToken($publisher1->getId());
     $tokenManager->createUserToken($publisher2->getId());
     return array('advertiser' => $advertiser, 'publishers' => [$publisher1, $publisher2], 'platforms' => [$platform1, $platform2, $platform3, $platform4, $platform5]);
 }
Ejemplo n.º 5
0
 /**
  * @return array
  */
 protected static function loadTestFixtures()
 {
     /** @var EntityManager $entityManager */
     $entityManager = self::getContainer()->get('doctrine.orm.entity_manager');
     $userManager = self::getContainer()->get('fos_user.user_manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     /** @var User $advertiser1 */
     $advertiser1 = $userManager->createUser();
     $advertiser1->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser1, false);
     /** @var User $advertiser2 */
     $advertiser2 = $userManager->createUser();
     $advertiser2->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(false)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser2, false);
     /** @var User $publisher1 */
     $publisher1 = $userManager->createUser();
     $publisher1->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher1, false);
     /** @var User $publisher2 */
     $publisher2 = $userManager->createUser();
     $publisher2->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(false)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher2, false);
     $platform1 = new Platform();
     $platform1->setUser($publisher1)->setName('name1')->setDescription('111')->setUrl('url1')->setHashId('p1');
     $entityManager->persist($platform1);
     $platform2 = new Platform();
     $platform2->setUser($publisher2)->setName('name2')->setDescription('222')->setHashId('p2')->setUrl('ya.ru');
     $entityManager->persist($platform2);
     $campaign1 = new Campaign();
     $campaign1->setUser($advertiser1)->setName('111')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHashId('c1')->setHash('123');
     $entityManager->persist($campaign1);
     $campaign2 = new Campaign();
     $campaign2->setUser($advertiser2)->setName('222')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setHash('123')->setHashId('c2')->setStatus(Campaign::STATUS_ON);
     $entityManager->persist($campaign2);
     $entityManager->flush();
     $fixtures = ['advertisers' => [$advertiser1, $advertiser2], 'publishers' => [$publisher1, $publisher2], 'campaigns' => [$campaign1, $campaign2], 'platofrms' => [$platform1, $platform2]];
     return $fixtures;
 }
 /**
  * @return array
  */
 protected static function loadTestFixtures()
 {
     $userManager = self::getContainer()->get('fos_user.user_manager');
     /** @var EntityManager $entityManager */
     $entityManager = self::getContainer()->get('doctrine.orm.entity_manager');
     $campaignManager = self::getContainer()->get('vifeed.campaign.manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     /** @var User $advertiser */
     $advertiser = $userManager->createUser();
     $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser, false);
     /** @var User $publisher */
     $publisher = $userManager->createUser();
     $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher, false);
     $platform = new Platform();
     $platform->setUser($publisher)->setName('name1')->setDescription('111')->setUrl('url1');
     $entityManager->persist($platform);
     $country1 = new Country();
     $country1->setName('Россия');
     $entityManager->persist($country1);
     $country2 = new Country();
     $country2->setName('США');
     $entityManager->persist($country2);
     $campaign1 = new Campaign();
     $campaign1->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('111')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(10)->setGeneralBudget(100)->setBalance(100)->addCountry($country1);
     $campaignManager->save($campaign1);
     // удалённая кампания
     $campaign2 = new Campaign();
     $campaign2->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('222')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(10)->setGeneralBudget(100)->setBalance(100)->setDeletedAt(new \DateTime('2014-02-10'));
     $campaignManager->save($campaign2);
     $campaigns = [$campaign1, $campaign2];
     for ($i = 0; $i < 14; $i++) {
         $campaign = new Campaign();
         $campaign->setStatus(Campaign::STATUS_ON)->setBid(3)->setName(md5($i))->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(10)->setBalance(100)->setGeneralBudget(100);
         if ($i < 10) {
             $campaign->addCountry($country2);
         }
         $campaignManager->save($campaign);
         $campaigns[] = $campaign;
     }
     $entityManager->flush();
     $tokenManager->createUserToken($publisher->getId());
     return array('advertiser' => $advertiser, 'publisher' => $publisher, 'campaigns' => $campaigns, 'platforms' => [$platform], 'countries' => [$country1, $country2]);
 }
Ejemplo n.º 7
0
 protected static function loadTestFixtures()
 {
     /** @var EntityManager $entityManager */
     $entityManager = self::getContainer()->get('doctrine.orm.entity_manager');
     $tagManager = self::getContainer()->get('vifeed.tag.manager');
     $userManager = self::getContainer()->get('fos_user.user_manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     $tag1 = $tagManager->loadOrCreateTag('Ааа');
     $tag2 = $tagManager->loadOrCreateTag('ббб');
     /** @var User $publisher */
     $publisher = $userManager->createUser();
     $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher);
     $platform = new Platform();
     $platform->setUser($publisher)->setName('name1')->setDescription('111')->setUrl('url1');
     $entityManager->persist($platform);
     $entityManager->flush();
     $tagManager->addTags([$tag1, $tag2], $platform);
     $tagManager->saveTagging($platform);
     $tokenManager->createUserToken($publisher->getId());
     return ['publisher' => $publisher, 'platform' => $platform];
 }
Ejemplo n.º 8
0
 protected static function loadTestFixtures()
 {
     $fixtures = parent::loadTestFixtures();
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     /** @var VideoViewPaymentManager $viewPaymentManager */
     $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager');
     /** @var StatsManager $statsManager */
     $statsManager = self::getContainer()->get('vifeed.videoview.stats_manager');
     $platform = new Platform();
     $platform->setName('111')->setUser($fixtures['publisher'])->setUrl('111')->setDescription('');
     $entityManager->persist($platform);
     $city1 = new City();
     $city1->setName('Москва')->setCountry($fixtures['countries'][0])->setLatitude('111.111')->setLongitude('111.222');
     $entityManager->persist($city1);
     $city2 = new City();
     $city2->setName('Воронеж')->setCountry($fixtures['countries'][0])->setLatitude('222.222')->setLongitude('222.333');
     $entityManager->persist($city2);
     $view1 = new VideoView();
     $view1->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(10)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city1)->setTrackNumber(10)->setViewerId(md5(1));
     $entityManager->persist($view1);
     $entityManager->flush($view1);
     $viewPaymentManager->reckon($view1);
     $view2 = new VideoView();
     $view2->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city1)->setTrackNumber(60)->setViewerId(md5(2));
     $entityManager->persist($view2);
     $entityManager->flush($view2);
     $viewPaymentManager->reckon($view2);
     $view3 = new VideoView();
     $view3->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('yesterday'))->setTime(23, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city2)->setTrackNumber(60)->setViewerId(md5(3));
     $entityManager->persist($view3);
     $entityManager->flush($view3);
     $viewPaymentManager->reckon($view3);
     $view4 = new VideoView();
     $view4->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('today'))->setTime(23, 29, 59)->format('U'))->setCountry($fixtures['countries'][1])->setTrackNumber(60)->setViewerId(md5(4));
     $entityManager->persist($view4);
     $entityManager->flush($view4);
     $viewPaymentManager->reckon($view4);
     $view5 = new VideoView();
     $view5->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('today'))->setTime(23, 59, 59)->format('U'))->setCountry($fixtures['countries'][1])->setTrackNumber(60)->setViewerId(md5(4));
     $entityManager->persist($view5);
     $entityManager->flush($view5);
     $viewPaymentManager->reckon($view5);
     $entityManager->flush();
     $statsManager->recollectAllStats();
     $statsManager->collectDailyStats((new \DateTime())->setTime(0, 0, 0));
     $fixtures['cities'] = [$city1, $city2];
     $fixtures['platform'] = $platform;
     return $fixtures;
 }
Ejemplo n.º 9
0
 /**
  *
  * @return array
  */
 protected static function loadTestFixtures()
 {
     /** @var UserManager $userManager */
     $userManager = self::getContainer()->get('fos_user.user_manager');
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     $campaignManager = self::getContainer()->get('vifeed.campaign.manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     /** @var User $advertiser */
     $advertiser = $userManager->createUser();
     $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(26)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser, false);
     /** @var User $publisher */
     $publisher = $userManager->createUser();
     $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(0)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher, false);
     $campaign1 = new Campaign();
     $campaign1->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('111')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(6)->setGeneralBudget(10)->setBalance(10);
     $campaignManager->save($campaign1);
     $campaign2 = new Campaign();
     $campaign2->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('222')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(0)->setGeneralBudget(10)->setBalance(10);
     $campaignManager->save($campaign2);
     $campaign3 = new Campaign();
     $campaign3->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('333')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(10)->setGeneralBudget(100)->setBalance(100);
     $campaignManager->save($campaign3);
     $campaign4 = new Campaign();
     $campaign4->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('444')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(0)->setGeneralBudget(100)->setBalance(100);
     $campaignManager->save($campaign4);
     $platform = new Platform();
     $platform->setName('campaignStatusTestPlatform')->setUser($publisher)->setUrl('')->setDescription('');
     $entityManager->persist($platform);
     $entityManager->flush();
     $tokenManager->createUserToken($advertiser->getId());
     return array('advertiser' => $advertiser, 'publisher' => $publisher, 'platform' => $platform, 'campaigns' => array($campaign1, $campaign2, $campaign3, $campaign4));
 }
 protected static function loadTestFixtures()
 {
     $fixtures = parent::loadTestFixtures();
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     /** @var VideoViewPaymentManager $viewPaymentManager */
     $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager');
     $platform1 = new Platform();
     $platform1->setName('111')->setUser($fixtures['publisher'])->setUrl('111')->setDescription('');
     $entityManager->persist($platform1);
     $view1 = new VideoView();
     $view1->setCampaign($fixtures['campaigns'][2])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-22'))->format('U'))->setTrackNumber(60)->setViewerId(md5(1));
     $entityManager->persist($view1);
     $viewPaymentManager->reckon($view1);
     $view2 = new VideoView();
     $view2->setCampaign($fixtures['campaigns'][2])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(60)->setViewerId(md5(2));
     $entityManager->persist($view2);
     $viewPaymentManager->reckon($view2);
     $view3 = new VideoView();
     $view3->setCampaign($fixtures['campaigns'][1])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(60)->setViewerId(md5(3));
     $entityManager->persist($view3);
     $viewPaymentManager->reckon($view3);
     $view4 = new VideoView();
     $view4->setCampaign($fixtures['campaigns'][1])->setPlatform($platform1)->setCurrentTime(10)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(10)->setViewerId(md5(4));
     $entityManager->persist($view4);
     $viewPaymentManager->reckon($view4);
     self::$em->refresh($fixtures['campaigns'][1]);
     self::$em->refresh($fixtures['campaigns'][2]);
     return $fixtures;
 }
 protected static function loadTestFixtures()
 {
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     $userManager = self::$container->get('fos_user.user_manager');
     $advertiser = new User();
     $advertiser->setType(User::TYPE_ADVERTISER)->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setEnabled(true)->setPlainPassword('12345');
     $userManager->updateCanonicalFields($advertiser);
     $publisher = new User();
     $publisher->setType(User::TYPE_PUBLISHER)->setEmail('*****@*****.**')->setEnabled(true)->setUsername('*****@*****.**')->setPlainPassword('12345');
     $userManager->updateCanonicalFields($publisher);
     $campaign1 = new Campaign();
     $campaign1->setUser($advertiser)->setName('111')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHash('123');
     $campaign2 = new Campaign();
     $campaign2->setUser($advertiser)->setName('222')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setHash('123')->setStatus(Campaign::STATUS_ON)->setYoutubeData('duration', 4);
     $campaigns = [];
     for ($i = 0; $i < 8; $i++) {
         $campaigns[$i] = new Campaign();
         $campaigns[$i]->setUser($advertiser)->setName($i)->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHash('123' . $i);
         $entityManager->persist($campaigns[$i]);
     }
     $platform1 = new Platform();
     $platform1->setUser($publisher)->setUrl('123')->setName('111')->setDescription('123');
     $view0 = new VideoView();
     $view0->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(10)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(10)->setIp(11111)->setViewerId(md5(1));
     $view1 = new VideoView();
     $view1->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(3)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(3)->setIp(11112)->setViewerId(md5(1));
     $view2 = new VideoView();
     $view2->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('-35 day'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11113)->setViewerId(md5(1));
     $view3 = new VideoView();
     $view3->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(3)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(3)->setIp(11114)->setViewerId(md5(1));
     $view4 = new VideoView();
     $view4->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(39)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(39)->setIp(11115)->setViewerId(md5(1));
     // для теста на ip-filter1 - начало
     $view5 = new VideoView();
     $view5->setCampaign($campaigns[0])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 1)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(2));
     $view6 = new VideoView();
     $view6->setCampaign($campaigns[1])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 7, 1)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(3));
     $view7 = new VideoView();
     $view7->setCampaign($campaigns[2])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 10, 2)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(4));
     $view8 = new VideoView();
     $view8->setCampaign($campaigns[3])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 20, 3)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(5));
     $view9 = new VideoView();
     $view9->setCampaign($campaigns[4])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 30, 4)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(6));
     $view10 = new VideoView();
     $view10->setCampaign($campaigns[5])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 40, 5)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(7));
     $view11 = new VideoView();
     $view11->setCampaign($campaigns[6])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(10, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(8));
     $view12 = new VideoView();
     $view12->setCampaign($campaigns[7])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('today'))->setTime(0, 40, 6)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(9));
     // для теста на ip-filter1 - конец
     // для теста на ip-filter2 - начало
     $view13 = new VideoView();
     $view13->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('-1 year'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11117)->setViewerId(md5(10));
     $view14 = new VideoView();
     $view14->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('today'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11117)->setViewerId(md5(11));
     // для теста на ip-filter2 - конец
     $entityManager->persist($advertiser);
     $entityManager->persist($publisher);
     $entityManager->persist($campaign1);
     $entityManager->persist($campaign2);
     $entityManager->persist($platform1);
     $entityManager->persist($view0);
     $entityManager->persist($view1);
     $entityManager->persist($view2);
     $entityManager->persist($view3);
     $entityManager->persist($view4);
     $entityManager->persist($view5);
     $entityManager->persist($view6);
     $entityManager->persist($view7);
     $entityManager->persist($view8);
     $entityManager->persist($view9);
     $entityManager->persist($view10);
     $entityManager->persist($view11);
     $entityManager->persist($view12);
     $entityManager->persist($view13);
     $entityManager->persist($view14);
     $entityManager->flush();
     $fixtures = ['advertiser' => $advertiser, 'publisher' => $publisher, 'campaigns' => array_merge([$campaign1, $campaign2], $campaigns), 'platofrms' => [$platform1], 'views' => [$view0, $view1, $view2, $view3, $view4, $view5, $view6, $view7, $view8, $view9, $view10, $view11, $view12, $view13, $view14]];
     return $fixtures;
 }
Ejemplo n.º 12
0
 /**
  * статистика по дням по площадке
  *
  * @param Platform $platform id площадки
  *
  * @Rest\Get("billing/earnings/{platform_id}", requirements={"platform_id"="\d+"})
  * @ParamConverter("platform", class="VifeedPlatformBundle:Platform",
  *                  options={"id" = "platform_id", "repository_method" = "findWithoutFilter"})
  * @ApiDoc(
  *     section="Billing statistics API",
  *     requirements={
  *       {"name"="platform_id", "dataType"="integer", "requirement"="\d+", "description"="id площадки"}
  *     },
  *     parameters={
  *       {"name"="date_from", "dataType"="date", "format"="YYYY-MM-DD", "required"=true},
  *       {"name"="date_to", "dataType"="date", "format"="YYYY-MM-DD", "required"=true}
  *     },
  *     statusCodes={
  *         200="Returned when successful",
  *         400="Returned when date_from or date_to is not correct",
  *         403="Returned when the user is not authorized to use this method",
  *         404="Returned when platform is not found"
  *     }
  * )
  *
  * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getBillingEarningsByPlatformAction(Platform $platform)
 {
     if ($this->getUser()->getType() !== User::TYPE_PUBLISHER) {
         throw new AccessDeniedHttpException();
     }
     if ($this->getUser() !== $platform->getUser()) {
         throw new AccessDeniedHttpException();
     }
     $dates = $this->getRequestedDates();
     $data = ['stats' => [], 'total' => 0];
     $paymentRepo = $this->getDoctrine()->getRepository('VifeedPaymentBundle:VideoViewPayment');
     $stats = $paymentRepo->getPlatformStatsByDay($platform, $dates['date_from'], $dates['date_to']);
     foreach ($stats as $row) {
         $data['total'] += $row['earned'];
     }
     $data['stats'] = $stats;
     $view = new View($data);
     return $this->handleView($view);
 }
Ejemplo n.º 13
0
 /**
  * Паблишер отменяет бан кампании
  *
  * @param Platform $platform id площадки
  * @param Campaign $campaign id кампании
  *
  * @Rest\Delete("platforms/{id}/ban/{campaign_id}", requirements={"id"="\d+", "campaign_id"="\d+"})
  * @ParamConverter("platform", class="VifeedPlatformBundle:Platform")
  * @ParamConverter("campaign", class="VifeedCampaignBundle:Campaign", options={"id" = "campaign_id"})
  * @ApiDoc(
  *     section="Platform API",
  *     requirements={
  *       {"name"="id", "dataType"="integer", "requirement"="\d+", "description"="id площадки"},
  *       {"name"="campaign_id", "dataType"="integer", "requirement"="\d+", "description"="id кампании"}
  *     },
  *     statusCodes={
  *         204="Returned when successful",
  *         403="Returned when the user is not authorized to use this method",
  *         404="Returned when platform or campaign not found"
  *     }
  * )
  *
  *
  * @return Response
  */
 public function deleteCampaignBanAction(Platform $platform, Campaign $campaign)
 {
     if ($this->getUser()->getType() !== User::TYPE_PUBLISHER) {
         throw new AccessDeniedHttpException('Вы не можете блокировать кампании');
     }
     if ($platform->getUser() !== $this->getUser()) {
         throw new AccessDeniedHttpException('Можно работать только со своими площадками');
     }
     try {
         $this->platformManager->unbanCampaign($platform, $campaign);
     } catch (EntityNotFoundException $e) {
         throw new NotFoundHttpException();
     }
     $view = new View('', 204);
     return $this->handleView($view);
 }
Ejemplo n.º 14
0
 protected static function loadTestFixtures()
 {
     /** @var UserManager $userManager */
     $userManager = self::getContainer()->get('fos_user.user_manager');
     /** @var EntityManager $entityManager */
     $entityManager = self::$em;
     $campaignManager = self::getContainer()->get('vifeed.campaign.manager');
     $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager');
     /** @var VideoViewPaymentManager $viewPaymentManager */
     $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager');
     $paymentPluginController = self::getContainer()->get('payment.plugin_controller');
     /** @var StatsManager $statsManager */
     $statsManager = self::getContainer()->get('vifeed.videoview.stats_manager');
     /** @var User $advertiser */
     $advertiser = $userManager->createUser();
     $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(26)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345');
     $userManager->updateUser($advertiser, false);
     /** @var User $publisher */
     $publisher = $userManager->createUser();
     $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(200)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345');
     $userManager->updateUser($publisher, false);
     $campaign1 = new Campaign();
     $campaign1->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('111')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(7)->setBalance(10)->setGeneralBudget(10);
     $campaignManager->save($campaign1);
     $campaign2 = new Campaign();
     $campaign2->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('222')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(0)->setBalance(10)->setGeneralBudget(10)->setDeletedAt(new \DateTime('2014-02-10'));
     $campaignManager->save($campaign2);
     $platform1 = new Platform();
     $platform1->setName('111')->setUser($publisher)->setUrl('111')->setDescription('');
     $entityManager->persist($platform1);
     // плолщадка удалена (soft-delete)
     $platform2 = new Platform();
     $platform2->setName('222')->setUser($publisher)->setUrl('222')->setDescription('')->setDeletedAt(new \DateTime('2014-02-10'));
     $entityManager->persist($platform2);
     $view1 = new VideoView();
     $view1->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-22 00:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(1));
     $entityManager->persist($view1);
     $entityManager->flush();
     $viewPaymentManager->reckon($view1);
     $view2 = new VideoView();
     $view2->setCampaign($campaign1)->setPlatform($platform2)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 00:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(2));
     $entityManager->persist($view2);
     $entityManager->flush();
     $viewPaymentManager->reckon($view2);
     $view3 = new VideoView();
     $view3->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(3));
     $entityManager->persist($view3);
     $entityManager->flush();
     $viewPaymentManager->reckon($view3);
     $view4 = new VideoView();
     $view4->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:29:59'))->format('U'))->setTrackNumber(60)->setViewerId(md5(4));
     $entityManager->persist($view4);
     $entityManager->flush();
     $viewPaymentManager->reckon($view4);
     $view5 = new VideoView();
     $view5->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:59:59'))->format('U'))->setTrackNumber(60)->setViewerId(md5(4));
     $entityManager->persist($view5);
     $entityManager->flush();
     $viewPaymentManager->reckon($view5);
     $instruction1 = new PaymentInstruction(100, 'RUR', 'robokassa');
     $paymentPluginController->createPaymentInstruction($instruction1);
     $instruction2 = new PaymentInstruction(50, 'RUR', 'robokassa');
     $paymentPluginController->createPaymentInstruction($instruction2);
     $instruction3 = new PaymentInstruction(50, 'RUR', 'robokassa');
     $paymentPluginController->createPaymentInstruction($instruction3);
     $order1 = new Order();
     $order1->setUser($advertiser)->setStatus(Order::STATUS_PAID)->setAmount(100)->setPaymentInstruction($instruction1);
     $entityManager->persist($order1);
     $order2 = new Order();
     $order2->setUser($advertiser)->setStatus(Order::STATUS_PAID)->setAmount(50)->setPaymentInstruction($instruction2);
     $entityManager->persist($order2);
     $order3 = new Order();
     $order3->setUser($advertiser)->setStatus(Order::STATUS_NEW)->setAmount(50)->setPaymentInstruction($instruction3);
     $entityManager->persist($order3);
     $wallet = new Wallet();
     $wallet->setUser($publisher)->setNumber(12345)->setType('yandex');
     $entityManager->persist($wallet);
     $withdrawal1 = new Withdrawal();
     $withdrawal1->setUser($publisher)->setAmount(50)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-28 10:00:00'))->setStatus(Withdrawal::STATUS_OK);
     $entityManager->persist($withdrawal1);
     $withdrawal2 = new Withdrawal();
     $withdrawal2->setUser($publisher)->setAmount(100)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-28 12:00:00'))->setStatus(Withdrawal::STATUS_OK);
     $entityManager->persist($withdrawal2);
     $withdrawal3 = new Withdrawal();
     $withdrawal3->setUser($publisher)->setAmount(20)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-27 10:00:00'))->setStatus(Withdrawal::STATUS_CREATED);
     $entityManager->persist($withdrawal3);
     $withdrawal4 = new Withdrawal();
     $withdrawal4->setUser($publisher)->setAmount(30)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-27 11:00:00'))->setStatus(Withdrawal::STATUS_ERROR);
     $entityManager->persist($withdrawal4);
     $entityManager->flush();
     $tokenManager->createUserToken($advertiser->getId());
     $tokenManager->createUserToken($publisher->getId());
     $statsManager->recollectAllStats();
     $statsManager->collectDailyStats((new \DateTime())->setTime(0, 0, 0));
     return array('advertiser' => $advertiser, 'publisher' => $publisher, 'platforms' => [$platform1, $platform2], 'campaigns' => array($campaign1, $campaign2));
 }