public async Task <IActionResult> Read(int id)
        {
            var message = await _contactUsService.GetByIAsync(id);

            if (message == null)
            {
                throw new System.Exception("Message Not Found");
            }

            if (message.IsUnread)
            {
                await _contactUsService.ReadAsync(id);
            }

            var model = new ContactReadModel
            {
                Email      = message.Email,
                IsArchived = message.IsArchived,
                IsUnread   = false,
                Message    = message.Message,
                Mobile     = message.Mobile,
                Name       = message.Name,
                Topic      = message.Topic
            };

            return(PartialView(model));
        }
        public Task <Contact> AddAsync(Contact contact)
        {
            var readModel = new ContactReadModel {
            };

            readModel.NamesJson   = JsonConvert.SerializeObject(contact.Names);
            readModel.AddressJson = JsonConvert.SerializeObject(contact.Addresses);
            readModel.PhonesJson  = JsonConvert.SerializeObject(contact.Phones);

            contact.DomainEvents.ToList().ForEach(o => readModel.AddDomainEvent(o));

            _dbContext.Contacts.Add(readModel);

            contact.ClearDomainEvents();

            return(Task.FromResult(contact));
        }