/** * @Route("/{id}") * @Template() */ public function indexAction(\Club\BookingBundle\Entity\Field $field) { $data = array('same_layout_every_day' => $field->getSameLayoutEveryDay()); $form = $this->createFormBuilder($data)->add('same_layout_every_day', 'checkbox', array('required' => false))->getForm(); $data_all = $this->getIntervalDefaultArray($field, 'all'); $data_monday = $this->getIntervalDefaultArray($field, 'monday'); $data_tuesday = $this->getIntervalDefaultArray($field, 'tuesday'); $data_wednesday = $this->getIntervalDefaultArray($field, 'wednesday'); $data_thursday = $this->getIntervalDefaultArray($field, 'thursday'); $data_friday = $this->getIntervalDefaultArray($field, 'friday'); $data_saturday = $this->getIntervalDefaultArray($field, 'saturday'); $data_sunday = $this->getIntervalDefaultArray($field, 'sunday'); $form_all = $this->getIntervalForm($data_all, 'all'); $form_monday = $this->getIntervalForm($data_monday, 'monday'); $form_tuesday = $this->getIntervalForm($data_tuesday, 'tuesday'); $form_wednesday = $this->getIntervalForm($data_wednesday, 'wednesday'); $form_thursday = $this->getIntervalForm($data_thursday, 'thursday'); $form_friday = $this->getIntervalForm($data_friday, 'friday'); $form_saturday = $this->getIntervalForm($data_saturday, 'saturday'); $form_sunday = $this->getIntervalForm($data_sunday, 'sunday'); if ($this->getRequest()->getMethod() == 'POST') { $em = $this->getDoctrine()->getManager(); $form->bind($this->getRequest()); if ($form->isValid()) { $data = $form->getData(); $field->setSameLayoutEveryDay($data['same_layout_every_day']); if ($data['same_layout_every_day']) { $form_all->bind($this->getRequest()); if ($form_all->isValid()) { $d = $form_all->getData(); $fl = json_encode(array('all' => $d)); if (md5($fl) != md5($field->getFieldLayout())) { for ($day = 1; $day <= 7; $day++) { $intervals = preg_split("/\n/", $d['available_timeslots']); foreach ($intervals as $interval) { $interval = trim($interval); $this->buildInterval($field, $day, $interval); } } } $this->post($field, $fl); $em->flush(); return $this->redirect($this->generateUrl('club_booking_adminfield_index')); } } else { // not all in the same day $form_monday->bind($this->getRequest()); $form_tuesday->bind($this->getRequest()); $form_wednesday->bind($this->getRequest()); $form_thursday->bind($this->getRequest()); $form_friday->bind($this->getRequest()); $form_saturday->bind($this->getRequest()); $form_sunday->bind($this->getRequest()); $fl = json_encode(array('monday' => $form_monday->getData(), 'tuesday' => $form_tuesday->getData(), 'wednesday' => $form_wednesday->getData(), 'thursday' => $form_thursday->getData(), 'friday' => $form_friday->getData(), 'saturday' => $form_saturday->getData(), 'sunday' => $form_sunday->getData())); if (md5($fl) != md5($field->getFieldLayout())) { for ($day = 1; $day <= 7; $day++) { switch ($day) { case 1: $d = $form_monday->getData(); break; case 2: $d = $form_tuesday->getData(); break; case 3: $d = $form_wednesday->getData(); break; case 4: $d = $form_thursday->getData(); break; case 5: $d = $form_friday->getData(); break; case 6: $d = $form_saturday->getData(); break; case 7: $d = $form_sunday->getData(); break; } $intervals = preg_split("/\n/", $d['available_timeslots']); foreach ($intervals as $interval) { $interval = trim($interval); $this->buildInterval($field, $day, $interval); } } } $this->post($field, $fl); $em->flush(); return $this->redirect($this->generateUrl('club_booking_adminfield_index')); } } } return array('field' => $field, 'form' => $form->createView(), 'form_all' => $form_all->createView(), 'form_monday' => $form_monday->createView(), 'form_tuesday' => $form_tuesday->createView(), 'form_wednesday' => $form_wednesday->createView(), 'form_thursday' => $form_thursday->createView(), 'form_friday' => $form_friday->createView(), 'form_saturday' => $form_saturday->createView(), 'form_sunday' => $form_sunday->createView()); }