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; }
/** * @param Campaign $campaign * * @return array */ private function getMeta($campaign) { if (!$campaign) { return []; } $meta = ['og:title' => $campaign->getName(), 'og:description' => $campaign->getDescription(), 'video:duration' => $campaign->getYoutubeData('duration'), 'og:image' => 'http://img.youtube.com/vi/' . $campaign->getHash() . '/sddefault.jpg', 'ya:ovs:adult' => 'false', 'og:type' => 'video.other', 'ya:ovs:content_id' => $campaign->getHash(), 'ya:ovs:upload_date' => $campaign->getYoutubeData('uploaded')]; return $meta; }
/** * @param Campaign $campaign * @param $event */ public function preFlush(Campaign $campaign, $event) { if ($campaign->getHashId() && $campaign->getStatus() !== $campaign->getOldStatus()) { if ($campaign->isNew() && $campaign->getStatus() == Campaign::STATUS_ON) { // $campaign->setIsNew(false); $this->rabbitProducer->publish($campaign->getId()); } } }
/** * */ public function testHashidsSave() { $userManager = self::getContainer()->get('fos_user.user_manager'); $advertiser1 = $userManager->createUser(); $advertiser1->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser1); self::$entities[] = $advertiser1; $campaign1 = new Campaign(); $campaign1->setName('111')->setUser($advertiser1)->setHash('1111')->setGeneralBudget(100)->setDailyBudget(50)->setBid(1)->setHashId('aaaaaa'); self::$em->persist($campaign1); self::$em->flush(); $campaign2 = new Campaign(); $campaign2->setName('222')->setDailyBudget(50)->setUser($advertiser1)->setHash('2222')->setBid(1)->setGeneralBudget(100)->setHashId('aaaAaa'); try { self::$em->persist($campaign2); self::$em->flush(); } catch (\Exception $e) { $this->fail($e->getMessage()); return; } $this->assertNotNull($campaign2->getId()); }
/** * @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; }
protected static function loadTestFixtures() { $fixtures = []; $userManager = self::getContainer()->get('fos_user.user_manager'); $campaignManager = self::getContainer()->get('vifeed.campaign.manager'); /** @var User $publisher */ $publisher = $userManager->createUser(); $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345')->setPhone(1234567); $userManager->updateUser($publisher); $publisher->setNotification(['sms' => true]); $userManager->updateUser($publisher); /** @var User $advertiser */ $advertiser = $userManager->createUser(); $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser); $campaign0 = new Campaign(); $campaign0->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('000campaign')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(10)->setGeneralBudget(60); $campaignManager->save($campaign0); $campaign1 = new Campaign(); $campaign1->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('111campaign')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser)->setDailyBudget(0)->setGeneralBudget(500); $campaignManager->save($campaign1); $fixtures = ['publisher' => $publisher, 'advertiser' => $advertiser, 'campaigns' => [$campaign0, $campaign1]]; return $fixtures; }
/** * @return string */ public function getNewStatus() { return $this->campaign->getStatus(); }
/** * * @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)); }
/** * @param Campaign $campaign * * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException */ private function checkPermissions(Campaign $campaign) { if ($this->getUser()->getType() !== User::TYPE_ADVERTISER) { throw new AccessDeniedHttpException(); } if ($this->getUser() !== $campaign->getUser()) { throw new AccessDeniedHttpException(); } }
/** * createCampaignForm * * @param null|Campaign $campaign * * @return \Symfony\Component\Form\Form */ private function createCampaignForm($campaign = null) { if ($campaign && !in_array($campaign->getStatus(), [Campaign::STATUS_ARCHIVED, Campaign::STATUS_ENDED])) { $form = $this->createForm(new StartedCampaignType(), $campaign); } else { $form = $this->createForm(new CampaignType($this->getUser(), $this->tagManager), $campaign); } $clearMissing = $campaign === null ? true : false; $form->submit($this->get('request'), $clearMissing); return $form; }
/** * @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'); $country1 = new Country(); $country1->setName('Россия'); $entityManager->persist($country1); $country2 = new Country(); $country2->setName('Белоруссия'); $entityManager->persist($country2); /** @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(200)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser2, false); /** @var User $advertiser3 */ $advertiser3 = $userManager->createUser(); $advertiser3->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser3, false); /** @var User $advertiser4 */ $advertiser4 = $userManager->createUser(); $advertiser4->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(1)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser4, false); /** @var User $publisher */ $publisher = $userManager->createUser(); $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->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($advertiser1)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(7)->setStartAt(new \DateTime('-2 day'))->setBalance(10)->setGeneralBudget(10); $campaignManager->save($campaign1); $campaign2 = new Campaign(); $campaign2->setStatus(Campaign::STATUS_AWAITING)->setBid(3)->setName('222')->setUser($advertiser2)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(0)->setBalance(10)->setGeneralBudget(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($advertiser2)->setDailyBudget(10)->setStartAt(new \DateTime())->setBalance(10)->setGeneralBudget(10); $campaignManager->save($campaign3); $campaign4 = new Campaign(); $campaign4->setStatus(Campaign::STATUS_PAUSED)->setBid(3)->setBalance(91)->setName('444')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser2)->setDailyBudget(10)->setGeneralBudget(100)->updateDailyBudgetUsed(9); $campaignManager->save($campaign4); $campaign5 = new Campaign(); $campaign5->setStatus(Campaign::STATUS_AWAITING)->setBid(3)->setName('555')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser2)->setDailyBudget(10)->setGeneralBudget(4); $campaignManager->save($campaign5); $campaign6 = new Campaign(); $campaign6->setStatus(Campaign::STATUS_ARCHIVED)->setBid(3)->setName('666campaign')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser2)->setDailyBudget(10)->setGeneralBudget(60); $campaignManager->save($campaign6); // удалённая кампания (soft-delete) $campaign7 = new Campaign(); $campaign7->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('777')->setHash('0123456789a')->setUser($advertiser2)->setDailyBudget(10)->setGeneralBudget(0)->setDeletedAt(new \DateTime('2014-02-10')); $campaignManager->save($campaign7); $campaign8 = new Campaign(); $campaign8->setStatus(Campaign::STATUS_AWAITING)->setBid(3)->setName('888')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser3)->setDailyBudget(0)->setGeneralBudget(15)->updateDailyBudgetUsed(15)->setBalance(10); $campaignManager->save($campaign8); $campaign9 = new Campaign(); $campaign9->setStatus(Campaign::STATUS_ENDED)->setBid(3)->setName('999')->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setUser($advertiser4)->setDailyBudget(0)->setGeneralBudget(15)->updateDailyBudgetUsed(15); $campaignManager->save($campaign9); $entityManager->flush(); $tokenManager->createUserToken($advertiser1->getId()); $tokenManager->createUserToken($advertiser2->getId()); $tokenManager->createUserToken($advertiser3->getId()); $tokenManager->createUserToken($advertiser4->getId()); $tokenManager->createUserToken($publisher->getId()); return array('advertisers' => [$advertiser1, $advertiser2, $advertiser3, $advertiser4], 'publisher' => $publisher, 'campaigns' => [$campaign1, $campaign2, $campaign3, $campaign4, $campaign5, $campaign6, $campaign7, $campaign8, $campaign9], 'countries' => [$country1, $country2]); }
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; }
/** * статистика по дням по кампании * * @param Campaign $campaign id кампании * * @Rest\Get("billing/spendings/{campaign_id}", requirements={"campaign_id"="\d+"}) * @ParamConverter("campaign", class="VifeedCampaignBundle:Campaign", * options={"id" = "campaign_id", "repository_method" = "findWithoutFilter"}) * @ApiDoc( * section="Billing statistics API", * requirements={ * {"name"="campaign_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 campaign is not found" * } * ) * * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException * * @return \Symfony\Component\HttpFoundation\Response */ public function getBillingSpendingsByCampaignAction(Campaign $campaign) { if ($this->getUser()->getType() !== User::TYPE_ADVERTISER) { throw new AccessDeniedHttpException(); } if ($this->getUser() !== $campaign->getUser()) { throw new AccessDeniedHttpException(); } $dates = $this->getRequestedDates(); $data = ['stats' => [], 'total_views' => 0, 'total_paid_views' => 0, 'total_charged' => 0, 'total_kpi' => 0]; $statsManager = $this->container->get('vifeed.videoview.stats_manager'); $stats = $statsManager->getDailyStatsByCampaigns($campaign, $dates['date_from'], $dates['date_to']); foreach ($stats as &$row) { unset($row['campaign_id']); $row['charged'] += 0; // если не было списаний, то приходит null $row['kpi'] = $row['paid_views'] > 0 ? round($row['views'] / $row['paid_views'], 2) : 0; $data['total_views'] += $row['views']; $data['total_paid_views'] += $row['paid_views']; $data['total_charged'] += $row['charged']; } $data['stats'] = $stats; $data['total_kpi'] = $data['total_paid_views'] > 0 ? round($data['total_views'] / $data['total_paid_views'], 2) : 0; $view = new View($data); return $this->handleView($view); }
/** * @param \Vifeed\CampaignBundle\Entity\Campaign $campaign */ private function turnOn(Campaign $campaign) { $campaign->setStatus(Campaign::STATUS_ON)->setStartAt(new \DateTime()); }
protected static function loadTestFixtures() { $campaignManager = self::getContainer()->get('vifeed.campaign.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 $advertiser */ $advertiser = $userManager->createUser(); $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(100)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser); $campaign1 = new Campaign(); $campaign1->setStatus(Campaign::STATUS_ARCHIVED)->setBid(3)->setName('111')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(7)->setGeneralBudget(10); $campaignManager->save($campaign1); $tagManager->addTags([$tag1, $tag2], $campaign1); $tagManager->saveTagging($campaign1); $tokenManager->createUserToken($advertiser->getId()); return ['advertiser' => $advertiser, 'campaign' => $campaign1]; }
/** * @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]); }
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)); }