예제 #1
0
    return $response->withRedirect((string) $uri, 301);
})->setName('admin_channel_delete');
$app->group('/admin/channels/{slug}', function () {
    $this->get('', function ($request, $response, $args) {
        $parsedBody = $request->getParsedBody();
        $channel = $this->get('tvlistings.channel.repository')->findOneBySlug($args['slug']);
        $listings = $this->get('tvlistings.listing.repository')->findBy($channel);
        $this->view->render($response, 'admin/show.html.twig', array('channel' => $channel, 'listings' => $listings));
        return $response;
    })->setName('admin_channel_show');
    $this->map(['GET', 'POST'], '/listings/new', function ($request, $response, $args) {
        $channel = $this->get('tvlistings.channel.repository')->findOneBySlug($args['slug']);
        if ($request->isPost()) {
            $parsedBody = $request->getParsedBody();
            $listingRepository = $this->get('tvlistings.listing.repository');
            $listing = new Listing($channel, $parsedBody['title'], new \DateTime($parsedBody['programDate']));
            $listing->programAt($parsedBody['programAt']);
            $listing->setDescription($parsedBody['description']);
            $listingRepository->persist($listing);
            if ($parsedBody['video_source']) {
                $videoProxyService = $this->get('tvlistings.video_proxy.service');
                $videoProxyUuid = $videoProxyService->createFromSource($parsedBody['video_source']);
                $listing->changeResourceLink($videoProxyUuid);
                $listingRepository->persist($listing);
            }
            $uri = $this->router->pathFor('admin_channel_show', array('slug' => $channel->getSlug()));
            return $response->withRedirect((string) $uri, 301);
        }
        $this->view->render($response, 'admin/Listing/new.html.twig', array('channel' => $channel));
        return $response;
    })->setName('admin_listing_new');
예제 #2
0
 /**
  * @test
  */
 public function it_should_change_program_date()
 {
     $listing = new Listing($this->channel, "News", new \DateTime("2015-11-28 18:00"));
     $this->assertEquals("2015-11-28 18:00", $listing->getProgramDate()->format('Y-m-d H:i'));
     $listing->changeProgramDate(new \DateTime());
     $this->assertEquals((new \DateTime())->format('Y-m-d'), $listing->getProgramDate()->format('Y-m-d'));
 }
 /**
  * @test
  */
 public function it_should_order_by_programmed_time()
 {
     $em = new DoctrineEntityManager($this->em);
     $channel = new Channel("MNB", "mnb.png");
     $em->persist($channel);
     $todayListing = new Listing($channel, "Morning News", new \DateTime());
     $todayListing->programAt('7:00');
     $em->persist($todayListing);
     $todayListing = new Listing($channel, "Afternoon News", new \DateTime());
     $todayListing->programAt('12:00');
     $em->persist($todayListing);
     $todayListing = new Listing($channel, "Evening News", new \DateTime());
     $todayListing->programAt('21:00');
     $em->persist($todayListing);
     $criteria = array('orderBy' => array('builder' => function ($alias) {
         return sprintf("%s.programDate", $alias);
     }, 'value' => 'ASC'));
     $listings = $em->findBy(Listing::class, $criteria);
     $this->assertEquals('7:00', $listings[0]->getProgrammedTime());
     $this->assertEquals("Morning News", $listings[0]->getTitle());
     $this->assertEquals('12:00', $listings[1]->getProgrammedTime());
     $this->assertEquals("Afternoon News", $listings[1]->getTitle());
 }