/// <summary> /// Method for adding events - RS /// </summary> /// <param name="instituteId"></param> /// <param name="message"></param> /// <param name="subject"></param> /// <param name="sentTo"></param> /// <param name="templateFormat"></param> public async Task AddEventReportInfoAsync(int instituteId, string message, string subject, string sentTo, TemplateFormatEnum templateFormat) { EventReportDetail eventReportDetail = new EventReportDetail { CreatedOn = DateTime.UtcNow, InstituteId = instituteId, Message = message, Subject = subject, SentOn = DateTime.UtcNow, TemplateFormat = templateFormat, To = sentTo }; _imsDbContext.EventReportDetails.Add(eventReportDetail); await _imsDbContext.SaveChangesAsync(); }
/// <summary> /// Method to trigger mail or message using templates - SS /// </summary> /// <param name="instituteId">instituteId</param> /// <param name="templateType">templateType</param> /// <param name="templateFormat">templateFormat</param> /// <param name="data">data as object</param> /// <param name="password">password, default null</param> public async Task TriggerMailOrMessageAsync(int instituteId, TemplateTypeEnum templateType, TemplateFormatEnum templateFormat, object data, string password = null) { var template = await _iMSDbContext.Templates.FirstOrDefaultAsync(x => x.InstituteId == instituteId && x.TemplateType == templateType && x.TemplateFormat == templateFormat); if (template != null) { var message = GetMailOrMessageBody(template, data, password); var recipients = GetRecipients(template, data, instituteId); if (template.TemplateFormat == TemplateFormatEnum.Email) { var emailConfiguration = await _iMSDbContext.AdministrationEmailConfigurations.Include(s => s.Institute).FirstOrDefaultAsync(x => x.InstituteId == instituteId); if (emailConfiguration != null) { var path = Path.Combine(Directory.GetCurrentDirectory(), "MailTemplates"); var engine = new RazorLightEngineBuilder().UseFilesystemProject(path).UseMemoryCachingProvider().Build(); string resultFromFile = await engine.CompileRenderAsync("Template.cshtml", new TemplateHtmlData() { Data = message }); var bcc = new List <EmailAddress>(); var emailBccs = template.EmailBcc.Split(','); foreach (var emailBcc in emailBccs) { bcc.Add(new EmailAddress() { Address = emailBcc, Name = emailBcc }); } var to = new List <EmailAddress>(); var tos = template.EmailBcc.Split(','); foreach (var emaolTo in tos) { to.Add(new EmailAddress() { Address = emaolTo, Name = emaolTo }); } var email = new EmailMessage() { BccAddresses = bcc, Content = resultFromFile, ToAddresses = to, FromAddresses = new List <EmailAddress>() { new EmailAddress() { Name = emailConfiguration.Institute.Name, Address = emailConfiguration.MailUserName } }, Subject = template.EmailSubject }; _emailService.SendMail(email); } } else { await _smsService.SendSms(recipients, message); } await AddEventReportDetail(template, data, instituteId); } }