protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->getContainer()->get('doctrine.orm.default_entity_manager'); $field_delimiter = "/\t/"; $row_delimiter = "/\n/"; $content = file_get_contents($input->getArgument('file')); $rows = preg_split($row_delimiter, $content); $field = $em->find('ClubBookingBundle:Field', 8); $user = $em->find('ClubUserBundle:User', 1); foreach ($rows as $line) { if (strlen($line) > 0) { list($name, $start, $stop, $interval_start, $interval_stop, $day) = preg_split($field_delimiter, $line); $day++; $start_time = new \DateTime($start . ' 00:00:00'); $stop_time = new \DateTime($stop . ' 23:59:59'); $t1 = new \DateTime(date('Y-m-d') . ' ' . $interval_start); $t2 = new \DateTime(date('Y-m-d') . ' ' . $interval_stop); $category = new \Club\BookingBundle\Entity\PlanCategory(); $category->setName($name); $category->setDescription($name); $em->persist($category); $plan = new \Club\BookingBundle\Entity\Plan(); $plan->setPlanCategory($category); $plan->setPeriodStart($start_time); $plan->setPeriodEnd($stop_time); $plan->setDay($day); $plan->setFirstDate($t1); $plan->setEndDate($t2); $plan->setUser($user); $plan->addField($field); $em->persist($plan); } } $em->flush(); }
/** * @Route("/new", defaults={"date" = false, "interval_id" = null}) * @Route("/new/{date}/{interval_id}", name="club_booking_plan_pre") * @Template() */ public function newAction($date, $interval_id = null) { $plan = new \Club\BookingBundle\Entity\Plan(); $plan->setUser($this->getUser()); $repeat = new \Club\BookingBundle\Entity\PlanRepeat(); $repeat->setPlan($plan); $plan->addPlanRepeat($repeat); $em = $this->getDoctrine()->getManager(); if ($date) { $date = new \DateTime($date); $interval = $em->find('ClubBookingBundle:Interval', $interval_id); $start = clone $date; $start->setTime($interval->getStartTime()->format('H'), $interval->getStartTime()->format('i'), $interval->getStartTime()->format('s')); $end = clone $date; $end->setTime($interval->getStopTime()->format('H'), $interval->getStopTime()->format('i'), $interval->getStopTime()->format('s')); $plan->setStart($start); $plan->setEnd($end); $plan->addField($interval->getField()); } $form = $this->createForm(new \Club\BookingBundle\Form\Plan(), $plan); if ($this->getRequest()->getMethod() == 'POST') { $form->bind($this->getRequest()); if ($form->isValid()) { $em->persist($plan); $em->flush(); $this->get('session')->getFlashBag()->add('notice', $this->get('translator')->trans('Your changes are saved.')); return $this->redirect($this->generateUrl('club_booking_adminplan_index')); } } return array('form' => $form->createView()); }