Example #1
0
 /**
  * @Route("/create", name="admin.settings.project.create")
  * @Template()
  */
 public function createAction(Request $request)
 {
     $breadcrumbs = $this->get("white_october_breadcrumbs");
     $breadcrumbs->addItem('Dashboard', $this->get("router")->generate("admin.frontend.dashboard"));
     $breadcrumbs->addItem('Settings', $this->get("router")->generate("admin.settings.settings.index"));
     $breadcrumbs->addItem('Project', $this->get("router")->generate("admin.settings.project.index"));
     $breadcrumbs->addItem('Create new project');
     /** @var  $em EntityManager */
     $em = $this->getDoctrine()->getManager();
     $currentDateTime = new \DateTime();
     $qb = $em->createQueryBuilder();
     $query = $qb->select('MAX(p.indexNum) AS max_index')->from('AdminFrontendBundle:Project', 'p')->where('Year(p.createdAt) = :year')->setParameter('year', $currentDateTime->format('Y'));
     $result = $query->getQuery()->getSingleResult();
     $maxIndex = 1;
     if ($result) {
         $maxIndex = $result['max_index'];
     }
     $prefix = $currentDateTime->format('y');
     $index = $maxIndex + 1;
     $indexFormat = sprintf("%03d", $index);
     $project = new Project();
     $project->setName($prefix . $indexFormat);
     $project->setTitle($prefix . $indexFormat);
     $project->setIndexNum($index);
     $project->setCreatedAt($currentDateTime);
     $form = $this->createForm(ProjectType::class, $project);
     $form->handleRequest($request);
     if ($form->isValid()) {
         /** @var  $project Project */
         $project = $form->getData();
         $em->persist($project);
         $em->flush();
         $projectLog = new ProjectLog();
         $projectLog->setProject($project);
         $projectLog->setUser($this->getUser());
         $projectLog->setCreatedAt(new \DateTime());
         $projectLog->setActive($project->isActive());
         $projectLog->setCustomer($project->getCustomer());
         $em->persist($projectLog);
         $em->flush();
         $this->addFlash('success', $this->get('translator')->trans('Project was create'));
         return $this->redirect($this->generateUrl('admin.settings.project.index'));
     }
     return ['form' => $form->createView()];
 }