/**
  *
  * @param string $attribute
  * @param \Tracker\Entity\Issue $issue
  * @param \Tracker\Entity\User $user
  * @return boolean
  * @throws \LogicException
  */
 protected function isGranted($attribute, $issue, $user = null)
 {
     // make sure there is a user object (i.e. that the user is logged in)
     if (!$user instanceof UserInterface) {
         return false;
     }
     // double-check that the User object is the expected entity.
     // It always will be, unless there is some misconfiguration of the
     // security system.
     if (!$user instanceof User) {
         throw new \LogicException('The user is somehow not our User class!');
     }
     // If the current user have administrator rights, we should return true
     if ($user->getIsAdmin()) {
         return true;
     }
     $project = $issue->getProject();
     switch ($attribute) {
         case self::VIEW:
             foreach ($project->getMembers() as $item) {
                 if ($item->getMember()->getId() === $user->getId()) {
                     return true;
                 }
             }
             break;
         case self::EDIT:
             break;
     }
     return false;
 }
 /**
  * Create issue
  *
  * @param Request $request
  * @param string $identifier
  */
 public function createAction(Request $request, $identifier)
 {
     if (!($project = $this->getRepository('Project')->findOneByIdentifier($identifier))) {
         $this->application->abort(404, 'Project not found!');
     }
     $this->denyAccessUnlessGranted('view', $project, 'You are not a member of this project!');
     $this->get('breadcrumbs')->add('Home', 'homepage')->add('Projects', 'projects_list')->add($project->getTitle())->add('Issues')->add('Manage issue');
     $entity = new Issue();
     $entity->setCreatedBy($this->getUser());
     $entity->setProject($project);
     $form = $this->get('form.factory')->create(new IssueType(), $entity);
     if ($form->handleRequest($request)->isValid()) {
         $entity = $form->getData();
         $this->persistAndFlush($entity);
         $this->addFlash('success', 'Issue created successfuly!');
         return $this->redirectToRoute('issues_list', array('identifier' => $project->getIdentifier()));
     }
     return $this->render('issues/create.twig', array('title' => $this->trans('title.page.issues.create'), 'form' => $form->createView()));
 }
 /**
  * Create issues
  */
 private function addIssues()
 {
     $createdBy = $this->entityManager->getReference('Tracker\\Entity\\User', 1);
     $project = $this->entityManager->getReference('Tracker\\Entity\\Project', 1);
     foreach (range(1, 3) as $number) {
         $priority = $this->entityManager->getReference('Tracker\\Entity\\Priority', $number);
         $status = $this->entityManager->getReference('Tracker\\Entity\\IssueStatus', $number);
         $tracker = $this->entityManager->getReference('Tracker\\Entity\\Tracker', $number);
         $entity = new Entity\Issue();
         $entity->setCreatedBy($createdBy);
         $entity->setProject($project);
         $entity->setSubject(sprintf('Issue #%d', $number));
         $entity->setDescription('Some description for this issue');
         $entity->setPriority($priority);
         $entity->setStatus($status);
         $entity->setTracker($tracker);
         $this->entityManager->persist($entity);
     }
 }