public async Task UpdateEmailState(int id, DateTimeOffset sendOn)
        {
            EmailModel email = await RetrieveEmailFromDb(id);

            email.State  = EmailStateEnum.Send;
            email.SendOn = sendOn;

            await _dbContext.SaveChangesAsync();
        }
        private ICollection <Recipient> CreateEmailRecipients(EmailModel email, ICollection <string> recipientList)
        {
            var recipients = new List <Recipient>(recipientList.Count);

            recipients.AddRange(recipientList.Select(recipientEmail => new Recipient
            {
                Email        = email,
                EmailAddress = recipientEmail,
            }));

            return(recipients);
        }
        public async Task <EmailDto> UpdateEmail(int id, EmailDto data)
        {
            _ = data ?? throw new ValidationException("Email data is empty");

            if (data.Id != id)
            {
                throw new ValidationException("Invalid email id value");
            }

            ValidateEmailRecipients(data.Recipients);

            EmailModel email = await RetrieveEmailFromDb(id);

            email.Content    = data.Content;
            email.Subject    = data.Subject;
            email.Recipients = CreateEmailRecipients(email, data.Recipients);

            await _dbContext.SaveChangesAsync();

            return(_mapper.Map <EmailDto>(email));
        }