public ActionResult Delete(DeletePrivateMessageViewModel deletePrivateMessageViewModel) { using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { if (Request.IsAjaxRequest()) { var privateMessage = PrivateMessageService.Get(deletePrivateMessageViewModel.Id); if (privateMessage.MemberToId == CurrentMember.Id | privateMessage.MemberFromId == CurrentMember.Id) { PrivateMessageService.DeleteMessage(privateMessage); } else { throw new Exception(Lang("Errors.NoPermission")); } } try { unitOfWork.Commit(); } catch (Exception ex) { unitOfWork.Rollback(); LogError(ex); throw new Exception(Lang("Errors.GenericMessage")); } } return(null); }
public ActionResult <IEnumerable <string> > Get() { try { var result = _privateMessageService.Get(); return(Ok(result)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public ActionResult ViewPrivateMessage(DialoguePage page) { using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { var id = Request["id"]; if (string.IsNullOrEmpty(id)) { return(ErrorToHomePage(Lang("Errors.GenericMessage"))); } var message = PrivateMessageService.Get(new Guid(id)); if (message.MemberToId == CurrentMember.Id | message.MemberFromId == CurrentMember.Id) { //Mark as read if this is the receiver of the message if (message.MemberToId == CurrentMember.Id) { // Update message as read message.IsRead = true; // Get the sent version and update that too var sentMessage = PrivateMessageService.GetMatchingSentPrivateMessage(message.Subject, message.DateSent, message.MemberFromId, message.MemberToId); if (sentMessage != null) { sentMessage.IsRead = true; } try { unitOfWork.Commit(); } catch (Exception ex) { unitOfWork.Rollback(); LogError(ex); } } var viewModel = new ViewPrivateMessageViewModel(page) { Message = message, PageTitle = message.Subject }; return(View(PathHelper.GetThemeViewPath("PrivateMessageView"), viewModel)); } return(ErrorToHomePage(Lang("Errors.NoPermission"))); } }
public ActionResult PrivateMessagesCreate(DialoguePage page) { var to = Request["to"]; var id = Request["id"]; // Check if private messages are enabled if (!Settings.AllowPrivateMessages || CurrentMember.DisablePrivateMessages) { return(ErrorToHomePage(Lang("Errors.GenericMessage"))); } // Check flood control var lastMessage = PrivateMessageService.GetLastSentPrivateMessage(CurrentMember.Id); if (lastMessage != null && AppHelpers.TimeDifferenceInMinutes(DateTime.UtcNow, lastMessage.DateSent) < Settings.PrivateMessageFloodControl) { ShowMessage(new GenericMessageViewModel { Message = Lang("PM.SendingToQuickly"), MessageType = GenericMessages.Danger }); return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageInbox))); } // Check outbox size var senderCount = PrivateMessageService.GetAllSentByUser(CurrentMember.Id).Count; if (senderCount > Settings.PrivateMessageInboxSize) { ShowMessage(new GenericMessageViewModel { Message = Lang("PM.SentItemsOverCapcity"), MessageType = GenericMessages.Danger }); return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageInbox))); } var viewModel = new PageCreatePrivateMessageViewModel(page) { CreatePrivateMessageViewModel = new CreatePrivateMessageViewModel(), PageTitle = Lang("PM.CreatePrivateMessage") }; // add the username to the to box if available if (to != null) { var userTo = MemberService.Get(Convert.ToInt32(to)); viewModel.CreatePrivateMessageViewModel.UserToUsername = userTo.UserName; } // See if this is a reply or not if (id != null) { var previousMessage = PrivateMessageService.Get(new Guid(id)); // Its a reply, get the details viewModel.CreatePrivateMessageViewModel.UserToUsername = previousMessage.MemberFrom.UserName; viewModel.CreatePrivateMessageViewModel.Subject = previousMessage.Subject; viewModel.CreatePrivateMessageViewModel.PreviousMessage = previousMessage.Message; } return(View(PathHelper.GetThemeViewPath("PrivateMessagesCreate"), viewModel)); }