private function newEntity($params) { // Create project $entity = new Project(); $entity->setName($params['name']); $entity->setDescription($params['description']); $entity->setSprintStartDay($params['sprint_start_day']); $entity->setSprintDuration($params['sprint_duration']); $this->manager->persist($entity); // Create default release $releaseStatus = $this->manager->getRepository('NeblionScrumBundle:ProcessStatus')->find(3); $release = new ProjectRelease(); $release->setProject($entity); $release->setName('Default'); $release->setDescription('Default release'); $release->setStart(new \DateTime('2012-09-01')); $release->setEnd(new \DateTime('2012-10-02')); $release->setStatus($releaseStatus); $this->manager->persist($release); // Create default feature $feature = new Feature(); $feature->setProject($entity); $feature->setName('Default'); $feature->setDescription('Default feature'); $feature->setColor('#ffffff'); $this->manager->persist($feature); }
private function newEntity($params) { $release = new ProjectRelease(); $release->setProject($params['project']); $release->setName($params['name']); $release->setDescription($params['description']); $release->setStart($params['start']); $release->setEnd($params['end']); $release->setStatus($params['status']); $this->manager->persist($release); }
/** * Creates a new ProjectRelease entity. * * @Route("/{id}/create", name="release_create") * @Method("post") * @Template("NeblionScrumBundle:ProjectRelease:new.html.twig") */ public function createAction($id) { // Check if user is authorized if (!$this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) { throw new AccessDeniedException(); } $user = $this->get('security.context')->getToken()->getUser(); $em = $this->getDoctrine()->getManager(); // Load project $project = $em->getRepository('NeblionScrumBundle:Project')->find($id); if (!$project) { throw $this->createNotFoundException('Unable to find Project entity.'); } // Check if user is really a member of this project and if he has right role $member = $em->getRepository('NeblionScrumBundle:Member')->isMemberOfProject($user->getId(), $project->getId()); if (!$member or !in_array($member->getRole()->getId(), array(1, 2))) { if (!$member->getAdmin()) { throw new AccessDeniedException(); } } // Load process status $status = $em->getRepository('NeblionScrumBundle:ProcessStatus')->find(1); $release = new ProjectRelease(); $release->setProject($project); $release->setStatus($status); $request = $this->getRequest(); $form = $this->createForm(new ProjectReleaseType(), $release); $form->bindRequest($request); // Check if ther is a release with no due date $hasReleaseWithNoDueDate = $em->getRepository('NeblionScrumBundle:ProjectRelease')->hasReleaseWithNoDueDate($project->getId()); if ($hasReleaseWithNoDueDate) { $form->addError(new FormError('A release with no due date is in progress, you could not create a new one!')); } // Check if the release does not cover an other release $coveringRelease = $em->getRepository('NeblionScrumBundle:ProjectRelease')->isCoveringRelease($project->getId(), $release->getStart(), $release->getEnd()); if ($coveringRelease) { $form->addError(new FormError('The release\'s dates overlap (' . $coveringRelease->getName() . ')')); } if ($form->isValid()) { $em->persist($release); // store activity $this->get('scrum_activity')->add($project, $user, 'create release ' . $release->getName(), $this->generateUrl('release_list', array('id' => $project->getId())), 'Project #' . $project->getId() . ' releases'); $em->flush(); // Set flash message $this->get('session')->getFlashBag()->add('success', 'Release was created with success!'); return $this->redirect($this->generateUrl('release_list', array('id' => $project->getId()))); } return array('project' => $project, 'release' => $release, 'form' => $form->createView()); }