예제 #1
0
 public function createShow($show_name)
 {
     $show = new Show();
     $show->setName($show_name)->setCategory('drama')->setAuthorisedBy($this->getAuthoriseUser());
     $em = $this->getEntityManager();
     $em->persist($show);
     $em->flush();
     return $show;
 }
예제 #2
0
 public function testIsOwner_ExternalUserIsOwner()
 {
     $user = new User();
     $user->setEmail('*****@*****.**');
     $external_user = new ExternalUser();
     $external_user->setUser($user)->setUsername('testuser');
     $show = new Show();
     $show->setName('Test Show');
     $this->repository->expects($this->once())->method('aceExists')->with($user, $show)->will($this->returnValue(false));
     $this->assertFalse($this->aclProvider->isOwner($user, $show));
 }
예제 #3
0
 public function testCreateEventFromShows()
 {
     $s1 = new Show();
     $s1->setName('Test Show 1');
     $s1->setSlug('test-show-1');
     $p1 = new Performance();
     $p1->setStartDate(new \DateTime('2013-04-01'));
     $p1->setEndDate(new \DateTime('2013-04-02'));
     $p1->setTime(new \DateTime('19:30'));
     $p1->setShow($s1);
     $s1->addPerformance($p1);
     $s2 = new Show();
     $s2->setName('Test Show 2');
     $s2->setSlug('test-show-2');
     $p2 = new Performance();
     $p2->setStartDate(new \DateTime('2013-02-10'));
     $p2->setEndDate(new \DateTime('2013-02-15'));
     $p2->setTime(new \DateTime('19:45'));
     $p2->setShow($s2);
     $s2->addPerformance($p2);
     $p3 = new Performance();
     $p3->setStartDate(new \DateTime('2013-02-15'));
     $p3->setEndDate(new \DateTime('2013-02-15'));
     $p3->setTime(new \DateTime('14:30'));
     $p3->setShow($s2);
     $s2->addPerformance($p3);
     $events = $this->diaryHelper->createEventsFromShows(array($s1, $s2));
     $this->assertEquals(3, count($events));
     $this->assertEquals(new \DateTime('2013-04-01'), $events[0]->getStartDate());
     $this->assertEquals(new \DateTime('2013-02-10'), $events[1]->getStartDate());
     $this->assertEquals(new \DateTime('2013-02-15'), $events[2]->getStartDate());
 }
예제 #4
0
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $file = __DIR__ . '/../../Resources/data/shows.yml';
     $plays = Yaml::parse(file_get_contents($file));
     $max = count($plays) - 1;
     mt_srand(microtime(true));
     $start_date = new \DateTime('-6 months');
     $end_date = new \DateTime('+18 months');
     $diff = $end_date->diff($start_date, true);
     $total_weeks = $diff->days / 7;
     $this->person_repo = $manager->getRepository('ActsCamdramBundle:Person');
     $this->people_ids = array_map(function ($val) {
         return $val['id'];
     }, $this->person_repo->createQueryBuilder('p')->select('p.id')->getQuery()->getArrayResult());
     $this->venue_repo = $manager->getRepository('ActsCamdramBundle:Venue');
     $this->venue_ids = array_map(function ($val) {
         return $val['id'];
     }, $this->venue_repo->createQueryBuilder('v')->select('v.id')->getQuery()->getArrayResult());
     $this->society_repo = $manager->getRepository('ActsCamdramBundle:Society');
     $this->society_ids = array_map(function ($val) {
         return $val['id'];
     }, $this->society_repo->createQueryBuilder('s')->select('s.id')->getQuery()->getArrayResult());
     for ($i = 0; $i < 250; $i++) {
         $show = new Show();
         $play = $plays[mt_rand(0, $max)];
         $show->setName($play['name']);
         $show->setDescription($play['description']);
         $show->setAuthor($play['author']);
         $show->setCategory($play['category']);
         $show->setAuthorisedBy($this->getReference('adminuser'));
         $this->allocateSociety($show);
         $start = clone $start_date;
         $start->modify('+' . mt_rand(0, $total_weeks) . ' weeks');
         $manager->persist($show);
         //Use a random number to decide what sort of show it is...
         $type = mt_rand(0, 8);
         switch ($type) {
             case 0:
             case 1:
             case 2:
             case 3:
             case 4:
                 //A week-long run of a show
                 $offset = mt_rand(1, 3);
                 $start->modify('+' . $offset . ' days');
                 $end = clone $start;
                 $end->modify('+' . mt_rand(3, 7 - $offset) . ' days');
                 $p = $this->generatePerformance($show, $start, $end);
                 $this->allocateVenue($show);
                 $show->addPerformance($p);
                 $manager->persist($p);
                 break;
             case 5:
                 //A one-night show
                 $start->modify('+' . mt_rand(0, 6) . ' days');
                 $p = $this->generatePerformance($show, $start, $start);
                 $manager->persist($p);
                 $this->allocateVenue($show);
                 $show->addPerformance($p);
                 break;
             case 6:
                 //a muli-venue tour
                 $num_perfs = mt_rand(2, 9);
                 $start->modify('+' . mt_rand(0, 5) . ' days');
                 for ($j = 0; $j <= $num_perfs; $j++) {
                     $start->modify('+' . mt_rand(1, 3) . ' days');
                     $p = $this->generatePerformance($show, clone $start, clone $start);
                     $p->setShow($show);
                     $this->allocateVenue($p);
                     $show->addPerformance($p);
                     $manager->persist($p);
                 }
                 break;
             case 7:
             case 8:
                 //a multi-week show
                 $offset = mt_rand(1, 3);
                 $start->modify('+' . $offset . ' days');
                 $end = clone $start;
                 $end->modify('+' . mt_rand(3, 7 - $offset) . ' days');
                 $this->allocateVenue($show);
                 for ($j = 0; $j <= 2; $j++) {
                     $start->modify('+1 week');
                     $end->modify('+1 week');
                     $p = $this->generatePerformance($show, clone $start, clone $end);
                     $p->setShow($show);
                     $show->addPerformance($p);
                     $manager->persist($p);
                 }
                 break;
         }
         $roles = $this->generateRoles($play['characters'], $play['category'] == 'musical');
         foreach ($roles as $role) {
             $show->addRole($role);
             $role->setShow($show);
             $manager->persist($role);
         }
         if (mt_rand(0, 1) == 1) {
             $this->addAuditions($manager, $show);
         }
         if (mt_rand(0, 1) == 1) {
             $this->addApplications($manager, $show);
         }
         if (mt_rand(0, 1) == 1) {
             $this->addTechieAdverts($manager, $show);
         }
     }
     $manager->flush();
 }