IEmailTemplate EmailTemplateObject(IModelApplicationEmail modelApplication, EmailRule emailRule, IObjectSpace objectSpace) { var modelEmailTemplate = modelApplication.Email.EmailTemplateContexts.First( emailTemplate => emailTemplate.GetValue <string>("Id") == emailRule.TemplateContext); return((IEmailTemplate)objectSpace.FindObject(modelEmailTemplate.EmailTemplate.TypeInfo.Type, CriteriaOperator.Parse(modelEmailTemplate.Criteria))); }
IEmailTemplate EmailTemplateObject(IModelApplicationEmail modelApplication, EmailRule emailRule, IObjectSpace objectSpace) { var modelEmailTemplate = modelApplication.Email.EmailTemplateContexts.FirstOrDefault( emailTemplate => emailTemplate.GetValue <string>("Id") == emailRule.TemplateContext); if (modelEmailTemplate != null) { return((IEmailTemplate)objectSpace.FindObject(modelEmailTemplate.EmailTemplate.TypeInfo.Type, CriteriaOperator.Parse(modelEmailTemplate.Criteria))); } throw new NullReferenceException("TemplateContext " + emailRule.TemplateContext); }
void AddReceipients(EmailRule emailRule, IModelApplicationEmail modelApplicationEmail, EmailTemplateEngine.Email email, object o) { var emailReceipientGroup =modelApplicationEmail.Email.EmailReceipients.First( @group => @group.GetValue<string>("Id") == emailRule.EmailReceipientsContext); foreach (var modelEmailReceipient in emailReceipientGroup) { var criteriaOperator = GetCriteriaOperator(modelEmailReceipient,o); var objects = ObjectSpace.GetObjects(modelEmailReceipient.EmailReceipient.TypeInfo.Type, criteriaOperator); var sendToCollection = GetSendToCollection(email, modelEmailReceipient); foreach (var obj in objects) { var item = modelEmailReceipient.EmailMember.MemberInfo.GetValue(obj) as string; sendToCollection.Add(item); } } }
EmailTemplateEngine.Email CreateEmail(LogicRuleInfo logicRuleInfo, EmailRule emailRule, IModelSmtpClientContext modelSmtpClientContext, IEmailTemplate emailTemplateObject, IModelApplicationEmail modelApplicationEmail) { var templateEngine = new EmailTemplateEngine.EmailTemplateEngine(emailTemplateObject); var email = templateEngine.Execute(logicRuleInfo.Object, emailRule.ID); if (emailRule.CurrentObjectEmailMember != null) { var toEmail = emailRule.CurrentObjectEmailMember.MemberInfo.GetValue(logicRuleInfo.Object) as string; email.To.Add(toEmail); } if (!string.IsNullOrEmpty(emailRule.EmailReceipientsContext)) { AddReceipients(emailRule, modelApplicationEmail, email,logicRuleInfo.Object); } email.From = modelSmtpClientContext.SenderEmail; modelSmtpClientContext.ReplyToEmails.Split(';').Each(s => email.ReplyTo.Add(s)); return email.To.Count == 0 ? null : email; }
protected virtual void AddReceipients(EmailRule emailRule, IModelApplicationEmail modelApplicationEmail, MailMessage email, object currentObject) { var emailReceipientGroup = modelApplicationEmail.Email.EmailReceipients.First( group => group.GetValue <string>("Id") == emailRule.EmailReceipientsContext); foreach (var modelEmailReceipient in emailReceipientGroup) { var criteriaOperator = GetCriteriaOperator(modelEmailReceipient, currentObject); var objects = ObjectSpace.GetObjects(modelEmailReceipient.EmailReceipient.TypeInfo.Type, criteriaOperator); var sendToCollection = GetSendToCollection(email, modelEmailReceipient); foreach (var obj in objects) { var item = modelEmailReceipient.EmailMember.MemberInfo.GetValue(obj) as string; item?.Split(';').Each(s => sendToCollection.Add(s)); } } }
void AddReceipients(EmailRule emailRule, IModelApplicationEmail modelApplicationEmail, EmailTemplateEngine.Email email, object o) { var emailReceipientGroup = modelApplicationEmail.Email.EmailReceipients.First( @group => @group.GetValue <string>("Id") == emailRule.EmailReceipientsContext); foreach (var modelEmailReceipient in emailReceipientGroup) { var criteriaOperator = GetCriteriaOperator(modelEmailReceipient, o); var objects = ObjectSpace.GetObjects(modelEmailReceipient.EmailReceipient.TypeInfo.Type, criteriaOperator); var sendToCollection = GetSendToCollection(email, modelEmailReceipient); foreach (var obj in objects) { var item = modelEmailReceipient.EmailMember.MemberInfo.GetValue(obj) as string; sendToCollection.Add(item); } } }
protected virtual MailMessage CreateEmail(LogicRuleInfo logicRuleInfo, EmailRule emailRule, IModelSmtpClientContext modelSmtpClientContext, IEmailTemplate emailTemplateObject, IModelApplicationEmail modelApplicationEmail) { var body = RazorEngineService.RunCompile(emailTemplateObject.Body, Guid.NewGuid().ToString(), null, logicRuleInfo.Object); var email = new MailMessage { IsBodyHtml = true, Subject = RazorEngineService.RunCompile(emailTemplateObject.Subject, Guid.NewGuid().ToString(), null, logicRuleInfo.Object), Body = body }; var toEmail = emailRule.CurrentObjectEmailMember?.MemberInfo.GetValue(logicRuleInfo.Object) as string; toEmail?.Split(';').Each(s => email.To.Add(s)); if (!string.IsNullOrEmpty(emailRule.EmailReceipientsContext)) { AddReceipients(emailRule, modelApplicationEmail, email, logicRuleInfo.Object); } email.From = new MailAddress(modelSmtpClientContext.SenderEmail); modelSmtpClientContext.ReplyToEmails.Split(';').Each(s => email.ReplyToList.Add(s)); return(email.To.Count == 0 ? null : email); }
EmailTemplateEngine.Email CreateEmail(EmailTemplateEngine.EmailTemplateEngine templateEngine, LogicRuleInfo logicRuleInfo, EmailRule emailRule, IModelSmtpClientContext modelSmtpClientContext, IEmailTemplate emailTemplateObject, IModelApplicationEmail modelApplicationEmail) { var email = templateEngine.Execute(logicRuleInfo.Object, emailRule.ID); if (emailRule.CurrentObjectEmailMember != null) { var toEmail = emailRule.CurrentObjectEmailMember.MemberInfo.GetValue(logicRuleInfo.Object) as string; email.To.Add(toEmail); } if (!string.IsNullOrEmpty(emailRule.EmailReceipientsContext)) { AddReceipients(emailRule, modelApplicationEmail, email, logicRuleInfo.Object); } email.From = modelSmtpClientContext.SenderEmail; email.Subject = emailTemplateObject.Subject; modelSmtpClientContext.ReplyToEmails.Split(';').Each(s => email.ReplyTo.Add(s)); return(email.To.Count == 0 ? null : email); }
IEmailTemplate EmailTemplateObject(IModelApplicationEmail modelApplication, EmailRule emailRule, IObjectSpace objectSpace) { var modelEmailTemplate =modelApplication.Email.EmailTemplateContexts.First( emailTemplate => emailTemplate.GetValue<string>("Id") == emailRule.TemplateContext); return (IEmailTemplate)objectSpace.FindObject(modelEmailTemplate.EmailTemplate.TypeInfo.Type, CriteriaOperator.Parse(modelEmailTemplate.Criteria)); }