Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 /**
  * 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());
 }