/** * Показывает форму отправки/редактирования сообщения если 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')); }
/** Пригласить на мероприятие, на которое сам НЕ подписан * @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')); }