Example #1
0
 /**
  * @Route("/exclude/{listUrl}", name="pool_exclude")
  * @Template()
  */
 public function excludeAction(Request $request, $listUrl)
 {
     $this->getPool($listUrl);
     if ($this->pool->getCreated()) {
         $this->get('event_dispatcher')->dispatch(PoolEvents::NEW_POOL_CREATED, new PoolEvent($this->pool));
         return $this->redirect($this->generateUrl('pool_created', ['listUrl' => $this->pool->getListurl()]));
     }
     if ($this->pool->getEntries()->count() <= 3) {
         $this->pool->setCreated(true);
         $this->get('doctrine.orm.entity_manager')->persist($this->pool);
         $this->get('intracto_secret_santa.entry_service')->shuffleEntries($this->pool);
         $this->get('doctrine.orm.entity_manager')->flush();
         $this->get('event_dispatcher')->dispatch(PoolEvents::NEW_POOL_CREATED, new PoolEvent($this->pool));
         return $this->redirect($this->generateUrl('pool_created', ['listUrl' => $this->pool->getListurl()]));
     }
     $form = $this->createForm(new PoolExcludeEntryType(), $this->pool);
     if ('POST' === $request->getMethod()) {
         $form->handleRequest($request);
         if ($form->isValid()) {
             $this->pool->setCreated(true);
             $this->get('doctrine.orm.entity_manager')->persist($this->pool);
             $this->get('intracto_secret_santa.entry_service')->shuffleEntries($this->pool);
             $this->get('doctrine.orm.entity_manager')->flush();
             $this->get('event_dispatcher')->dispatch(PoolEvents::NEW_POOL_CREATED, new PoolEvent($this->pool));
             return $this->redirect($this->generateUrl('pool_created', ['listUrl' => $this->pool->getListurl()]));
         }
     }
     return ['form' => $form->createView(), 'pool' => $this->pool];
 }
 public function testEntryShuffler()
 {
     $pool = new Pool();
     foreach ($pool->getEntries() as $defaultEntry) {
         $pool->removeEntry($defaultEntry);
     }
     $entry1 = new Entry();
     $entry1->setName('Entry 1');
     $pool->addEntrie($entry1);
     $entry2 = new Entry();
     $entry2->setName('Entry 2');
     $pool->addEntrie($entry2);
     $entry3 = new Entry();
     $entry3->setName('Entry 3');
     $pool->addEntrie($entry3);
     $entry4 = new Entry();
     $entry4->setName('Entry 4');
     $pool->addEntrie($entry4);
     $entry1->addExcludedEntry($entry2);
     $entry2->addExcludedEntry($entry3);
     $entry4->addExcludedEntry($entry1);
     $entry4->addExcludedEntry($entry2);
     $entryShuffler = new EntryShuffler();
     for ($i = 0; $i < 1000; $i++) {
         $shuffeledEntries = $entryShuffler->shuffleEntries($pool);
         $key = 0;
         foreach ($pool->getEntries() as $entry) {
             //check if we did not match excluded entry
             $this->assertNotContains($shuffeledEntries[$key], $entry->getExcludedEntries());
             //check if we have an entry matched
             $this->assertNotNull($shuffeledEntries[$key]);
             $key++;
         }
     }
 }
 public function testEntryShufflerCase6()
 {
     $pool = new Pool();
     foreach ($pool->getEntries() as $defaultEntry) {
         $pool->removeEntry($defaultEntry);
     }
     $fam0entry0 = new Entry();
     $fam0entry0->setName('Fam 0 Entry 0');
     $pool->addEntrie($fam0entry0);
     $fam0entry1 = new Entry();
     $fam0entry1->setName('Fam 0 Entry 1');
     $pool->addEntrie($fam0entry1);
     $fam0entry2 = new Entry();
     $fam0entry2->setName('Fam 0 Entry 2');
     $pool->addEntrie($fam0entry2);
     $fam0entry3 = new Entry();
     $fam0entry3->setName('Fam 0 Entry 3');
     $pool->addEntrie($fam0entry3);
     $fam0entry4 = new Entry();
     $fam0entry4->setName('Fam 0 Entry 4');
     $pool->addEntrie($fam0entry4);
     $fam0entry5 = new Entry();
     $fam0entry5->setName('Fam 0 Entry 5');
     $pool->addEntrie($fam0entry5);
     $fam0entry6 = new Entry();
     $fam0entry6->setName('Fam 0 Entry 6');
     $pool->addEntrie($fam0entry6);
     $fam0entry7 = new Entry();
     $fam0entry7->setName('Fam 0 Entry 7');
     $pool->addEntrie($fam0entry7);
     $fam0entry8 = new Entry();
     $fam0entry8->setName('Fam 0 Entry 8');
     $pool->addEntrie($fam0entry8);
     $fam0entry9 = new Entry();
     $fam0entry9->setName('Fam 0 Entry 9');
     $pool->addEntrie($fam0entry9);
     $fam1entry0 = new Entry();
     $fam1entry0->setName('Fam 1 Entry 0');
     $pool->addEntrie($fam1entry0);
     $fam1entry1 = new Entry();
     $fam1entry1->setName('Fam 1 Entry 1');
     $pool->addEntrie($fam1entry1);
     $fam1entry2 = new Entry();
     $fam1entry2->setName('Fam 1 Entry 2');
     $pool->addEntrie($fam1entry2);
     $fam1entry3 = new Entry();
     $fam1entry3->setName('Fam 1 Entry 3');
     $pool->addEntrie($fam1entry3);
     $fam1entry4 = new Entry();
     $fam1entry4->setName('Fam 1 Entry 4');
     $pool->addEntrie($fam1entry4);
     $fam1entry5 = new Entry();
     $fam1entry5->setName('Fam 1 Entry 5');
     $pool->addEntrie($fam1entry5);
     $fam1entry6 = new Entry();
     $fam1entry6->setName('Fam 1 Entry 6');
     $pool->addEntrie($fam1entry6);
     $fam1entry7 = new Entry();
     $fam1entry7->setName('Fam 1 Entry 7');
     $pool->addEntrie($fam1entry7);
     $fam1entry8 = new Entry();
     $fam1entry8->setName('Fam 1 Entry 8');
     $pool->addEntrie($fam1entry8);
     $fam1entry9 = new Entry();
     $fam1entry9->setName('Fam 1 Entry 9');
     $pool->addEntrie($fam1entry9);
     $fam0entry0->addExcludedEntry($fam1entry0);
     $fam0entry0->addExcludedEntry($fam1entry1);
     $fam0entry0->addExcludedEntry($fam1entry2);
     $fam0entry0->addExcludedEntry($fam1entry3);
     $fam0entry0->addExcludedEntry($fam1entry4);
     $fam0entry0->addExcludedEntry($fam1entry5);
     $fam0entry0->addExcludedEntry($fam1entry6);
     $fam0entry0->addExcludedEntry($fam1entry7);
     $fam0entry0->addExcludedEntry($fam1entry8);
     $fam0entry0->addExcludedEntry($fam1entry9);
     $fam0entry1->addExcludedEntry($fam1entry0);
     $fam0entry1->addExcludedEntry($fam1entry1);
     $fam0entry1->addExcludedEntry($fam1entry2);
     $fam0entry1->addExcludedEntry($fam1entry3);
     $fam0entry1->addExcludedEntry($fam1entry4);
     $fam0entry1->addExcludedEntry($fam1entry5);
     $fam0entry1->addExcludedEntry($fam1entry6);
     $fam0entry1->addExcludedEntry($fam1entry7);
     $fam0entry1->addExcludedEntry($fam1entry8);
     $fam0entry1->addExcludedEntry($fam1entry9);
     $fam0entry2->addExcludedEntry($fam1entry0);
     $fam0entry2->addExcludedEntry($fam1entry1);
     $fam0entry2->addExcludedEntry($fam1entry2);
     $fam0entry2->addExcludedEntry($fam1entry3);
     $fam0entry2->addExcludedEntry($fam1entry4);
     $fam0entry2->addExcludedEntry($fam1entry5);
     $fam0entry2->addExcludedEntry($fam1entry6);
     $fam0entry2->addExcludedEntry($fam1entry7);
     $fam0entry2->addExcludedEntry($fam1entry8);
     $fam0entry2->addExcludedEntry($fam1entry9);
     $fam0entry3->addExcludedEntry($fam1entry0);
     $fam0entry3->addExcludedEntry($fam1entry1);
     $fam0entry3->addExcludedEntry($fam1entry2);
     $fam0entry3->addExcludedEntry($fam1entry3);
     $fam0entry3->addExcludedEntry($fam1entry4);
     $fam0entry3->addExcludedEntry($fam1entry5);
     $fam0entry3->addExcludedEntry($fam1entry6);
     $fam0entry3->addExcludedEntry($fam1entry7);
     $fam0entry3->addExcludedEntry($fam1entry8);
     $fam0entry3->addExcludedEntry($fam1entry9);
     $fam0entry4->addExcludedEntry($fam1entry0);
     $fam0entry4->addExcludedEntry($fam1entry1);
     $fam0entry4->addExcludedEntry($fam1entry2);
     $fam0entry4->addExcludedEntry($fam1entry3);
     $fam0entry4->addExcludedEntry($fam1entry4);
     $fam0entry4->addExcludedEntry($fam1entry5);
     $fam0entry4->addExcludedEntry($fam1entry6);
     $fam0entry4->addExcludedEntry($fam1entry7);
     $fam0entry4->addExcludedEntry($fam1entry8);
     $fam0entry4->addExcludedEntry($fam1entry9);
     $fam0entry5->addExcludedEntry($fam1entry0);
     $fam0entry5->addExcludedEntry($fam1entry1);
     $fam0entry5->addExcludedEntry($fam1entry2);
     $fam0entry5->addExcludedEntry($fam1entry3);
     $fam0entry5->addExcludedEntry($fam1entry4);
     $fam0entry5->addExcludedEntry($fam1entry5);
     $fam0entry5->addExcludedEntry($fam1entry6);
     $fam0entry5->addExcludedEntry($fam1entry7);
     $fam0entry5->addExcludedEntry($fam1entry8);
     $fam0entry5->addExcludedEntry($fam1entry9);
     $fam0entry6->addExcludedEntry($fam1entry0);
     $fam0entry6->addExcludedEntry($fam1entry1);
     $fam0entry6->addExcludedEntry($fam1entry2);
     $fam0entry6->addExcludedEntry($fam1entry3);
     $fam0entry6->addExcludedEntry($fam1entry4);
     $fam0entry6->addExcludedEntry($fam1entry5);
     $fam0entry6->addExcludedEntry($fam1entry6);
     $fam0entry6->addExcludedEntry($fam1entry7);
     $fam0entry6->addExcludedEntry($fam1entry8);
     $fam0entry6->addExcludedEntry($fam1entry9);
     $fam0entry7->addExcludedEntry($fam1entry0);
     $fam0entry7->addExcludedEntry($fam1entry1);
     $fam0entry7->addExcludedEntry($fam1entry2);
     $fam0entry7->addExcludedEntry($fam1entry3);
     $fam0entry7->addExcludedEntry($fam1entry4);
     $fam0entry7->addExcludedEntry($fam1entry5);
     $fam0entry7->addExcludedEntry($fam1entry6);
     $fam0entry7->addExcludedEntry($fam1entry7);
     $fam0entry7->addExcludedEntry($fam1entry8);
     $fam0entry7->addExcludedEntry($fam1entry9);
     $fam0entry8->addExcludedEntry($fam1entry0);
     $fam0entry8->addExcludedEntry($fam1entry1);
     $fam0entry8->addExcludedEntry($fam1entry2);
     $fam0entry8->addExcludedEntry($fam1entry3);
     $fam0entry8->addExcludedEntry($fam1entry4);
     $fam0entry8->addExcludedEntry($fam1entry5);
     $fam0entry8->addExcludedEntry($fam1entry6);
     $fam0entry8->addExcludedEntry($fam1entry7);
     $fam0entry8->addExcludedEntry($fam1entry8);
     $fam0entry8->addExcludedEntry($fam1entry9);
     $fam0entry9->addExcludedEntry($fam1entry0);
     $fam0entry9->addExcludedEntry($fam1entry1);
     $fam0entry9->addExcludedEntry($fam1entry2);
     $fam0entry9->addExcludedEntry($fam1entry3);
     $fam0entry9->addExcludedEntry($fam1entry4);
     $fam0entry9->addExcludedEntry($fam1entry5);
     $fam0entry9->addExcludedEntry($fam1entry6);
     $fam0entry9->addExcludedEntry($fam1entry7);
     $fam0entry9->addExcludedEntry($fam1entry8);
     $fam0entry9->addExcludedEntry($fam1entry9);
     $fam1entry0->addExcludedEntry($fam0entry0);
     $fam1entry0->addExcludedEntry($fam0entry1);
     $fam1entry0->addExcludedEntry($fam0entry2);
     $fam1entry0->addExcludedEntry($fam0entry3);
     $fam1entry0->addExcludedEntry($fam0entry4);
     $fam1entry0->addExcludedEntry($fam0entry5);
     $fam1entry0->addExcludedEntry($fam0entry6);
     $fam1entry0->addExcludedEntry($fam0entry7);
     $fam1entry0->addExcludedEntry($fam0entry8);
     $fam1entry0->addExcludedEntry($fam0entry9);
     $fam1entry1->addExcludedEntry($fam0entry0);
     $fam1entry1->addExcludedEntry($fam0entry1);
     $fam1entry1->addExcludedEntry($fam0entry2);
     $fam1entry1->addExcludedEntry($fam0entry3);
     $fam1entry1->addExcludedEntry($fam0entry4);
     $fam1entry1->addExcludedEntry($fam0entry5);
     $fam1entry1->addExcludedEntry($fam0entry6);
     $fam1entry1->addExcludedEntry($fam0entry7);
     $fam1entry1->addExcludedEntry($fam0entry8);
     $fam1entry1->addExcludedEntry($fam0entry9);
     $fam1entry2->addExcludedEntry($fam0entry0);
     $fam1entry2->addExcludedEntry($fam0entry1);
     $fam1entry2->addExcludedEntry($fam0entry2);
     $fam1entry2->addExcludedEntry($fam0entry3);
     $fam1entry2->addExcludedEntry($fam0entry4);
     $fam1entry2->addExcludedEntry($fam0entry5);
     $fam1entry2->addExcludedEntry($fam0entry6);
     $fam1entry2->addExcludedEntry($fam0entry7);
     $fam1entry2->addExcludedEntry($fam0entry8);
     $fam1entry2->addExcludedEntry($fam0entry9);
     $fam1entry3->addExcludedEntry($fam0entry0);
     $fam1entry3->addExcludedEntry($fam0entry1);
     $fam1entry3->addExcludedEntry($fam0entry2);
     $fam1entry3->addExcludedEntry($fam0entry3);
     $fam1entry3->addExcludedEntry($fam0entry4);
     $fam1entry3->addExcludedEntry($fam0entry5);
     $fam1entry3->addExcludedEntry($fam0entry6);
     $fam1entry3->addExcludedEntry($fam0entry7);
     $fam1entry3->addExcludedEntry($fam0entry8);
     $fam1entry3->addExcludedEntry($fam0entry9);
     $fam1entry4->addExcludedEntry($fam0entry0);
     $fam1entry4->addExcludedEntry($fam0entry1);
     $fam1entry4->addExcludedEntry($fam0entry2);
     $fam1entry4->addExcludedEntry($fam0entry3);
     $fam1entry4->addExcludedEntry($fam0entry4);
     $fam1entry4->addExcludedEntry($fam0entry5);
     $fam1entry4->addExcludedEntry($fam0entry6);
     $fam1entry4->addExcludedEntry($fam0entry7);
     $fam1entry4->addExcludedEntry($fam0entry8);
     $fam1entry4->addExcludedEntry($fam0entry9);
     $fam1entry5->addExcludedEntry($fam0entry0);
     $fam1entry5->addExcludedEntry($fam0entry1);
     $fam1entry5->addExcludedEntry($fam0entry2);
     $fam1entry5->addExcludedEntry($fam0entry3);
     $fam1entry5->addExcludedEntry($fam0entry4);
     $fam1entry5->addExcludedEntry($fam0entry5);
     $fam1entry5->addExcludedEntry($fam0entry6);
     $fam1entry5->addExcludedEntry($fam0entry7);
     $fam1entry5->addExcludedEntry($fam0entry8);
     $fam1entry5->addExcludedEntry($fam0entry9);
     $fam1entry6->addExcludedEntry($fam0entry0);
     $fam1entry6->addExcludedEntry($fam0entry1);
     $fam1entry6->addExcludedEntry($fam0entry2);
     $fam1entry6->addExcludedEntry($fam0entry3);
     $fam1entry6->addExcludedEntry($fam0entry4);
     $fam1entry6->addExcludedEntry($fam0entry5);
     $fam1entry6->addExcludedEntry($fam0entry6);
     $fam1entry6->addExcludedEntry($fam0entry7);
     $fam1entry6->addExcludedEntry($fam0entry8);
     $fam1entry6->addExcludedEntry($fam0entry9);
     $fam1entry7->addExcludedEntry($fam0entry0);
     $fam1entry7->addExcludedEntry($fam0entry1);
     $fam1entry7->addExcludedEntry($fam0entry2);
     $fam1entry7->addExcludedEntry($fam0entry3);
     $fam1entry7->addExcludedEntry($fam0entry4);
     $fam1entry7->addExcludedEntry($fam0entry5);
     $fam1entry7->addExcludedEntry($fam0entry6);
     $fam1entry7->addExcludedEntry($fam0entry7);
     $fam1entry7->addExcludedEntry($fam0entry8);
     $fam1entry7->addExcludedEntry($fam0entry9);
     $fam1entry8->addExcludedEntry($fam0entry0);
     $fam1entry8->addExcludedEntry($fam0entry1);
     $fam1entry8->addExcludedEntry($fam0entry2);
     $fam1entry8->addExcludedEntry($fam0entry3);
     $fam1entry8->addExcludedEntry($fam0entry4);
     $fam1entry8->addExcludedEntry($fam0entry5);
     $fam1entry8->addExcludedEntry($fam0entry6);
     $fam1entry8->addExcludedEntry($fam0entry7);
     $fam1entry8->addExcludedEntry($fam0entry8);
     $fam1entry8->addExcludedEntry($fam0entry9);
     $fam1entry9->addExcludedEntry($fam0entry0);
     $fam1entry9->addExcludedEntry($fam0entry1);
     $fam1entry9->addExcludedEntry($fam0entry2);
     $fam1entry9->addExcludedEntry($fam0entry3);
     $fam1entry9->addExcludedEntry($fam0entry4);
     $fam1entry9->addExcludedEntry($fam0entry5);
     $fam1entry9->addExcludedEntry($fam0entry6);
     $fam1entry9->addExcludedEntry($fam0entry7);
     $fam1entry9->addExcludedEntry($fam0entry8);
     $fam1entry9->addExcludedEntry($fam0entry9);
     $entryShuffler = new EntryShuffler();
     for ($i = 0; $i < 10; ++$i) {
         $shuffeledEntries = $entryShuffler->shuffleEntries($pool);
         if (!$shuffeledEntries) {
             $this->markTestSkipped('Shuffler did not return a result in time, so skip test result');
         }
         $key = 0;
         foreach ($pool->getEntries() as $entry) {
             //check if we did not match excluded entry
             $this->assertNotContains($shuffeledEntries[$key], $entry->getExcludedEntries());
             //check if we have an entry matched
             $this->assertNotNull($shuffeledEntries[$key]);
             ++$key;
         }
     }
 }
Example #4
0
 /**
  * @param Pool $pool
  */
 public function sendPoolUpdatedMailsForPool(Pool $pool)
 {
     foreach ($pool->getEntries() as $entry) {
         $this->sendPoolUpdatedMailForEntry($entry);
     }
 }