public CorrespondenceView(ContactModel model, string sample)
        {
            InitializeComponent();
            DataContext = _viewModel = new CorrespondenceViewModel(model, sample);

            _viewModel.PropertyChanged += ViewModelOnPropertyChanged;

            Loaded += OnCorrespondenceViewLoaded;
        }
        //  [Authorize(Policy = Constants.Policy.MessageRequirement)]
        public async Task <IActionResult> Correspondence(string id)
        {
            try
            {
                string currentUserId = this.userManager.GetUserId(HttpContext.User);
                var    allMessages   = this.messageService.GetFullCorrespondence(id, currentUserId);

                var messages = allMessages
                               .Select(p =>
                {
                    var model = mapper.Map <Message, MessageViewModel>(p);

                    if (p.ReceiverId == currentUserId)
                    {
                        model.IsReceived = true;
                    }
                    return(model);
                })
                               .ToArray();
                string interlocutor = (await this.userManager.FindByIdAsync(id)).UserName;

                var respondModel = new RespondViewModel
                {
                    RecipientId = id
                };

                var viewModel = new CorrespondenceViewModel
                {
                    Interlocutor = interlocutor,
                    Messages     = messages,
                    Respond      = respondModel
                };

                return(this.View(viewModel));
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                this.TempData["Error"] = Constants.Message.InvalidOffer;
                return(this.RedirectToAction("Index", "Home"));
            }
        }