예제 #1
0
 /**
  * Показывает форму отправки/редактирования сообщения если HTTP-метод GET. Обрабатывает форму если HTTP-метод POST.
  *
  * @Route("/messages/compose/{recipientId}/{box}/{id}", name = "compose_message", requirements = {"recipientId" = "\d+", "id" = "\d+"})
  * @Route("/messages/edit/{messageId}", name = "edit_message", requirements = {"messageId" = "\d+"})
  * @Secure(roles = "ROLE_STUDENT")
  */
 public function messageFormAction($recipientId = null, $messageId = null, $id = null, $box = null)
 {
     $em = $this->getDoctrine()->getManager();
     $request = $this->getRequest();
     if ($messageId) {
         $message = $em->getRepository('EvrikaMainBundle:PrivateMessage')->findMessage($this->getUser(), $messageId);
         if (!$message->isDraft()) {
             throw $this->createNotFoundException('Невозможно редактировать уже отправленные сообщения.');
         }
         $recipient = $message->getRecipient();
     } else {
         $recipient = $em->find('EvrikaMainBundle:User', $recipientId);
         if ($recipient) {
             $message = new PrivateMessage();
             if ($recipient->getCompany()) {
                 $message->setCompanyRecipient($recipient->getCompany());
             } else {
                 $message->setRecipient($recipient);
             }
             $message->setReadmsg(false);
         } else {
             throw $this->createNotFoundException('Невозможно редактировать уже отправленные сообщения.');
         }
     }
     if ($this->getUser()->getCompany()) {
         $message->setCompanySender($this->getUser()->getCompany());
     } else {
         $message->setSender($this->getUser());
     }
     $messageForm = $this->createFormBuilder($message)->add('header', null, array('label' => 'Тема'))->add('body', 'textarea', array('label' => 'Текст сообщения'))->add('draft', null, array('label' => 'Сохранить как черновик, не отправляя', 'required' => false))->getForm();
     if ($request->isMethod('POST')) {
         $messageForm->bind($request);
         if ($messageForm->isValid()) {
             $persisted = false;
             if (!$message->getId()) {
                 $em->persist($message);
                 $em->flush($message);
                 $em->refresh($message);
                 $persisted = true;
             } else {
                 $em->flush($message);
             }
             # если новое сообщение создано - создаем уведомление для получателя
             if ($persisted) {
                 $em->refresh($message);
                 $this->get('evrika.notice_manager')->userSendMessage($message, $recipient);
             }
             return $this->redirect($this->generateUrl('show_message', array('box' => 'sent', 'id' => $message->getId())) . '#msg_' . $message->getId());
         }
     }
     return $this->render('EvrikaMainBundle:User:message_form.html.twig', array('message_form' => $messageForm->createView(), 'recipient' => $recipient, 'message' => $message, 'box' => 'sent'));
 }
예제 #2
0
 /** Пригласить на мероприятие, на которое сам НЕ подписан
  * @Secure(roles="IS_AUTHENTICATED_REMEMBERED")
  * @Route("/sharecalendarother/{guestId}/{eventId}", name = "User_calendar_share_other", defaults={"guestId"=null, "eventId"=null }, requirements = {"guestId" = "\d+", "eventId" = "\d+"}, options={"expose"=true})
  */
 public function shareUserCalendarOtherAction($guestId, $eventId)
 {
     $UserEvent = new UserCalendar();
     $event = $this->getDoctrine()->getManager()->getRepository('EvrikaMainBundle:Event')->findOneById($eventId);
     $user = $this->getDoctrine()->getManager()->getRepository('EvrikaMainBundle:User')->findOneById($guestId);
     //Нет ли у него уже этого события
     $is = $this->getDoctrine()->getManager()->getRepository('EvrikaMainBundle:UserCalendar')->findBy(array('event' => $event, 'user' => $user));
     if ($is == NULL) {
         $is = $this->getDoctrine()->getManager()->getRepository('EvrikaMainBundle:UserCalendar')->findBy(array('event' => $event, 'guest' => $user));
     }
     if ($is == NULL) {
         $UserEvent = new UserCalendar();
         $UserEvent->setEvent($event);
         $UserEvent->setUser($user);
         $UserEvent->setStarts($event->getStarts());
         $UserEvent->setEnds($event->getEnds());
         $UserEvent->setTitle($event->getTitle());
         $recipient = $user;
         $em = $this->getDoctrine()->getManager();
         $message = new PrivateMessage();
         $message->setRecipient($recipient);
         $message->setSender($this->getUser());
         $message->setHeader('Вас пригласили на событие');
         $msg = "Пользователь ";
         $msg .= $this->getUser()->getLastName() . " " . $this->getUser()->getFirstName();
         $msg .= " пригласил вас на событие";
         $message->setBody($msg);
         $em->persist($UserEvent);
         $em->persist($message);
         $em->flush();
     }
     return $this->render('EvrikaMainBundle::response.json.twig', array('status' => 'OK', 'data' => 'ok'));
 }