Пример #1
0
 /**
  * @Route("/issue/edit/{id}/{project_id}", name="_editIssues")
  * @Template("TrackersBundle:Issues:edit.html.twig")
  */
 public function editAction($id, $project_id)
 {
     $issue = new Project_issues();
     $repositorys = $this->getDoctrine()->getRepository('TrackersBundle:Project_issues');
     if ($this->getRequest()->getMethod() == 'POST') {
         $requestData = $this->getRequest()->request;
         $form = $requestData->get('form');
         $assignedTo = $requestData->get('assigned_to');
         $date = $requestData->get('date');
         $time = $time = '0:0:0';
         // $requestData->get('time');
         $arr_date = explode('-', $date);
         $arr_time = explode(':', $time);
         $date_time = new \DateTime("now");
         $date_time->setDate($arr_date[0], $arr_date[1], $arr_date[2]);
         $date_time->setTime($arr_time[0], $arr_time[1], $arr_time[2]);
         $issue = $repositorys->find($id);
         $issue->setTitle($form['title']);
         $issue->setDescription($form['description']);
         $issue->setEndTime($date_time);
         $issue->setStatus($form['status']);
         $issue->setModified(new \DateTime("now"));
         $issue->setProjectId($project_id);
         $issue->setCreatedBy($this->getUser()->getId());
         $em = $this->getDoctrine()->getManager();
         $em->persist($issue);
         $em->flush();
         $repository_attachments = $this->getDoctrine()->getRepository('TrackersBundle:Project_issue_assignments');
         $attachments = $repository_attachments->findBy(array('issueId' => $issue->getId()));
         // delete user attachments
         if (!empty($attachments)) {
             foreach ($attachments as $attachment) {
                 $repository_attachments = $this->getDoctrine()->getRepository('TrackersBundle:Project_issue_assignments');
                 $em = $this->getDoctrine()->getManager();
                 $user_attachments = $repository_attachments->find($attachment->getId());
                 $em->remove($user_attachments);
                 $em->flush();
             }
         }
         $users_activity = new Users_activity();
         $users_activity->setUserId($this->getUser()->getId());
         $users_activity->setParentId($project_id);
         $users_activity->setItemId($issue->getId());
         $users_activity->setTypeId(5);
         $users_activity->setCreatedAt(new \DateTime("now"));
         $em->persist($users_activity);
         $em->flush();
         if (!empty($assignedTo)) {
             foreach ($assignedTo as $assigned) {
                 $project_issue_assignments = new Project_issue_assignments();
                 $project_issue_assignments->setUserId($assigned);
                 $project_issue_assignments->setIssueId($issue->getId());
                 $em->persist($project_issue_assignments);
                 $em->flush();
                 $repository = $this->getDoctrine()->getRepository('TrackersBundle:UserDetail');
                 $users = $repository->findBy(array('user_id' => $this->getUser()->getId()));
                 $user = $users[0];
                 $notifications = new Notifications();
                 $notifications->setUserId($assigned);
                 $notifications->setIssueId($issue->getId());
                 $notifications->setProjectId($project_id);
                 $notifications->setCreated(new \DateTime("now"));
                 $notifications->setIsRead(false);
                 $notifications->setText('You have reassign issue with title ' . $form['title'] . ' from ' . $user->getFirstname() . ' ' . $user->getLastname());
                 $em->persist($notifications);
                 $em->flush();
             }
         }
         $this->get('session')->getFlashBag()->add('notice', 'Issue is successfully edited!');
     }
     $em = $this->getDoctrine()->getEntityManager();
     $query = $em->createQuery("SELECT n.firstname , n.lastname ,n.user_id FROM TrackersBundle:UserDetail n, TrackersBundle:User_projects u WHERE  u.userId = n.user_id AND u.projectId = :project_id")->setParameter('project_id', $project_id);
     $entities = $query->getResult();
     $arr = array();
     $issues_id = $repositorys->find($id);
     // ---- load array mutil select
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:Project_issue_assignments');
     $assignments = $repository->findBy(array('issueId' => $id));
     foreach ($entities as $post) {
         $is_select = false;
         foreach ($assignments as $assign) {
             if ($post['user_id'] == $assign->getUserId()) {
                 $is_select = true;
                 break;
             }
         }
         $arr[] = array('id' => $post['user_id'], 'fullName' => $post['firstname'] . " " . $post['lastname'], 'selected' => $is_select);
     }
     $assignedToOld = $issues_id->getassignedTo();
     // set form
     $issue->setTitle($issues_id->getTitle());
     $issue->setDescription($issues_id->getDescription());
     $issue->setStatus($issues_id->getStatus());
     $form = $this->createFormBuilder($issue)->add('title', 'text', array('label' => 'Tile', 'required' => true))->add('description', 'textarea', array('required' => false, 'label' => 'Description', 'attr' => array('class' => 'editor', 'id' => 'editor')))->add('status', 'choice', array('choices' => array('OPEN' => 'OPEN', 'HOLD' => 'HOLD', 'INPROGRESS' => 'INPROGRESS', 'CLOSED' => 'CLOSED', 'FINISHED' => 'FINISHED'), 'preferred_choices' => array($issues_id->getStatus()), 'label' => 'Status'))->getForm();
     return array('form' => $form->createView(), 'project_id' => $project_id, 'assignedTo' => $assignedToOld, 'assignedtos' => $arr, 'endtime' => $issues_id->getEndTime(), 'date' => $issues_id->getEndTime()->format('Y-m-d'), 'time' => $issues_id->getEndTime()->format('H:i:s'));
 }
 /**
  * @Route("/savecomment", name="_savecomment")
  */
 public function saveCommentAction()
 {
     $requestData = $this->getRequest()->request;
     $comment = $requestData->get('comment');
     $issue_id = $requestData->get('issue_id');
     $project_id = $requestData->get('project_id');
     $file_id = $requestData->get('file_id');
     $projects_issues_comments = new Projects_issues_comments();
     $projects_issues_comments->setCreatedBy($this->getUser()->getId());
     $projects_issues_comments->setProjectId($project_id);
     $projects_issues_comments->setIssueId($issue_id);
     $projects_issues_comments->setComment($comment);
     $projects_issues_comments->setCreatedAt(new \DateTime("now"));
     $em = $this->getDoctrine()->getManager();
     $em->persist($projects_issues_comments);
     $em->flush();
     $users_activity = new Users_activity();
     $users_activity->setUserId($this->getUser()->getId());
     $users_activity->setParentId($project_id);
     $users_activity->setItemId($issue_id);
     $users_activity->setTypeId(2);
     $users_activity->setActionId($projects_issues_comments->getId());
     $users_activity->setCreatedAt(new \DateTime("now"));
     $em->persist($users_activity);
     $em->flush();
     if (!empty($file_id)) {
         foreach ($file_id as $file) {
             $repository = $this->getDoctrine()->getRepository('TrackersBundle:Projects_issues_attachments');
             $files = $repository->find($file);
             $files->setCommentId($projects_issues_comments->getId());
             $em->persist($files);
             $em->flush();
         }
     }
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:UserDetail');
     $users = $repository->findBy(array('user_id' => $this->getUser()->getId()));
     $user = $users[0];
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:Projects');
     $project = $repository->find($project_id);
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:Project_issues');
     $issue = $repository->find($issue_id);
     // Get user detail
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:UserDetail');
     $users = $repository->findBy(array('user_id' => $this->getUser()));
     $user = $users[0];
     $repository_attachments = $this->getDoctrine()->getRepository('TrackersBundle:Project_issue_assignments');
     $attachments = $repository_attachments->findBy(array('issueId' => $issue->getId()));
     // notifiaction user attachment
     $notifications = new Notifications();
     $text = $user->getFirstname() . ' ' . $user->getLastname() . " is comment issue with content " . $comment;
     // send user create project----
     if ($this->getUser()->getId() != $project->getOwnerId()) {
         $notifications = new Notifications();
         $notifications->setUserId($project->getOwnerId());
         $notifications->setIssueId($issue->getId());
         $notifications->setProjectId($project_id);
         $notifications->setCreated(new \DateTime("now"));
         $notifications->setIsRead(false);
         $notifications->setText($text);
         $em->persist($notifications);
         $em->flush();
     }
     // send user do issues----
     if (!empty($attachments)) {
         foreach ($attachments as $attachment) {
             if ($this->getUser()->getId() != $attachment->getUserId()) {
                 $notifications = new Notifications();
                 $notifications->setUserId($attachment->getUserId());
                 $notifications->setIssueId($issue->getId());
                 $notifications->setProjectId($project_id);
                 $notifications->setCreated(new \DateTime("now"));
                 $notifications->setIsRead(false);
                 $notifications->setText($text);
                 $em->persist($notifications);
                 $em->flush();
             }
         }
     }
     $repository = $this->getDoctrine()->getRepository('TrackersBundle:UserDetail');
     $users = $repository->findBy(array('user_id' => $this->getUser()->getId()));
     $user = $repository->find($users[0]->getId());
     $arr_comment = array('full_name' => $user->getFirstname() . " " . $user->getLastname(), 'created' => $projects_issues_comments->getCreatedAt(), 'comment' => $projects_issues_comments->getComment());
     echo json_encode($arr_comment);
     die;
 }