Exemplo n.º 1
0
 /**
  * @param Season $season
  * @param array $ignore
  */
 public function buildFromPlanning(Season $season, array $ignore)
 {
     // Existing lessons
     $lessons = new ArrayCollection();
     foreach ($this->em->getRepository('AppBundle:Lesson')->findBySeason($season) as $l) {
         $lessons->add($l->getDate()->format('Y-m-d') . '-' . $l->getStart()->format('H-i') . '-' . $l->getLevel()->getId());
     }
     // Periods to ignore
     $ignorePeriods = new ArrayCollection();
     foreach ($ignore as $i) {
         foreach (new \DatePeriod($i['start'], new \DateInterval('P1D'), $i['stop']) as $d) {
             $ignorePeriods->add($d->format('Y-m-d'));
         }
         $ignorePeriods->add($i['stop']->format('Y-m-d'));
     }
     // Planning
     $planning = $this->em->getRepository('AppBundle:Planning')->findAll();
     foreach ($planning as $p) {
         $start = new \DateTime($season->getStart()->format('Y-m-d') . ' 00:00:00');
         $start->modify('+' . ($p->getWeekday() - $start->format('N')) . ' day');
         $stop = new \DateTime($season->getStop()->format('Y-m-d') . ' 23:59:59');
         foreach (new \DatePeriod($start, new \DateInterval('P1W'), $stop) as $date) {
             if ($ignorePeriods->contains($date->format('Y-m-d'))) {
                 continue;
             }
             if ($lessons->contains($date->format('Y-m-d') . '-' . $p->getStart()->format('H-i') . '-' . $p->getLevel()->getId())) {
                 continue;
             }
             $l = new Lesson();
             $l->setDate($date)->setDuration($p->getDuration())->setLevel($p->getLevel())->setStart($p->getStart());
             $this->em->persist($l);
         }
     }
     $this->em->flush();
 }
Exemplo n.º 2
0
 /**
  * @param Request $request
  * @param \DateTime $day
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  *
  * @Route("/lesson/add/{day}",
  *        name="app_lesson_add",
  *        methods={"GET","POST"},
  *        requirements={"day"="[0-9]{4}-[0-9]{2}-[0-9]{2}"})
  */
 public function addAction(Request $request, \DateTime $day)
 {
     // Lesson manager
     $lm = $this->get('app.lesson_manager');
     // Edit form
     $lesson = new Lesson();
     $lesson->setDate($day);
     $formEdit = $this->createForm(LessonType::class, $lesson);
     $formEdit->handleRequest($request);
     if ($formEdit->isSubmitted() && $formEdit->isValid()) {
         // Save data
         $lm->updateLesson($lesson);
         // Flash message
         $this->addFlash('success', $this->get('translator')->trans('lesson_add.success.added', [], 'lesson'));
         // Redirect
         return $this->redirectToRoute('app_lesson_day', ['day' => $lesson->getDate()->format('Y-m-d')]);
     }
     // Render
     return $this->render('lesson/add.html.twig', ['day' => $day, 'formEdit' => $formEdit->createView()]);
 }