Пример #1
0
        /// <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();
        }
Пример #2
0
        /// <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);
            }
        }