public virtual async Task <ActionResult> AjaxMore(GetMoreViewModel viewModel)
        {
            if (Request.IsAjaxRequest())
            {
                var loggedOnReadOnlyUser = User.GetMembershipUser(MembershipService);
                var userFrom             = MembershipService.GetUser(viewModel.UserId);
                var loggedOnUser         = MembershipService.GetUser(loggedOnReadOnlyUser.Id);

                var settings = SettingsService.GetSettings();
                if (!settings.EnablePrivateMessages || loggedOnReadOnlyUser.DisablePrivateMessages == true)
                {
                    return(Content(LocalizationService.GetResourceString("Errors.GenericMessage")));
                }

                var allMessages = await _privateMessageService.GetUsersPrivateMessages(viewModel.PageIndex,
                                                                                       ForumConfiguration.Instance.PagingGroupSize, loggedOnUser, userFrom);

                var partialViewModel = new ViewPrivateMessageViewModel
                {
                    From            = userFrom,
                    PrivateMessages = allMessages,
                    IsAjaxRequest   = Request.IsAjaxRequest()
                };

                return(PartialView(partialViewModel));
            }
            return(Content(string.Empty));
        }
        public ActionResult AjaxMore(GetMoreViewModel viewModel)
        {
            using (UnitOfWorkManager.NewUnitOfWork())
            {
                if (Request.IsAjaxRequest())
                {
                    var userFrom     = MembershipService.GetUser(viewModel.UserId);
                    var loggedOnUser = MembershipService.GetUser(LoggedOnReadOnlyUser.Id);

                    var settings = SettingsService.GetSettings();
                    if (!settings.EnablePrivateMessages || LoggedOnReadOnlyUser.DisablePrivateMessages == true)
                    {
                        return(Content(LocalizationService.GetResourceString("Errors.GenericMessage")));
                    }

                    var allMessages = _privateMessageService.GetUsersPrivateMessages(viewModel.PageIndex, SiteConstants.Instance.PagingGroupSize, loggedOnUser, userFrom);

                    var partialViewModel = new ViewPrivateMessageViewModel
                    {
                        From            = userFrom,
                        PrivateMessages = allMessages,
                        IsAjaxRequest   = Request.IsAjaxRequest(),
                    };

                    return(PartialView(partialViewModel));
                }
                return(Content(string.Empty));
            }
        }
        public ActionResult AjaxMore(GetMoreViewModel viewModel)
        {
            using (UnitOfWorkManager.NewUnitOfWork())
            {
                if (Request.IsAjaxRequest())
                {
                    var userFrom = MembershipService.GetUser(viewModel.UserId);
                    var loggedOnUser = MembershipService.GetUser(LoggedOnReadOnlyUser.Id);

                    var settings = SettingsService.GetSettings();
                    if (!settings.EnablePrivateMessages || LoggedOnReadOnlyUser.DisablePrivateMessages == true)
                    {
                        return Content(LocalizationService.GetResourceString("Errors.GenericMessage"));
                    }

                    var allMessages = _privateMessageService.GetUsersPrivateMessages(viewModel.PageIndex, SiteConstants.Instance.PagingGroupSize, loggedOnUser, userFrom);

                    var partialViewModel = new ViewPrivateMessageViewModel
                    {
                        From = userFrom,
                        PrivateMessages = allMessages,
                        IsAjaxRequest = Request.IsAjaxRequest(),
                    };

                    return PartialView(partialViewModel);
                }
                return Content(string.Empty);
            }
        }
        public ActionResult View(int from)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                var userFrom = MembershipService.GetUser(from);

                if (userFrom != LoggedOnUser)
                {
                    // Mark all messages read sent to this user from the userFrom
                    var unreadMessages = LoggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && !x.IsRead);

                    foreach (var message in unreadMessages)
                    {
                        // Update message as read
                        message.IsRead = true;

                        // Get the sent version and update that too
                        var sentMessage = _privateMessageService.GetMatchingSentPrivateMessage(message.DateSent, message.UserFrom.Id, message.UserTo.Id);
                        if (sentMessage != null)
                        {
                            sentMessage.IsRead = true;
                        }
                    }

                    // Commit all changes
                    try
                    {
                        unitOfWork.Commit();
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.Rollback();
                        LoggingService.Error(ex);
                    }

                    // Get all the received messages from userFrom
                    // and then get all the sent messages to userFrom

                    var allMessages = LoggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && x.IsSentMessage == false).ToList();
                    allMessages.AddRange(LoggedOnUser.PrivateMessagesSent.Where(x => x.UserTo.Id == from && x.IsSentMessage == true).ToList());

                    // Now order them into an order of messages

                    var viewModel = new ViewPrivateMessageViewModel
                    {
                        From            = userFrom,
                        PrivateMessages = allMessages.OrderByDescending(x => x.DateSent).ToList()
                    };

                    return(View(viewModel));
                }

                return(ErrorToHomePage(LocalizationService.GetResourceString("Errors.NoPermission")));
            }
        }
        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 = ServiceFactory.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 = ServiceFactory.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 View(Guid from)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                var userFrom     = MembershipService.GetUser(from);
                var loggedOnUser = MembershipService.GetUser(LoggedOnReadOnlyUser.Id);
                if (userFrom.Id != LoggedOnReadOnlyUser.Id)
                {
                    // Mark all messages read sent to this user from the userFrom
                    var unreadMessages = loggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && !x.IsRead);

                    foreach (var message in unreadMessages)
                    {
                        // Update message as read
                        message.IsRead = true;

                        // Get the sent version and update that too
                        var sentMessage = _privateMessageService.GetMatchingSentPrivateMessage(message.DateSent, message.UserFrom.Id, message.UserTo.Id);
                        if (sentMessage != null)
                        {
                            sentMessage.IsRead = true;
                        }
                    }

                    // Commit all changes
                    try
                    {
                        unitOfWork.Commit();
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.Rollback();
                        LoggingService.Error(ex);
                    }

                    // Get all the received messages from userFrom
                    // and then get all the sent messages to userFrom
                    // TODO - This is shit, and needs updating
                    //var allMessages = loggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && x.IsSentMessage == false).ToList();
                    //allMessages.AddRange(loggedOnUser.PrivateMessagesSent.Where(x => x.UserTo.Id == from && x.IsSentMessage == true).ToList());

                    var allMessages = _privateMessageService.GetUsersPrivateMessages(1, SiteConstants.Instance.PagingGroupSize, loggedOnUser, userFrom);

                    // Now order them into an order of messages
                    var date = DateTime.UtcNow.AddMinutes(-AppConstants.TimeSpanInMinutesToShowMembers);

                    var viewModel = new ViewPrivateMessageViewModel
                    {
                        From             = userFrom,
                        PrivateMessages  = allMessages,
                        FromUserIsOnline = userFrom.LastActivityDate > date,
                        IsAjaxRequest    = Request.IsAjaxRequest(),
                        IsBlocked        = loggedOnUser.BlockedUsers.Any(x => x.Blocked.Id == userFrom.Id)
                    };

                    return(View(viewModel));
                }
                var noPermissionText = LocalizationService.GetResourceString("Errors.NoPermission");
                if (Request.IsAjaxRequest())
                {
                    return(Content(noPermissionText));
                }
                return(ErrorToHomePage(noPermissionText));
            }
        }
        public ActionResult View(Guid from)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                var userFrom = MembershipService.GetUser(from);
                var loggedOnUser = MembershipService.GetUser(LoggedOnReadOnlyUser.Id);
                if (userFrom.Id != LoggedOnReadOnlyUser.Id)
                {
                    // Mark all messages read sent to this user from the userFrom
                    var unreadMessages = loggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && !x.IsRead);

                    foreach (var message in unreadMessages)
                    {
                        // Update message as read
                        message.IsRead = true;

                        // Get the sent version and update that too
                        var sentMessage = _privateMessageService.GetMatchingSentPrivateMessage(message.DateSent, message.UserFrom.Id, message.UserTo.Id);
                        if (sentMessage != null)
                        {
                            sentMessage.IsRead = true;
                        }
                    }

                    // Commit all changes
                    try
                    {
                        unitOfWork.Commit();
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.Rollback();
                        LoggingService.Error(ex);
                    }

                    // Get all the received messages from userFrom
                    // and then get all the sent messages to userFrom
                    // TODO - This is shit, and needs updating
                    //var allMessages = loggedOnUser.PrivateMessagesReceived.Where(x => x.UserFrom.Id == from && x.IsSentMessage == false).ToList();
                    //allMessages.AddRange(loggedOnUser.PrivateMessagesSent.Where(x => x.UserTo.Id == from && x.IsSentMessage == true).ToList());

                    var allMessages = _privateMessageService.GetUsersPrivateMessages(1, SiteConstants.Instance.PagingGroupSize, loggedOnUser, userFrom);

                    // Now order them into an order of messages
                    var date = DateTime.UtcNow.AddMinutes(-AppConstants.TimeSpanInMinutesToShowMembers);

                    var viewModel = new ViewPrivateMessageViewModel
                    {
                        From = userFrom,
                        PrivateMessages = allMessages,
                        FromUserIsOnline = userFrom.LastActivityDate > date,
                        IsAjaxRequest = Request.IsAjaxRequest(),
                        IsBlocked = loggedOnUser.BlockedUsers.Any(x => x.Blocked.Id == userFrom.Id)
                    };

                    return View(viewModel);
                }
                var noPermissionText = LocalizationService.GetResourceString("Errors.NoPermission");
                if (Request.IsAjaxRequest())
                {
                    return Content(noPermissionText);
                }
                return ErrorToHomePage(noPermissionText);
            }
        }