コード例 #1
0
 /**
  * @Route("/protocol/{protocol_id}/monitoring/{monitoring_action_id}", name="protocol_new_monitoring_that_not_amendment")
  * @Template()
  */
 public function monitoringCreateThatNotAmendmentAction($protocol_id, $monitoring_action_id)
 {
     $output = array();
     $request = $this->getRequest();
     $session = $request->getSession();
     $translator = $this->get('translator');
     $em = $this->getDoctrine()->getManager();
     $user = $this->get('security.token_storage')->getToken()->getUser();
     $util = new Util($this->container, $this->getDoctrine());
     $protocol_repository = $em->getRepository('Proethos2ModelBundle:Protocol');
     $monitoring_action_repository = $em->getRepository('Proethos2ModelBundle:MonitoringAction');
     $upload_type_repository = $em->getRepository('Proethos2ModelBundle:UploadType');
     $submission_upload_repository = $em->getRepository('Proethos2ModelBundle:SubmissionUpload');
     $user_repository = $em->getRepository('Proethos2ModelBundle:User');
     // getting the current submission
     $protocol = $protocol_repository->find($protocol_id);
     $output['protocol'] = $protocol;
     if (!$protocol) {
         throw $this->createNotFoundException($translator->trans('No protocol found'));
     }
     if (!$protocol->getMainSubmission()->isOwner($user)) {
         throw $this->createNotFoundException($translator->trans('You don\'t have access to do this'));
     }
     $monitoring_action = $monitoring_action_repository->find($monitoring_action_id);
     $output['monitoring_action'] = $monitoring_action;
     $submission = $protocol->getMainSubmission();
     $output['submission'] = $submission;
     $upload_types = $upload_type_repository->findByStatus(true);
     $output['upload_types'] = $upload_types;
     if (!$monitoring_action) {
         throw $this->createNotFoundException($translator->trans('Monitoring action does not exist'));
     }
     // checking if was a post request
     if ($this->getRequest()->isMethod('POST')) {
         // getting post data
         $post_data = $request->request->all();
         $file = $request->files->get('new-atachment-file');
         if (!empty($file)) {
             if (!isset($post_data['new-atachment-type']) or empty($post_data['new-atachment-type'])) {
                 $session->getFlashBag()->add('error', $translator->trans("Field 'new-atachment-type' is required."));
                 return $output;
             }
             $upload_type = $upload_type_repository->find($post_data['new-atachment-type']);
             if (!$upload_type) {
                 throw $this->createNotFoundException($translator->trans('No upload type found'));
                 return $output;
             }
             $submission_upload = new SubmissionUpload();
             $submission_upload->setSubmission($submission);
             $submission_upload->setUploadType($upload_type);
             $submission_upload->setUser($user);
             $submission_upload->setFile($file);
             $submission_upload->setSubmissionNumber($submission->getNumber());
             $submission_upload->setIsMonitoringAction(true);
             $em = $this->getDoctrine()->getManager();
             $em->persist($submission_upload);
             $em->flush();
             $submission->addAttachment($submission_upload);
             $em = $this->getDoctrine()->getManager();
             $em->persist($submission);
             $em->flush();
             $session->getFlashBag()->add('success', $translator->trans("File uploaded with sucess."));
             return $this->redirectToRoute('protocol_new_monitoring_that_not_amendment', array('protocol_id' => $protocol_id, 'monitoring_action_id' => $monitoring_action_id), 301);
         }
         if (isset($post_data['delete-attachment-id']) and !empty($post_data['delete-attachment-id'])) {
             $submission_upload = $submission_upload_repository->find($post_data['delete-attachment-id']);
             if ($submission_upload) {
                 $em->remove($submission_upload);
                 $em->flush();
                 $session->getFlashBag()->add('success', $translator->trans("File removed with sucess."));
                 return $output;
             }
         }
         // checking required files
         foreach (array('monitoring-action', 'justification') as $field) {
             if (!isset($post_data[$field]) or empty($post_data[$field])) {
                 $session->getFlashBag()->add('error', $translator->trans("Field '%field%' is required.", array("%field%" => $field)));
                 return $output;
             }
         }
         foreach ($protocol->getMainSubmission()->getAttachments() as $submission_upload) {
             $submission_upload->setIsMonitoringAction(false);
             $em->persist($submission_upload);
             $em->flush();
         }
         $protocol->setMonitoringAction($monitoring_action);
         $em->persist($protocol);
         $em->flush();
         // setting the Rejected status
         $protocol->setStatus("S");
         $protocol->setUpdatedIn(new \DateTime());
         // setting protocool history
         $message = $translator->trans("New amendment submited by");
         $message .= ' "' . $user . '" ';
         $message .= $translator->trans("with this justification:");
         $message .= ' "' . $post_data['justification'] . '"';
         $protocol_history = new ProtocolHistory();
         $protocol_history->setProtocol($protocol);
         $protocol_history->setMessage($message);
         $em->persist($protocol_history);
         $em->flush();
         // sending email
         $baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
         $url = $baseurl . $this->generateUrl('protocol_show_protocol', array("protocol_id" => $protocol->getId()));
         $recipients = array();
         foreach ($user_repository->findAll() as $secretary) {
             if (in_array("secretary", $secretary->getRolesSlug())) {
                 $recipients[] = $secretary;
             }
         }
         foreach ($recipients as $recipient) {
             $message = \Swift_Message::newInstance()->setSubject("[proethos2] " . $translator->trans("A new monitoring action has been submitted."))->setFrom($util->getConfiguration('committee.email'))->setTo($recipient->getEmail())->setBody($translator->trans("Hello!") . "<br>" . "<br>" . $translator->trans("A new monitoring action has been submitted. Access the link below for more details") . ":" . "<br>" . "<br>{$url}" . "<br>" . "<br>" . $translator->trans("Regards") . "," . "<br>" . $translator->trans("Proethos2 Team"), 'text/html');
             $send = $this->get('mailer')->send($message);
         }
         $session->getFlashBag()->add('success', $translator->trans("Amendment submitted with success!"));
         return $this->redirectToRoute('crud_investigator_protocol_list', array(), 301);
     }
     return $output;
 }