public ActionResult ReplyMessageWithQuote(int? id)
        {
            if (id.HasValue)
            {
                var model = new UserMessageModel { MessageId = id.Value };

                if (FillUserMessageModel(model, true))
                    return View("EditMessage", model);
                return RedirectToAction<AccountProfileController>(o => o.CreateMessage());
            }

            return RedirectToAction<AccountProfileController>(o => o.CreateMessage());
        }
        private bool FillUserMessageModel(UserMessageModel model, bool isQuoteMessage)
        {
            var message = Execute(() => _accountProfileService.GetUserMessage(CurrentUser.Id, model.MessageId.GetValueOrDefault()));

            if (message != null && (message.Type == MessageTypeEnum.Inbox || message.Type == MessageTypeEnum.Sent))
            {
                model.MessageId = message.Type == MessageTypeEnum.Sent ? model.MessageId : default(int);
                model.Title = message.Type == MessageTypeEnum.Inbox ? StringGeneration.QuoteTitleBuilder(message.Title) : message.Title;
                model.Description = isQuoteMessage ? StringGeneration.QuoteDescriptionBuilder(message.Description, message.SenderName) : message.Description;
                model.RecipientName = message.SenderName;
                return true;
            }

            return false;
        }
        public ActionResult EditMessage(UserMessageModel model)
        {
            if (ModelIsValid)
            {
                var data = model.CopyTo();
                data.SenderId = CurrentUser.Id;

                Execute(() => _accountProfileService.SaveMessage(data));

                if (ModelIsValid)
                {
                    return RedirectToAction<AccountProfileController>(o => o.Messages(),
                        new RouteValueDictionary(new Dictionary<string, object> { { "type", EnumEx.GetName(MessageTypeEnum.Sent) } }));
                }
            }

            return View(model);
        }