Example #1
0
 /**
  * @Route("/adm/event_/{eventId}", name = "admin_event_edit")
  * @Template("LearningMainBundle:Admin:event_.html.twig")
  */
 public function editAction($eventId)
 {
     $request = $this->getRequest();
     $event = $this->getDoctrine()->getManager()->getRepository('LearningMainBundle:Event')->findOneById($eventId);
     if (!($event->getAuthor() == $this->getUser() or $event->getCathedra() == $this->getUser()->getCathedra() or $event->getOrganization() == $this->getUser()->getOrganization())) {
         $event = null;
     }
     /**
      * @todo Можно оставить так, но вылетать с критической ошибкой не есть хорошо
      */
     $country = $this->getDoctrine()->getRepository('LearningMainBundle:Country')->findOneById(1);
     $regions = $this->getDoctrine()->getRepository('LearningMainBundle:Region')->findByCountry($country);
     $cities = $this->getDoctrine()->getRepository('LearningMainBundle:City')->findByRegion($regions);
     $cathedra = $this->getDoctrine()->getRepository('LearningMainBundle:Cathedra')->findAll();
     $university = $this->getDoctrine()->getRepository('LearningMainBundle:University')->findAll();
     $organizations = $this->getDoctrine()->getRepository('LearningMainBundle:Organization')->findAll();
     $specializations = $this->getDoctrine()->getRepository('LearningMainBundle:Specialization')->findAll();
     if ($request->isMethod('POST')) {
         $em = $this->getDoctrine()->getManager();
         $event->setTitle($request->request->get('title'));
         $event->setCode($request->request->get('code'));
         $event->setPrice($request->request->get('price'));
         $event->setRegion($this->getDoctrine()->getRepository('LearningMainBundle:Region')->findOneById($request->request->get('region')));
         $event->setCity($this->getDoctrine()->getRepository('LearningMainBundle:City')->findOneById($request->request->get('city')));
         $event->setIsState($request->request->get('isState'));
         /* Для гос учреждений */
         $event->setUniversity($this->getDoctrine()->getRepository('LearningMainBundle:University')->findOneById($request->request->get('university')));
         $event->setCathedra($this->getDoctrine()->getRepository('LearningMainBundle:Cathedra')->findOneById($request->request->get('cathedra')));
         $event->setCountHour($request->request->get('countHour'));
         /* Для организаций */
         $event->setOrganization($this->getDoctrine()->getRepository('LearningMainBundle:Organization')->findOneById($request->request->get('organization')));
         /* -- */
         $event->setForm($request->request->get('form'));
         $event->setAuthor($this->getUser());
         $event->setTimes($request->request->get('times'));
         $event->setPlace($request->request->get('place'));
         $event->setBalls($request->request->get('balls'));
         $event->setEnabled($request->request->get('enabled'));
         $event->setKeywords($request->request->get('keywords'));
         $event->setDescription($request->request->get('description'));
         $event->setBody($request->request->get('text'));
         $event->setContacts($request->request->get('contacts'));
         $event->setContactsBid($request->request->get('contactsBid'));
         if ($request->request->get('diplom1')) {
             $diplom = '1';
         } else {
             $diplom = '0';
         }
         if ($request->request->get('diplom2')) {
             $diplom .= '1';
         } else {
             $diplom .= '0';
         }
         if ($request->request->get('diplom3')) {
             $diplom .= '1';
         } else {
             $diplom .= '0';
         }
         $event->setDiplom($diplom);
         $em->flush($event);
         $em->refresh($event);
         $this->setSpecialization($event, $request->request->get('specializations'));
         $starts = $request->request->get('starts');
         $ends = $request->request->get('ends');
         for ($i = 1; $i <= count($starts); $i++) {
             if ($starts[$i] != '' and $ends[$i] != '') {
                 $date = new EventDate();
                 $tmpStarts = new \DateTime($starts[$i]);
                 $tmpEnds = new \DateTime($ends[$i]);
                 $date->setEvent($event);
                 $date->setStarts($tmpStarts);
                 $date->setEnds($tmpEnds);
                 $em->persist($date);
                 $em->flush();
             }
         }
         $files = $request->files->get('filedoc');
         if (!is_dir('upload/events')) {
             mkdir('upload/events', 0775);
         }
         $j = 1;
         foreach ($files as $file) {
             if ($file != NULL) {
                 $origName = $file->getClientOriginalName();
                 $format = substr($origName, strrpos($origName, '.'));
                 $name = substr($origName, 0, strlen($origName) - 4);
                 $name .= '_' . time() . $format;
                 if ($format != '.rar' && $format != '.pdf' && $format != '.doc' && $format != '.docx' && $format != '.zip' && $format != '.jpg' && $format != '.png' && $format != '.xls' && $format != '.xlsx' && $format != '.jpeg') {
                     $error = 'Ошибка сохранения: недопустимое расширение файла (разрешены rar, zip, pdf, doc, docx, jpg, jpeg, png)';
                     return $this->redirect($this->generateUrl('admin_event_edit', array('eventId' => $event->getId(), 'error' => $error)));
                 }
                 $file->move('upload/events/', $name);
                 $EventFile = new File();
                 $EventFile->setEvent($event);
                 $EventFile->setFiledoc($name);
                 $EventFile->setTitle($request->request->get('filename')[$j]);
                 $em->persist($EventFile);
                 $em->flush();
             }
             $j++;
         }
         $em->refresh($event);
     }
     $specialtyTmp = $event->getSpecializations();
     $spec_act = array();
     if ($specialtyTmp) {
         foreach ($specialtyTmp as $v) {
             $index = '' . $v->getId() . '';
             $spec_act[$index] = true;
         }
     }
     return array('event' => $event, 'regions' => $regions, 'cathedra' => $cathedra, 'university' => $university, 'organizations' => $organizations, 'specializations' => $specializations, 'spec_act' => $spec_act, 'cities' => $cities);
 }