/// <summary>
        /// Takes a userID and a StatusMessage as parameters and returns a view model with a list of messages from the user with the userID.
        /// </summary>
        /// <param name="userID">The userID of the sender of the messages</param>
        /// <param name="StatusMessage">Statusmessage to display on top of page</param>
        /// <returns></returns>
        public async Task <IActionResult> Usermessages(string userID, string StatusMessage)
        {
            if (StatusMessage == null)
            {
            }
            else
            {
                ViewData["StatusMessage"] = StatusMessage;
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            _context.Messages.Load();
            _context.Users.Load();
            var messages = _context.Messages.Where(m => m.Sender.Id == userID);

            messages = messages.Where(m => m.Receiver.Id == user.Id);
            messages = messages.Where(m => !m.IsRemoved);

            var messageList = new List <MessageInfo>();
            var model       = new UsermessagesViewModel();

            var u = await _userManager.FindByIdAsync(userID);

            model.Username = u.UserName;

            foreach (var m in messages)
            {
                var mi = new MessageInfo();
                mi.Topic      = m.Topic;
                mi.DateTime   = m.DateTime;
                mi.SenderID   = m.Sender.Id;
                mi.SenderName = m.Sender.UserName;
                mi.MessageId  = m.ID;
                if (m.IsRead)
                {
                    mi.isRead = "";
                }
                else
                {
                    mi.isRead = "(Oläst)";
                }
                messageList.Add(mi);
            }

            model.Messages = messageList;

            return(View(model));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Loads the other messages under the message that the user is reading
        /// </summary>
        /// <param name="excludingMessageId"></param>
        /// <param name="userID"></param>
        /// <returns></returns>
        private async Task <UsermessagesViewModel> getOtherMessages(int excludingMessageId, string userID)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            _context.Messages.Load();
            _context.Users.Load();
            var messages = _context.Messages.Where(m => m.Sender.Id == userID);

            messages = messages.Where(m => m.Receiver.Id == user.Id);
            messages = messages.Where(m => !m.IsRemoved);
            messages = messages.Where(m => m.ID != excludingMessageId);

            var messageList = new List <MessageInfo>();
            var model       = new UsermessagesViewModel();


            foreach (var m in messages)
            {
                var mi = new MessageInfo();
                mi.Topic      = m.Topic;
                mi.DateTime   = m.DateTime;
                mi.SenderID   = m.Sender.Id;
                mi.SenderName = m.Sender.UserName;
                mi.MessageId  = m.ID;
                if (m.IsRead)
                {
                    mi.isRead = "";
                }
                else
                {
                    mi.isRead = "(Unread)";
                }
                model.Username = m.Sender.UserName;
                messageList.Add(mi);
            }

            model.Messages = messageList;
            return(model);
        }