public ReMessageList GetReMessageList(string userId, int messageId)
        {
            if (db.ApplicationUserMessages.Any(aum => aum.MessageId == messageId))
            {
                Message message = db.Messages.Where(m => m.Id == messageId).First();
                if (message.ApplicationUserId == userId || db.ApplicationUserMessages.Where(aum => aum.MessageId == messageId).First().ApplicationUserId == userId)
                {
                    ReMessageList model = new ReMessageList
                    {
                        Theme = message.Theme
                    };

                    MessageUserIdPair tempMessageUserIdPair = GetFromUserMessage(messageId);
                    model.ReMessageId = messageId;

                    if (message.ApplicationUserId == userId)
                    {
                        model.ReceiverId = tempMessageUserIdPair.UserId;
                        model.IsUser     = tempMessageUserIdPair.IsUser;
                    }
                    else
                    {
                        model.ReceiverId = message.ApplicationUserId;
                        model.IsUser     = IsUser(message.ApplicationUserId);
                    }

                    model.ReMessages = new List <ReMessageItem> {
                    };

                    Message tempMessage = message;
                    for (; ;)
                    {
                        model.ReMessages.Add(new ReMessageItem {
                            Sender = tempMessageUserIdPair.User, SenderId = tempMessageUserIdPair.UserId, IsUser = tempMessageUserIdPair.IsUser, Text = tempMessage.Text, DateTime = tempMessage.DateTime
                        });
                        tempMessage = GetReMessage(tempMessage.Id);
                        if (tempMessage != null)
                        {
                            tempMessageUserIdPair = GetFromUserMessage(tempMessage.Id);
                        }
                        else
                        {
                            break;
                        }
                    }
                    return(model);
                }
            }
            return(null);
        }
 public ActionResult MyMessages(ReMessageList model)
 {
     if (User.Identity.IsAuthenticated && (User.IsInRole("User") || User.IsInRole("Admin") || User.IsInRole("Administrator")))
     {
         if (ModelState.IsValid)
         {
             SendMessageViewModel modelToWrite = new SendMessageViewModel {
                 ToUserId = model.ReceiverId, Text = model.NewText, Theme = model.Theme
             };
             MessageManager.WriteMessage(User.Identity.GetUserId(), modelToWrite, model.ReMessageId);
             ViewBag.IsSent = true;
             return(RedirectToAction("MyMessages", "Message"));
         }
         else
         {
             return(View(model));
         }
     }
     return(RedirectToAction("Index", "Home"));
 }
 public ActionResult MyMessages(int id)
 {
     if (User.Identity.IsAuthenticated && (User.IsInRole("User") || User.IsInRole("Admin") || User.IsInRole("Administrator")))
     {
         int messageId = -1;
         try
         {
             messageId = Convert.ToInt32(id);
         }
         catch
         {
             return(RedirectToAction("MyMessages", "Message"));
         }
         MessageManager.ReadMessage(messageId, User.Identity.GetUserId());
         ReMessageList model = MessageManager.GetReMessageList(User.Identity.GetUserId(), messageId);
         if (model != null)
         {
             return(View("ReWriteMessage", model));
         }
         return(RedirectToAction("MyMessages", "Message"));
     }
     return(RedirectToAction("Index", "Home"));
 }