Beispiel #1
0
        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);
        }
Beispiel #2
0
 public ActionResult <IEnumerable <string> > Get()
 {
     try
     {
         var result = _privateMessageService.Get();
         return(Ok(result));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Beispiel #3
0
        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")));
            }
        }
Beispiel #4
0
        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));
        }