/** * @Extra\Route("/licenses/projects/create", name="licenses_project_create") * @Extra\Method({"GET", "POST"}) * @Extra\Template */ public function createAction(Request $request) { $entityManager = $this->container->get('doctrine.orm.default_entity_manager'); $licenseRepository = $entityManager->getRepository('Doctrine\\Bundle\\LicenseManagerBundle\\Entity\\License'); $licenses = $licenseRepository->findBy(array(), array('name' => 'ASC')); $command = new CreateProject(); $form = $this->createForm(new CreateProjectType(), $command, array('licenses' => $licenses)); if ($request->getMethod() === 'POST') { $form->bind($request); if ($form->isValid()) { $createProject = $form->getData(); $project = new Project($createProject->name); foreach ($createProject->url as $url) { $project->addRepository($url); } $project->setPageMessage($createProject->pageMessage); $project->setEmailMessage($createProject->emailMessage); $project->setSender($createProject->senderName, $createProject->senderMail); $project->setFromLicense($licenseRepository->find($createProject->fromLicense)); $project->setToLicense($licenseRepository->find($createProject->toLicense)); $entityManager->persist($project); $entityManager->flush(); $request->getSession()->getFlashBag()->set('success', 'You created a new license switch project. We will evaluate your request and respond timely.'); $mailer = $this->container->get('doctrine_license_manager.mailer'); $mailer->sendTextMessage($this->container->getParameter('mailer_sender'), $this->container->getParameter('mailer_admin_email'), 'New License Switch Project registered', sprintf("Hello!\n\nA new project was registered on License Switcher:\n\nName: %s\nURL: %s\nFrom %s To %s\nPage Message:\n\n%s\n\nE-Mail Message:\n\n%s", $createProject->name, implode(", ", $createProject->url), $project->getFromLicense()->getName(), $project->getToLicense()->getName(), $createProject->pageMessage, $createProject->emailMessage)); return $this->redirect($this->generateUrl('licenses_projects')); } } return array('form' => $form->createView()); }