public async Task <EmailTemplate> GetTemplateAsync(AspectEnums.TemplateType type,
                                                           AspectEnums.EmailTemplateCode?code)
        {
            var spec = code != null
                ? new EmailTemplateFilterSpecification((int)type, (int)code)
                : new EmailTemplateFilterSpecification((int)type);

            return(await _emailTemplateRepository.FirstOrDefaultAsync(spec));
        }
 public async Task <EmailTemplate> GetEmailWithFieldsAsync(AspectEnums.TemplateType type,
                                                           AspectEnums.EmailTemplateCode?code)
 {
     if (code != null)
     {
         return(await _dbContext.EmailTemplate.Include("EmailMergeFields").FirstOrDefaultAsync(x => x.Type == (int)type && x.TemplateCode == (int)code));
     }
     return(await _dbContext.EmailTemplate.Include("EmailMergeFields").AsNoTracking().FirstOrDefaultAsync(x => x.Type == (int)type));
 }
        public async Task <EmailTemplateDto> GetEmailTemplateAsync(AspectEnums.TemplateType type, AspectEnums.EmailTemplateCode?code)
        {
            var template = await _emailRepository.GetEmailWithFieldsAsync(type, code);

            return(_mapper.Map <EmailTemplate, EmailTemplateDto>(template));
        }
        public async Task PrepareAndSendEmailAsync(UserMasterDto user, string otherText, AspectEnums.TemplateType type, AspectEnums.EmailTemplateCode?code)
        {
            var template = await _emailRepository.GetEmailWithFieldsAsync(type, code);

            var email = PrepareEmailBody(user, otherText, template);

            await SendEmailAsync(email);
        }