Advertisement
Guest User

Untitled

a guest
May 20th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 52.50 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Dmcl\AppBundle\Controller;
  4.  
  5. use Dmcl\AppBundle\Entity\ActivationCode;
  6. use Dmcl\AppBundle\Entity\Device;
  7. use Dmcl\AppBundle\Entity\ExternalContacts;
  8. use Dmcl\AppBundle\Entity\Vod;
  9. use Dmcl\AppBundle\Form\Model\ActivationCodeModel;
  10. use Symfony\Bundle\FrameworkBundle\Controller\Controller,
  11. Dmcl\AppBundle\Entity\User,
  12. Symfony\Component\HttpFoundation\Request,
  13. Symfony\Component\HttpFoundation\Response,
  14. Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken,
  15. Symfony\Component\Security\Core\SecurityContext,
  16. Nelmio\ApiDocBundle\Annotation\ApiDoc,
  17. Symfony\Component\Intl\Intl;
  18. use Symfony\Component\HttpFoundation\JsonResponse;
  19. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
  20.  
  21. ;
  22.  
  23. class ApiController extends Controller {
  24.  
  25. /**
  26. * @ApiDoc(
  27. * description="Check the user's credentials",
  28. * parameters={
  29. * {"name"="username", "dataType"="string", "required"=true, "description"="username"},
  30. * {"name"="pass", "dataType"="string", "required"=true, "description"="password"}
  31. * },
  32. * statusCodes={
  33. * 200="Returned when successful"
  34. * }
  35. * )
  36. */
  37. public function loginAction(Request $request) {
  38. $em = $this->getDoctrine()->getManager();
  39. $response = array(
  40. 'id' => 0,
  41. 'type' => 0,
  42. 'valid' => 0,
  43. 'outh'=>""
  44. );
  45. $user = $request->get('username');
  46. $pass = $request->get('pass');
  47.  
  48. if ($user) {
  49. $entity = $em->getRepository('AppBundle:User')->findOneByUsername($user);
  50. if ($entity) {
  51. $encoder = $this->get('security.encoder_factory')->getEncoder($entity);
  52. if ($encoder->encodePassword($pass, $entity->getSalt()) == $entity->getPassword()) {
  53. $response['id'] = $entity->getId();
  54. $response['type'] = 1;
  55. $response['valid'] = 1;
  56. $response['outh'] = $this->generateUrl("api_auto_login",array("id"=> $entity->getId(),"token"=>base64_encode($entity->getUsername().'-'.$entity->getPassword())),true);
  57. }
  58. }
  59. }
  60.  
  61.  
  62. return new Response(json_encode($response), 200);
  63. }
  64.  
  65. /**
  66. * @ApiDoc(
  67. * description="Register a new reseller",
  68. * parameters={
  69. * {"name"="username", "dataType"="string", "required"=true, "description"="username"},
  70. * {"name"="email", "dataType"="string", "required"=true, "description"="email"},
  71. * {"name"="phone", "dataType"="string", "required"=true, "description"="phone"},
  72. * {"name"="pass", "dataType"="string", "required"=true, "description"="password"},
  73. * {"name"="name", "dataType"="string", "required"=true, "description"="full name"},
  74. * {"name"="country_code", "dataType"="string", "required"=true, "description"="Country Code"}
  75. * },
  76. * statusCodes={
  77. * 201="Returned when user is created",
  78. * 226="Returned when username or email is in use",
  79. * 400={
  80. * "Returned when bad request",
  81. * }
  82. * }
  83. * )
  84. */
  85. public function registerAction(Request $request) {
  86. $response = array(
  87. 'code' => 400,
  88. 'id' => 0
  89. );
  90.  
  91. $username = $request->get('username');
  92. $email = $request->get('email');
  93. $phone = $request->get('phone');
  94. $pass = $request->get('pass');
  95. $name = $request->get('name');
  96. $country = $request->get('country_code');
  97.  
  98.  
  99. if ($username & $pass & $name) {
  100. $em = $this->getDoctrine()->getManager();
  101. $entity = $em->getRepository('AppBundle:User')->findOneByUsername($username);
  102. if (!$entity) {
  103. $entity = $em->getRepository('AppBundle:User')->findOneByEmail($email);
  104. if($entity){
  105. $response['code'] = 226;
  106. }else{
  107. $entity = new User();
  108. $entity->setName($name);
  109. $encoder = $this->get('security.encoder_factory')->getEncoder($entity);
  110. $entity->setPassword($encoder->encodePassword($pass, $entity->getSalt()));
  111. $entity->setUsername($username);
  112. $entity->setUsernameCanonical($username);
  113. $entity->setEmail($email);
  114. $entity->setEmailCanonical($email);
  115. $entity->setEnabled(true);
  116. $entity->setCountry(strtoupper($country));
  117. $em->persist($entity);
  118. $em->flush();
  119. $response['code'] = 201;
  120. $response['id'] = $entity->getId();
  121. }
  122. //201
  123. } else {
  124. $response['code'] = 226;
  125. }
  126. }
  127.  
  128. return new Response(json_encode($response), $response['code']);
  129. }
  130.  
  131. /**
  132. * @ApiDoc(
  133. * description="Returns User's profile",
  134. * requirements={
  135. * {
  136. * "name"="id",
  137. * "dataType"="integer",
  138. * "requirement"="\d+",
  139. * "description"="User's Id"
  140. * }
  141. * },
  142. * statusCodes={
  143. * 200="Returned when successful",
  144. * 404={
  145. * "Returned when the user is not found"
  146. * }
  147. * }
  148. * )
  149. */
  150. public function profileAction(Request $request, $id) {
  151.  
  152. $response = array(
  153. 'status' => 404,
  154. 'name' => '-',
  155. 'username' => '-',
  156. 'country' => '-',
  157. 'email' => '-',
  158. 'phone' => '-',
  159. 'avatar' => '-',
  160. 'address' => '-',
  161. 'customers' => '-',
  162. 'channels_purchase' => array(),
  163. 'vod_purchase' => array(),
  164. 'channels_packages_purchase' => array(),
  165. 'vod_packages_purchase' => array(),
  166. 'custom_channels' => array(),
  167. 'custom_vod' => array(),
  168. 'custom_channels_packages' => array(),
  169. 'custom_vod_packages' => array()
  170. );
  171.  
  172. $em = $this->container->get("doctrine.orm.entity_manager");
  173. $entity = $em->getRepository('AppBundle:User')->find($id);
  174. if ($entity) {
  175. $response['status'] = 200;
  176. $response['name'] = $entity->getName();
  177. $response['username'] = $entity->getUsername();
  178. $response['email'] = $entity->getEmail();
  179. $response['phone'] = $entity->getPhone();
  180. $response['avatar'] = $this->generateUrl("_home",array(),true).'uploads/'.$entity->getAvatar();
  181. $response['address'] = $entity->getAddress();
  182. $response['customers'] = count($entity->getCustomers());
  183. \Locale::setDefault($this->container->get("request")->getLocale());
  184. $response['country'] = Intl::getRegionBundle()->getCountryName($entity->getCountry());
  185.  
  186. $channelsSubscriptions = $em->getRepository('AppBundle:Subscriptions')->findBy(array(
  187. "forTest"=>false,
  188. "expired"=>false,
  189. "user"=>$entity,
  190. "productType"=>"channel",
  191. ));
  192.  
  193. if ($channelsSubscriptions) {
  194. foreach ($channelsSubscriptions as $channelsSubscription) {
  195. $response['channels_purchase'][] = $channelsSubscription->getProductId();
  196. }
  197. }
  198.  
  199. $channelsPackageSubscriptions = $em->getRepository('AppBundle:Subscriptions')->findBy(array(
  200. "forTest"=>false,
  201. "expired"=>false,
  202. "user"=>$entity,
  203. "productType"=>"channels_package",
  204. ));
  205.  
  206. if ($channelsPackageSubscriptions) {
  207. foreach ($channelsPackageSubscriptions as $channelsPackageSubscription) {
  208. $response['channels_packages_purchase'][] = $channelsPackageSubscription->getProductId();
  209. }
  210. }
  211.  
  212. $vodSubscriptions = $em->getRepository('AppBundle:Subscriptions')->findBy(array(
  213. "forTest"=>false,
  214. "expired"=>false,
  215. "user"=>$entity,
  216. "productType"=>"vod",
  217. ));
  218.  
  219. if ($vodSubscriptions) {
  220. foreach ($vodSubscriptions as $vodSubscription) {
  221. $response['vod_purchase'][] = $vodSubscription->getProductId();
  222. }
  223. }
  224.  
  225. $vodPackageSubscriptions = $em->getRepository('AppBundle:Subscriptions')->findBy(array(
  226. "forTest"=>false,
  227. "expired"=>false,
  228. "user"=>$entity,
  229. "productType"=>"vod_package",
  230. ));
  231.  
  232. if ($vodPackageSubscriptions) {
  233. foreach ($vodPackageSubscriptions as $vodPackageSubscription) {
  234. $response['vod_packages_purchase'][] = $vodPackageSubscription->getProductId();
  235. }
  236. }
  237.  
  238. $customChannels = $em->getRepository('AppBundle:Channel')->findBy(array(
  239. "owner"=>$entity->getId()
  240. ));
  241. if ($customChannels) {
  242. foreach ($customChannels as $channel) {
  243. $response['custom_channels'][] = $channel->getId();
  244. }
  245. }
  246.  
  247. $customChannelsPackages = $em->getRepository('AppBundle:ChannelsPackage')->findBy(array(
  248. "owner"=>$entity->getId()
  249. ));
  250. if ($customChannelsPackages) {
  251. foreach ($customChannelsPackages as $channelsPackage) {
  252. $response['custom_channels_packages'][] = $channelsPackage->getId();
  253. }
  254. }
  255.  
  256. $customVods = $em->getRepository('AppBundle:Vod')->findBy(array(
  257. "owner"=>$entity->getId()
  258. ));
  259. if ($customVods) {
  260. foreach ($customVods as $vod) {
  261. $response['custom_vod'][] = $vod->getId();
  262. }
  263. }
  264.  
  265. $customVodPackages = $em->getRepository('AppBundle:VodPackage')->findBy(array(
  266. "owner"=>$entity->getId()
  267. ));
  268. if ($customVodPackages) {
  269. foreach ($customVodPackages as $vodPackage) {
  270. $response['custom_vod_packages'][] = $vodPackage->getId();
  271. }
  272. }
  273.  
  274. }
  275. return new Response(str_replace(array('\/', '//', 'http:/','/../'), array('/', '/', 'http://','/'), json_encode($response)), $response['status']);
  276. }
  277.  
  278. /**
  279. * @ApiDoc(
  280. * description="Returns User's channels",
  281. * requirements={
  282. * {
  283. * "name"="userId",
  284. * "dataType"="integer",
  285. * "requirement"="\d+",
  286. * "description"="User's Id"
  287. * }
  288. * },
  289. * statusCodes={
  290. * 200="Returned when successful",
  291. * 404={
  292. * "Returned when the user is not found"
  293. * }
  294. * }
  295. * )
  296. */
  297. public function channelsByUserAction(Request $request, $userId) {
  298.  
  299. $response = array(
  300. 'status' => 404,
  301. 'channels' => array()
  302. );
  303.  
  304. $em = $this->getDoctrine()->getManager();
  305. $entity = $em->getRepository('AppBundle:User')->find($userId);
  306. if ($entity) {
  307. $response['status'] = 200;
  308. $channelsSubscriptions = $em->getRepository('AppBundle:Subscriptions')->findBy(array(
  309. "forTest"=>false,
  310. "expired"=>false,
  311. "user"=>$entity,
  312. "productType"=>"channel",
  313. ));
  314.  
  315. if ($channelsSubscriptions) {
  316. foreach ($channelsSubscriptions as $channelsSubscription) {
  317. $response['channels'][] = $channelsSubscription->getProductId();
  318. }
  319. }
  320. }
  321. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), $response['status']);
  322. }
  323.  
  324. /**
  325. * @ApiDoc(
  326. * description="Update User's profile ",
  327. * parameters={
  328. * {"name"="email", "dataType"="string", "required"=true, "description"="email"},
  329. * {"name"="phone", "dataType"="string", "required"=true, "description"="phone"},
  330. * {"name"="pass", "dataType"="string", "required"=true, "description"="password"},
  331. * {"name"="name", "dataType"="string", "required"=true, "description"="full name"},
  332. * {"name"="country_code", "dataType"="string", "required"=true, "description"="Country Code"}
  333. * },
  334. * requirements={
  335. * {
  336. * "name"="id",
  337. * "dataType"="integer",
  338. * "requirement"="\d+",
  339. * "description"="User's Id"
  340. * }
  341. * },
  342. * statusCodes={
  343. * 200="Returned when successful",
  344. * 400= "Returned when bad request",
  345. * 226= "Returned when email already in use",
  346. * 404={
  347. * "Returned when the user is not found",
  348. * }
  349. * }
  350. * )
  351. */
  352. public function updateProfileAction(Request $request, $id) {
  353. $response = array(
  354. 'code' => 400,
  355. 'id' => 0
  356. );
  357.  
  358. $email = $request->get('email');
  359. $phone = $request->get('phone');
  360. $pass = $request->get('pass');
  361. $name = $request->get('name');
  362. $country = $request->get('country_code');
  363.  
  364. $em = $this->getDoctrine()->getManager();
  365. $entity = $em->getRepository('AppBundle:User')->find($id);
  366. if($email){
  367. $user = $em->getRepository('AppBundle:User')->findOneByEmail($email);
  368. if($user){
  369. if($user->getId()!=$entity->getId()){
  370. $response['code'] = 226;
  371. return new Response(json_encode($response), $response['code']);
  372. }
  373. }
  374.  
  375. }
  376. if ($entity) {
  377. $entity->setName($name ? $name : $entity->getName());
  378.  
  379. if ($pass) {
  380. $encoder = $this->get('security.encoder_factory')->getEncoder($entity);
  381. $entity->setPassword($encoder->encodePassword($pass, $entity->getSalt()));
  382. }
  383. $entity->setEmail($email ? $email : $entity->getEmail());
  384. $entity->setPhone($phone ? $phone : $entity->getPhone());
  385. $entity->setCountry($country ? strtoupper($country) : $entity->getCountry());
  386. $em->flush();
  387. $response['code'] = 200;
  388. $response['id'] = $entity->getId();
  389. //201
  390. } else {
  391. $response['code'] = 404;
  392. }
  393.  
  394. return new Response(json_encode($response), $response['code']);
  395. }
  396.  
  397. /**
  398. * This method return a collection of all Categories
  399. * @ApiDoc(
  400. * description="Returns a collection of Categories",
  401. * statusCodes={
  402. * 200="Returned when successful"
  403. * }
  404. * )
  405. */
  406. public function categoriesAction(Request $request) {
  407. $em = $this->getDoctrine()->getManager();
  408. $response = array();
  409. $entities = $em->getRepository('AppBundle:ChannelCategories')->findByEnabled(true);
  410.  
  411. if ($entities) {
  412. foreach ($entities as $entity) {
  413. $response[] = array(
  414. 'id' => $entity->getId(),
  415. 'name' => $entity->getName()
  416. );
  417. }
  418. }
  419. return new Response(json_encode($response), 200);
  420. }
  421.  
  422. /**
  423. * This method return a collection of all Channels that can be filtered by name and category
  424. * @ApiDoc(
  425. * description="Returns a collection of Channels",
  426. * parameters={
  427. * {"name"="name", "dataType"="string", "required"=false, "description"="channel's name"},
  428. * {"name"="category", "dataType"="integer", "required"=false, "description"="category id"}
  429. * },
  430. * statusCodes={
  431. * 200="Returned when successful"
  432. * }
  433. * )
  434. */
  435. public function channelsAction(Request $request) {
  436. $em = $this->get("doctrine.orm.entity_manager");
  437. $response = array();
  438. $category = $request->get('category');
  439. $name = $request->get('name');
  440. if ($name & $category) {
  441. $entities = $em->getRepository('AppBundle:Channel')->findByNameAndCategory($name, $category,"admin");
  442. } else if ($name) {
  443. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  444. "name"=>$name,
  445. "enabled"=>true,
  446. "owner"=>"admin"
  447. ));
  448. } else if ($category) {
  449. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  450. "category"=>$category,
  451. "enabled"=>true,
  452. "owner"=>"admin"
  453. ));
  454. } else {
  455. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  456. "enabled"=>true,
  457. "owner"=>"admin"
  458. ));
  459. }
  460.  
  461. if ($entities) {
  462. foreach ($entities as $entity) {
  463. $response[] = array(
  464. 'id' => $entity->getId(),
  465. 'name' =>$entity->getName(),
  466. 'live' => $entity->getLive(),
  467. 'price' => $entity->getPrice(),
  468. 'logo' => $this->generateUrl('_home', array(), true) .'uploads/' . $entity->getLogo(),
  469. );
  470. }
  471. }
  472. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  473. }
  474.  
  475. /**
  476. * This method return a collection of all Vod Genres
  477. * @ApiDoc(
  478. * description="Returns a collection of Vod Genres",
  479. * statusCodes={
  480. * 200="Returned when successful"
  481. * }
  482. * )
  483. */
  484. public function vodGenresAction(Request $request) {
  485. $em = $this->get("doctrine.orm.entity_manager");
  486. $response = array();
  487. $entities = $em->getRepository('AppBundle:VodGenres')->findByEnabled(true);
  488.  
  489. if ($entities) {
  490. foreach ($entities as $entity) {
  491. $response[] = array(
  492. 'id' => $entity->getId(),
  493. 'name' => $entity->getName()
  494. );
  495. }
  496. }
  497. return new Response(json_encode($response), 200);
  498. }
  499.  
  500. /**
  501. * This method return a collection of all Vod
  502. * @ApiDoc(
  503. * description="Returns a collection of Vod",
  504. * statusCodes={
  505. * 200="Returned when successful"
  506. * }
  507. * )
  508. */
  509. public function videosAction(Request $request) {
  510. $em = $this->get("doctrine.orm.entity_manager");
  511. $response = array();
  512. $entities = $em->getRepository('AppBundle:Vod')->findBy(array(
  513. "enabled"=>true,
  514. "owner"=>"admin"
  515. ));
  516.  
  517. if ($entities) {
  518. foreach ($entities as $entity) {
  519. $response[] = array(
  520. 'id' => $entity->getId(),
  521. 'title' => $entity->getTitle(),
  522. 'description' => $entity->getDescription(),
  523. 'genre' => $entity->getGenre()->getName(),
  524. 'year' => $entity->getYear(),
  525. 'url' => $entity->getSource(),
  526. 'cover' => $this->generateUrl('_home', array(), true) .'uploads/' . $entity->getCover(),
  527. );
  528. }
  529. }
  530. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  531. }
  532.  
  533. /**
  534. * This method return a collection of all Free Channels that can be filtered by name and category
  535. * @ApiDoc(
  536. * description="Returns a collection of Channels",
  537. * parameters={
  538. * {"name"="name", "dataType"="string", "required"=false, "description"="channel's name"},
  539. * {"name"="category", "dataType"="integer", "required"=false, "description"="category id"}
  540. * },
  541. * statusCodes={
  542. * 200="Returned when successful"
  543. * }
  544. * )
  545. */
  546. public function channelsFreeAction(Request $request) {
  547. $em = $this->get("doctrine.orm.entity_manager");
  548. $response = array();
  549. $category = $request->get('category');
  550. $name = $request->get('name');
  551. if ($name & $category) {
  552. $entities = $em->getRepository('AppBundle:Channel')->findByNameAndCategoryFree($name, $category,"admin");
  553. } else if ($name) {
  554. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  555. "name"=>$name,
  556. "enabled"=>true,
  557. "price"=>0,
  558. "owner"=>"admin"
  559. ));
  560. } else if ($category) {
  561. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  562. "category"=>$category,
  563. "price"=>0,
  564. "enabled"=>true,
  565. "owner"=>"admin"
  566. ));
  567. } else {
  568. $entities = $em->getRepository('AppBundle:Channel')->findBy(array(
  569. "enabled"=>true,
  570. "price"=>0,
  571. "owner"=>"admin"
  572. ));
  573. }
  574.  
  575. if ($entities) {
  576. foreach ($entities as $entity) {
  577. $response[] = array(
  578. 'id' => $entity->getId(),
  579. 'name' =>$entity->getName(),
  580. 'live' => $entity->getLive(),
  581. 'price' => $entity->getPrice(),
  582. 'logo' => $this->generateUrl('_home', array(), true) .'uploads/' . $entity->getLogo(),
  583. );
  584. }
  585. }
  586. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  587. }
  588.  
  589. /**
  590. * This method return a collection of all Free Vod
  591. * @ApiDoc(
  592. * description="Returns a collection of Vod",
  593. * statusCodes={
  594. * 200="Returned when successful"
  595. * }
  596. * )
  597. */
  598. public function videosFreeAction(Request $request) {
  599. $em = $this->get("doctrine.orm.entity_manager");
  600. $response = array();
  601. $entities = $em->getRepository('AppBundle:Vod')->findBy(array(
  602. "enabled"=>true,
  603. "price"=>0,
  604. "owner"=>"admin"
  605. ));
  606.  
  607. if ($entities) {
  608. foreach ($entities as $entity) {
  609. $response[] = array(
  610. 'id' => $entity->getId(),
  611. 'title' => $entity->getTitle(),
  612. 'description' => $entity->getDescription(),
  613. 'genre' => $entity->getGenre()->getName(),
  614. 'year' => $entity->getYear(),
  615. 'url' => $entity->getSource(),
  616. 'cover' => $this->generateUrl('_home', array(), true) .'uploads/' . $entity->getCover(),
  617. );
  618. }
  619. }
  620. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  621. }
  622.  
  623. /**
  624. * This method return a collection of all Channels Packages
  625. * @ApiDoc(
  626. * description="Returns a collection of Channels Packages",
  627. * statusCodes={
  628. * 200="Returned when successful"
  629. * }
  630. * )
  631. */
  632. public function channelsPackagesAction()
  633. {
  634. $em = $this->get("doctrine.orm.entity_manager");
  635. $entities = $em->getRepository('AppBundle:ChannelsPackage')->findBy(array(
  636. "enabled"=>true,
  637. "owner"=>"admin"
  638. ));
  639. $response = array();
  640. if ($entities) {
  641. foreach ($entities as $entity) {
  642. $packChannels = array();
  643.  
  644. foreach ($entity->getChannels() as $channel) {
  645. $packChannels[] = array(
  646. 'id' => $channel->getId(),
  647. 'name' =>$channel->getName(),
  648. 'live' => $channel->getLive(),
  649. 'price' => $channel->getPrice(),
  650. 'logo' => $this->generateUrl('_home', array(), true) .'uploads/' . $channel->getLogo(),
  651. 'status'=>$channel->getEnabled(),
  652. 'category' => $channel->getCategory()->getName()
  653. );
  654. }
  655.  
  656. $response[] = array(
  657. 'id' => $entity->getId(),
  658. 'name' => $entity->getName(),
  659. 'price' => $entity->getPrice(),
  660. "channels" => $packChannels
  661. );
  662. }
  663. }
  664. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  665. }
  666.  
  667. /**
  668. * This method return a collection of all channels for a package id
  669. * @ApiDoc(
  670. * description="Returns a collection of Channels",
  671. * requirements={
  672. * {
  673. * "name"="packageId",
  674. * "dataType"="integer",
  675. * "requirement"="\d+",
  676. * "description"="Package's Id"
  677. * }
  678. * },
  679. * statusCodes={
  680. * 200="Returned when successful",
  681. * 404={
  682. * "Returned when the package is not found"
  683. * }
  684. * }
  685. * )
  686. */
  687. public function channelPerPackageAction(Request $request, $packageId) {
  688. $response = array(
  689. 'status' => 404,
  690. 'channels' => array()
  691. );
  692.  
  693. $em = $this->get("doctrine.orm.entity_manager");
  694. $entity = $em->getRepository('AppBundle:ChannelsPackage')->findOneBy(array("id" => $packageId, "enabled" => true));
  695. if ($entity) {
  696. $response["status"] = 200;
  697. $packChannels = array();
  698. foreach ($entity->getChannels() as $channel) {
  699. $packChannels[] = array(
  700. 'id' => $channel->getId(),
  701. 'name' =>$channel->getName(),
  702. 'live' => $channel->getLive(),
  703. 'price' => $channel->getPrice(),
  704. 'logo' => $this->generateUrl('_home', array(), true) .'uploads/' . $channel->getLogo(),
  705. 'status'=>$channel->getEnabled(),
  706. 'idcategory' => $channel->getCategory()->getId(),
  707. 'category' => $channel->getCategory()->getName()
  708. );
  709. }
  710. $response["channels"] = $packChannels;
  711. }
  712. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), $response["status"]);
  713. }
  714.  
  715. /**
  716. * This method return a collection of all VOD Packages
  717. * @ApiDoc(
  718. * description="Returns a collection of VOD Packages",
  719. * statusCodes={
  720. * 200="Returned when successful"
  721. * }
  722. * )
  723. */
  724. public function vodPackagesAction() {
  725. $em = $this->get("doctrine.orm.entity_manager");
  726. $entities = $em->getRepository('AppBundle:VodPackage')->findBy(array(
  727. "enabled"=>true,
  728. "owner"=>"admin"
  729. ));
  730. $response = array();
  731. if ($entities) {
  732. foreach ($entities as $entity) {
  733. $packVods = array();
  734.  
  735. foreach ($entity->getVods() as $vod) {
  736. $packVods[] = array(
  737. 'id' => $vod->getId(),
  738. 'title' => $vod->getTitle(),
  739. 'description' => $vod->getDescription(),
  740. 'genre' => $vod->getGenre()->getName(),
  741. 'year' => $vod->getYear(),
  742. 'url' => $vod->getSource(),
  743. 'cover' => $this->generateUrl('_home', array(), true) .'uploads/' . $vod->getCover(),
  744. );
  745. }
  746.  
  747. $response[] = array(
  748. 'id' => $entity->getId(),
  749. 'name' => $entity->getName(),
  750. 'price' => $entity->getPrice(),
  751. "vod" => $packVods
  752. );
  753. }
  754. }
  755. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), 200);
  756. }
  757.  
  758. /**
  759. * This method return a collection of all videos for a VOD Packages id
  760. * @ApiDoc(
  761. * description="Returns a collection of VOD",
  762. * requirements={
  763. * {
  764. * "name"="packageId",
  765. * "dataType"="integer",
  766. * "requirement"="\d+",
  767. * "description"="Vod-Package's Id"
  768. * }
  769. * },
  770. * statusCodes={
  771. * 200="Returned when successful",
  772. * 404={
  773. * "Returned when the package is not found"
  774. * }
  775. * }
  776. * )
  777. */
  778. public function videosPerVodPackageAction(Request $request, $packageId) {
  779. $response = array(
  780. 'status' => 404,
  781. 'vod' => array()
  782. );
  783.  
  784. $em = $this->get("doctrine.orm.entity_manager");
  785. $entity = $em->getRepository('AppBundle:VodPackage')->findOneBy(array("id" => $packageId,"enabled"=>true));
  786. if ($entity) {
  787. $response["status"] = 200;
  788. $packVods = array();
  789. foreach ($entity->getVods() as $vod) {
  790. $packVods[] = array(
  791. 'id' => $vod->getId(),
  792. 'title' => $vod->getTitle(),
  793. 'description' => $vod->getDescription(),
  794. 'genre' => $vod->getGenre()->getName(),
  795. 'year' => $vod->getYear(),
  796. 'url' => $vod->getSource(),
  797. 'cover' => $this->generateUrl('_home', array(), true) .'uploads/' . $vod->getCover(),
  798. );
  799. }
  800. $response["vod"] = $packVods;
  801. }
  802. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), $response["status"]);
  803. }
  804.  
  805. /**
  806. * This method return a collection of all current programmes for a channel
  807. * @ApiDoc(
  808. * description="Returns a collection of Programmes",
  809. * parameters={
  810. * {"name"="date", "dataType"="date", "required"=false, "description"="programme's date"},
  811. * },
  812. * requirements={
  813. * {
  814. * "name"="channelId",
  815. * "dataType"="integer",
  816. * "requirement"="\d+",
  817. * "description"="Channel's Id"
  818. * }
  819. * },
  820. * statusCodes={
  821. * 200="Returned when successful",
  822. * 404={
  823. * "Returned when the Programme is not found",
  824. * }
  825. * }
  826. * )
  827. */
  828. public function channelProgrammeAction(Request $request, $channelId)
  829. {
  830. $response = array(
  831. 'status' => 404,
  832. 'programmes' => array()
  833. );
  834.  
  835. $em = $this->get("doctrine.orm.entity_manager");
  836. $date = new \DateTime("today");
  837. if ($request->get("date")) {
  838. $date = new \DateTime($request->get("date"));
  839. }
  840.  
  841. $entities = $em->getRepository('AppBundle:EpgChannels')->findBy(array("channel" => $channelId));
  842.  
  843. if ($entities) {
  844. $response['status'] = 200;
  845.  
  846. foreach ($entities as $entity) {
  847. foreach ($entity->getProgrammes() as $programme) {
  848. if($programme->getDay() == $date){
  849. $response['programmes'][] = array(
  850. "id" => $programme->getId(),
  851. "title" => $programme->getTitle(),
  852. "day" => $programme->getDay()->format("Y-m-d"),
  853. "start" => $programme->getStartAt()->format("H:t:s"),
  854. "xmltvStart" => $programme->getStartAtXMLTV(),
  855. "end" => $programme->getEndAt()->format("H:t:s"),
  856. "xmltvEnd" => $programme->getEndAtXMLTV()
  857. );
  858. }
  859. }
  860. }
  861. }
  862. return new Response(str_replace(array('\/', '//', 'http:/'), array('/', '/', 'http://'), json_encode($response)), $response["status"]);
  863. }
  864.  
  865. /**
  866. * This method return a collection of all current programmes for a day
  867. * @ApiDoc(
  868. * description="Returns a collection of Programmes",
  869. * parameters={
  870. * {"name"="date", "dataType"="date", "required"=false, "description"="programmes's date"},
  871. * },
  872. * statusCodes={
  873. * 200="Returned when successful",
  874. * 404={
  875. * "Returned when the Programme is not found",
  876. * }
  877. * }
  878. * )
  879. */
  880. public function programmesAction(Request $request) {
  881. $response = array(
  882. 'status' => 404,
  883. 'programmes' => array()
  884. );
  885.  
  886. $em = $this->getDoctrine()->getManager();
  887. $date = new \DateTime("today");
  888. if ($request->get("date")) {
  889. $date = new \DateTime($request->get("date"));
  890. }
  891. $entities = $em->getRepository('AppBundle:Programme')->findBy(array("day" => $date), array("startAt" => "ASC"));
  892. if ($entities) {
  893. $response['status'] = 200;
  894.  
  895. foreach ($entities as $programme) {
  896. $response['programmes'][] = array(
  897. "id" => $programme->getId(),
  898. "title" => $programme->getTitle(),
  899. "day" => $programme->getDay()->format("Y-m-d"),
  900. "start" => $programme->getStartAt()->format("H:t:s"),
  901. "xmltvStart" => $programme->getStartAtXMLTV(),
  902. "end" => $programme->getEndAt()->format("H:t:s"),
  903. "xmltvEnd" => $programme->getEndAtXMLTV()
  904. );
  905. }
  906. }
  907. return new Response(json_encode($response), $response['status']);
  908. }
  909.  
  910. /**
  911. * This method return a collection of all customers for one Reseller
  912. * @ApiDoc(
  913. * description="Returns a collection of Customers",
  914. * requirements={
  915. * {
  916. * "name"="id",
  917. * "dataType"="integer",
  918. * "requirement"="\d+",
  919. * "description"="Reseller's Id"
  920. * }
  921. * },
  922. * statusCodes={
  923. * 200="Returned when successful",
  924. * 404={
  925. * "Returned when the Customers are not found",
  926. * }
  927. * }
  928. * )
  929. */
  930. public function resellerCustomersAction(Request $request,$id) {
  931. $response = array(
  932. 'status' => 404,
  933. 'customers' => array()
  934. );
  935.  
  936. $em = $this->get("doctrine.orm.entity_manager");
  937. $reseller = $em->getRepository('AppBundle:User')->find($id);
  938. if ($reseller) {
  939. $response['status'] = 200;
  940.  
  941. foreach ($reseller->getCustomers() as $customer) {
  942. \Locale::setDefault($this->container->get("request")->getLocale());
  943. $response['customers'][] = array(
  944. "id" => $customer->getId(),
  945. "name" => $customer->getName(),
  946. "email" => $customer->getEmail(),
  947. "mac" => $customer->getMacs(),
  948. "country" => Intl::getRegionBundle()->getCountryName($customer->getCountry())
  949. );
  950. }
  951. }
  952. return new Response(json_encode($response), $response['status']);
  953. }
  954.  
  955.  
  956. /**
  957. * This method return a collection of all Playlists for one Reseller
  958. * @ApiDoc(
  959. * description="Returns a collection of Playlists",
  960. * requirements={
  961. * {
  962. * "name"="id",
  963. * "dataType"="integer",
  964. * "requirement"="\d+",
  965. * "description"="Reseller's Id"
  966. * }
  967. * },
  968. * statusCodes={
  969. * 200="Returned when successful",
  970. * 404={
  971. * "Returned when there are no Playlists found",
  972. * }
  973. * }
  974. * )
  975. */
  976. public function resellerPlaylistsAction(Request $request,$id) {
  977. $response = array(
  978. 'status' => 404,
  979. 'playlists' => array()
  980. );
  981.  
  982.  
  983. $em = $this->get("doctrine.orm.entity_manager");
  984. $playlists = $em->getRepository('AppBundle:Playlists')->findBy(array(
  985. "owner"=>$id,
  986. "enabled"=>true
  987. ));
  988. if ($playlists) {
  989. $response['status'] = 200;
  990.  
  991. foreach ($playlists as $playlist) {
  992. $response['playlists'][] = array(
  993. "id" => $playlist->getId(),
  994. "name" => $playlist->getName(),
  995. );
  996. }
  997. }
  998. return new Response(json_encode($response), $response['status']);
  999. }
  1000.  
  1001. /**
  1002. * This method return a collection of all Playlists for one Customer
  1003. * @ApiDoc(
  1004. * description="Returns a collection of Playlists",
  1005. * requirements={
  1006. * {
  1007. * "name"="id",
  1008. * "dataType"="integer",
  1009. * "requirement"="\d+",
  1010. * "description"="Customer's Id"
  1011. * }
  1012. * },
  1013. * statusCodes={
  1014. * 200="Returned when successful",
  1015. * 404={
  1016. * "Returned when Customer is not found",
  1017. * }
  1018. * }
  1019. * )
  1020. */
  1021. public function customerPlaylistsAction(Request $request, $id) {
  1022. $response = array(
  1023. 'status' => 404,
  1024. 'playlists' => array()
  1025. );
  1026.  
  1027. $em = $this->get("doctrine.orm.entity_manager");
  1028. $customer = $em->getRepository('AppBundle:Customers')->find($id);
  1029. if ($customer) {
  1030. $response['status'] = 200;
  1031.  
  1032. foreach ($customer->getPlaylists() as $playlist) {
  1033. $response['playlists'][] = array(
  1034. "id" => $playlist->getId(),
  1035. "name" => $playlist->getName(),
  1036. );
  1037. }
  1038. }
  1039. return new Response(json_encode($response), $response['status']);
  1040. }
  1041.  
  1042. /**
  1043. * This method a Playlist
  1044. * @ApiDoc(
  1045. * description="Returns Playlist",
  1046. * requirements={
  1047. * {
  1048. * "name"="id",
  1049. * "dataType"="integer",
  1050. * "requirement"="\d+",
  1051. * "description"="Playlist's Id"
  1052. * }
  1053. * },
  1054. * parameters={
  1055. * {"name"="owner", "dataType"="string", "required"=false, "description"="playlist's owner"},
  1056. * {"name"="customer", "dataType"="integer", "required"=false, "description"="customer's id id"}
  1057. * },
  1058. * statusCodes={
  1059. * 200="Returned when successful",
  1060. * 404={
  1061. * "Returned when Playlist is not found",
  1062. * }
  1063. * }
  1064. * )
  1065. */
  1066. public function getPlaylistAction(Request $request,$id) {
  1067. $response = array(
  1068. 'status' => 404,
  1069. 'playlist' => ""
  1070. );
  1071.  
  1072. $em = $this->get("doctrine.orm.entity_manager");
  1073. $playlist = $em->getRepository('AppBundle:Playlists')->find($id);
  1074. if ($playlist) {
  1075. $response['status'] = 200;
  1076. $response['playlist'] = $this->get("app.m3u.services")->generateM3U($playlist,$request->get("owner"),$request->get("customer"));
  1077.  
  1078.  
  1079. }
  1080. return new Response(json_encode($response), $response['status']);
  1081. }
  1082.  
  1083. public function oauthAction(Request $request,$id,$token){
  1084. $em = $this->getDoctrine()->getManager();
  1085. $user = $em->getRepository('AppBundle:User')->find($id);
  1086. if($user){
  1087. if(base64_encode($user->getUsername().'-'.$user->getPassword())==$token){
  1088. $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
  1089. $this->container->get('security.token_storage')->setToken($token);
  1090. return $this->redirect($this->generateUrl("fos_user_profile_show"));
  1091. }
  1092. }
  1093. throw $this->createNotFoundException("Token no found");
  1094. }
  1095.  
  1096. /**
  1097. * @ApiDoc(
  1098. * description="This method is used for login an user from a device throw your activation code.",
  1099. * parameters={
  1100. * {"name"="activationCode", "dataType"="string", "required"=true, "description"="Activation code for login a reseller"},
  1101. * {"name"="mac", "dataType"="string", "required"=false, "description"="Device's mac"},
  1102. * {"name"="deviceModel", "dataType"="string", "required"=false, "description"="Device model"},
  1103. * {"name"="modelNumber", "dataType"="string", "required"=false, "description"="Device's model number"},
  1104. * {"name"="serialNumber", "dataType"="string", "required"=true, "description"="Device's serial number"}
  1105. * },
  1106. * statusCodes={
  1107. * 200="Returned when successful"
  1108. * }
  1109. * )
  1110. */
  1111. public function activationCodeLoginAction(Request $request)
  1112. {
  1113. try {
  1114.  
  1115. $em = $this->getDoctrine()->getManager();
  1116. $autenticarUsuario = false;
  1117. $activationCode = $em->getRepository('AppBundle:ActivationCode')->findOneBy(array('code' => $request->get('activationCode')));
  1118.  
  1119. if ($activationCode && $request->get('serialNumber')) {
  1120. //Verifico que el codigo no este vecido
  1121. $currentDate = date_create_from_format('d-m-Y', date('d-m-Y'));
  1122. if ($activationCode->getEndDate() && ($activationCode->getEndDate() <= $currentDate)) {
  1123. $response = array(
  1124. 'error' => true,
  1125. 'msg' => 'The activation code has expired',
  1126. 'data' => null
  1127. );
  1128. } else {
  1129. //Si el codigo no esta vencido verifico si es la primera vez que se autentica
  1130. if ($device = $activationCode->getDevice()) {
  1131. //Verifico que el device sea el dispositivo que esta intentando autenticarse
  1132. if ($device->getSerialNumber() == $request->get('serialNumber')) {
  1133. $autenticarUsuario = true;
  1134. } else {
  1135. $response = array(
  1136. 'error' => true,
  1137. 'msg' => 'Code is already activated',
  1138. 'data' => null
  1139. );
  1140. }
  1141. } else {
  1142. $autenticarUsuario = true;
  1143. }
  1144. }
  1145.  
  1146. if ($autenticarUsuario) {
  1147.  
  1148. /**
  1149. * En caso de que el device no este registrado lo registro, pues es la primera vez que el usuario se autentica.
  1150. * Ademas se calcula la fecha de inicio y fin de duracion del codigo de activacion
  1151. */
  1152. if (!$activationCode->getDevice()) {
  1153.  
  1154. $activationCode->setEnabled(true);
  1155. $activationCode->setStartDate(clone $currentDate);
  1156. $increment = $activationCode->getPeriod();
  1157. $endDate = date_add($currentDate, date_interval_create_from_date_string("$increment days"));
  1158. $activationCode->setEndDate($endDate);
  1159. $em->persist($activationCode);
  1160.  
  1161. $device = new Device();
  1162. $device->setMac($request->get('mac'));
  1163. $device->setDeviceModel($request->get('deviceModel'));
  1164. $device->setModelNumber($request->get('modelNumber'));
  1165. $device->setSerialNumber($request->get('serialNumber'));
  1166. $device->setActivationCode($activationCode);
  1167. $em->persist($device);
  1168.  
  1169. $em->flush();
  1170. }
  1171.  
  1172. $user = $activationCode->getReseller();
  1173. $token = new UsernamePasswordToken($user, $user->getPassword(), 'main', $user->getRoles());
  1174. $this->get('security.token_storage')->setToken($token);
  1175.  
  1176. $response = array(
  1177. 'error' => false,
  1178. 'msg' => 'User logged successfully',
  1179. 'data' => array(
  1180. 'packageType' => $activationCode->getPackageType(),
  1181. 'channelPackage' => $activationCode->getChannelsPackage() ? $activationCode->getChannelsPackage()->getId() : null,
  1182. 'vodPackage' => $activationCode->getVodPackage() ? $activationCode->getVodPackage()->getId() : null,
  1183. 'start_date' => $activationCode->getStartDate(),
  1184. 'end_date' => $activationCode->getEndDate()
  1185. )
  1186. );
  1187. }
  1188.  
  1189. } else {
  1190. $response = array(
  1191. 'error' => true,
  1192. 'msg' => 'Invalid activation code',
  1193. 'data' => null
  1194. );
  1195. }
  1196.  
  1197. } catch(\Exception $ex) {
  1198. $response = array(
  1199. 'error' => true,
  1200. 'msg' => $ex->getMessage(),
  1201. 'data' => null
  1202. );
  1203. }
  1204.  
  1205. return new JsonResponse($response);
  1206. }
  1207.  
  1208. /**
  1209. * @ApiDoc(
  1210. * description="This method is used for listing all countries.",
  1211. * statusCodes={
  1212. * 200="Returned when successful"
  1213. * }
  1214. * )
  1215. */
  1216. public function getCountriesAction()
  1217. {
  1218. $countries = $this->getDoctrine()->getRepository('AppBundle:Country')->listCountriesAsArray();
  1219. return new JsonResponse($countries);
  1220. }
  1221.  
  1222. /**
  1223. * @ApiDoc(
  1224. * description="This method is used for requesting a trial activation code.",
  1225. * parameters={
  1226. * {"name"="email", "dataType"="string", "required"=true, "description"="User's email"},
  1227. * {"name"="mac", "dataType"="string", "required"=false, "description"="Device's mac"},
  1228. * {"name"="deviceModel", "dataType"="string", "required"=false, "description"="Device model"},
  1229. * {"name"="modelNumber", "dataType"="string", "required"=false, "description"="Device's model number"},
  1230. * {"name"="serialNumber", "dataType"="string", "required"=true, "description"="Device's serial number"}
  1231. * },
  1232. * statusCodes={
  1233. * 200="Returned when successful"
  1234. * }
  1235. * )
  1236. * @param Request $request
  1237. * @return JsonResponse
  1238. */
  1239. public function requestTrialActivationCodeAction(Request $request)
  1240. {
  1241. $em = $this->getDoctrine()->getManager();
  1242. $device = $em->getRepository('AppBundle:Device')->findOneBy(array(
  1243. 'serialNumber' => $request->get('serialNumber')
  1244. ));
  1245. if ($device) {
  1246. $response = array(
  1247. 'acepted' => false,
  1248. 'activationCode' => null
  1249. );
  1250. } else {
  1251.  
  1252. $settings = $em->getRepository('AppBundle:Settings')->findOneBy(array());
  1253.  
  1254. //Creo el codigo de activacion
  1255. $activationCode = new ActivationCode();
  1256. $activationCode->setEnabled(true);
  1257. $activationCode->setPeriod($settings->getTrialPeriodoTime());
  1258. $activationCode->setChannelsPackage($em->getRepository('AppBundle:ChannelsPackage')->findOneBy(array()));
  1259. $activationCode->setPackageType('CHANNELS_PACKAGE');
  1260. $activationCode->setReseller($em->getRepository('AppBundle:User')->find(1));//admin
  1261. $em->persist($activationCode);
  1262. $em->flush();
  1263.  
  1264. //Registro el dispositivo
  1265. $device = new Device();
  1266. $device->setActivationCode($activationCode);
  1267. $device->setDeviceModel($request->get('deviceModel'));
  1268. $device->setMac($request->get('mac'));
  1269. $device->setModelNumber($request->get('modelNumber'));
  1270. $device->setSerialNumber($request->get('serialNumber'));
  1271. $em->persist($device);
  1272. $em->flush();
  1273.  
  1274. //Registro el mensaje externo de trial activation code
  1275. $externalContact = new ExternalContacts();
  1276. $externalContact->setEmail($request->get('email'));
  1277. $externalContact->setNote('Trial activation requested');
  1278. $em->persist($externalContact);
  1279. $em->flush();
  1280.  
  1281. //Le envio el mail al usuario que solicita el codigo
  1282. $this->get('app.services.mailer')->sendMail('Trial Request Activation', $externalContact->getEmail(), $this->renderView('@App/themes/default/EmailTemplate/trialRequestActivation.html.twig', array(
  1283. 'activationCode' => $activationCode
  1284. )));
  1285.  
  1286. $response = array(
  1287. 'acepted' => true,
  1288. 'activationCode' => $activationCode->getCode()
  1289. );
  1290. }
  1291.  
  1292. return new JsonResponse($response);
  1293. }
  1294.  
  1295. /**
  1296. * @ApiDoc(
  1297. * description="This method is used for saving a request of e trial activation code.",
  1298. * parameters={
  1299. * {"name"="email", "dataType"="string", "required"=true, "description"="User's email"},
  1300. * {"name"="name", "dataType"="string", "required"=false, "description"="User's name"},
  1301. * {"name"="country", "dataType"="string", "required"=false, "description"="User's country"},
  1302. * {"name"="city", "dataType"="string", "required"=false, "description"="User's city"},
  1303. * },
  1304. * statusCodes={
  1305. * 200="Returned when successful"
  1306. * }
  1307. * )
  1308. * @param Request $request
  1309. * @return JsonResponse
  1310. */
  1311. public function requestInfoAction(Request $request)
  1312. {
  1313. try {
  1314. $em = $this->getDoctrine()->getManager();
  1315.  
  1316. $externalContact = new ExternalContacts();
  1317. $externalContact->setEmail($request->get('email'));
  1318. $externalContact->setName($request->get('name'));
  1319. $externalContact->setCountry($em->getRepository('AppBundle:Country')->find($request->get('country')));
  1320. $externalContact->setCity($request->get('city'));
  1321. $externalContact->setNote('Resquesting information');
  1322.  
  1323. $em->persist($externalContact);
  1324. $em->flush();
  1325.  
  1326. $response = array();
  1327.  
  1328. } catch(\Exception $ex) {
  1329. $response = array(
  1330. 'error' => $ex->getMessage()
  1331. );
  1332. }
  1333.  
  1334. return new JsonResponse($response);
  1335. }
  1336.  
  1337. /**
  1338. * @ApiDoc(
  1339. * description="This method is used for listing all video packages.",
  1340. * statusCodes={
  1341. * 200="Returned when successful"
  1342. * }
  1343. * )
  1344. * @return JsonResponse
  1345. */
  1346. public function getVodPackagePlaylistAction()
  1347. {
  1348. $vodPackages = $this->getDoctrine()->getRepository('AppBundle:VodPackage')->findAll();
  1349.  
  1350. $response = array();
  1351. foreach ($vodPackages as $vodPackage) {
  1352.  
  1353. $vods = array();
  1354. foreach ($vodPackage->getVods() as $vod) {
  1355. array_push($vods, array(
  1356. 'video_id' => $vod->getId(),
  1357. 'video_name' => $vod->getTitle(),
  1358. 'category' => $vod->getGenre()->getName(),
  1359. 'category_id' => $vod->getGenre()->getId(),
  1360. 'duration' => $vod->getDuration(),
  1361. 'description' => $vod->getDescription()
  1362. ));
  1363. }
  1364.  
  1365. array_push($response, array(
  1366. 'vod_package_id' => $vodPackage->getId(),
  1367. 'logo' => $this->get('vich_uploader.templating.helper.uploader_helper')->asset($vodPackage, 'packageLogoFile'),
  1368. 'category_id' => $vodPackage->getVodGenre()->getId(),
  1369. 'category' => $vodPackage->getVodGenre()->getName(),
  1370. 'start' => $vodPackage->getStartTime(),
  1371. 'playlist_url' => $vodPackage->getLive(),
  1372. 'price' => $vodPackage->getPrice(),
  1373. 'server_timezone' => date_default_timezone_get(),
  1374. 'vods' => $vods
  1375. ));
  1376. }
  1377.  
  1378. return new JsonResponse($response);
  1379. }
  1380.  
  1381. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement