public static List <Param> GetReqJsonParameters(ListOrdered Components, IRedisClient Redis, IDatabase ObjectsDB) { List <Param> parameters = new List <Param>(); foreach (ApiResources resource in Components) { if (resource is EbSqlReader || resource is EbSqlWriter || resource is EbSqlFunc) { EbDataSourceMain dataSource = GetEbObject <EbDataSourceMain>(resource.Reference, Redis, ObjectsDB); if (dataSource.InputParams == null || dataSource.InputParams.Count <= 0) { parameters.Merge(dataSource.GetParams(Redis as RedisClient)); } else { parameters.Merge(dataSource.InputParams); } } else if (resource is EbEmailNode) { EbEmailTemplate emailTemplate = GetEbObject <EbEmailTemplate>(resource.Reference, Redis, ObjectsDB); parameters = parameters.Merge(GetEmailParams(emailTemplate, Redis, ObjectsDB)); } else if (resource is EbConnectApi) { EbApi ob = GetEbObject <EbApi>(resource.Reference, Redis, ObjectsDB); parameters = parameters.Merge(GetReqJsonParameters(ob.Resources, Redis, ObjectsDB)); } else if (resource is EbThirdPartyApi thirdParty) { if (thirdParty.Parameters != null && thirdParty.Parameters.Count > 0) { foreach (var param in thirdParty.Parameters) { parameters.Add(new Param { Name = param.Name, Type = param.Type.ToString(), Value = param.Value }); } } } } return(parameters); }
public static List <Param> GetEmailParams(EbEmailTemplate enode, IRedisClient Redis, IDatabase ObjectsDB) { List <Param> p = new List <Param>(); if (!string.IsNullOrEmpty(enode.AttachmentReportRefID)) { EbReport o = GetEbObject <EbReport>(enode.AttachmentReportRefID, Redis, ObjectsDB); if (!string.IsNullOrEmpty(o.DataSourceRefId)) { EbDataSourceMain ob = GetEbObject <EbDataSourceMain>(o.DataSourceRefId, Redis, ObjectsDB); p = p.Merge(ob.GetParams(Redis as RedisClient)); } } if (!string.IsNullOrEmpty(enode.DataSourceRefId)) { EbDataSourceMain ob = GetEbObject <EbDataSourceMain>(enode.DataSourceRefId, Redis, ObjectsDB); p = p.Merge(ob.GetParams(Redis as RedisClient)); } return(p); }
public string Post(EmailServicesMqRequest request) { var _InfraDb = base.ResolveService <ITenantDbFactory>() as TenantDbFactory; var myService = base.ResolveService <EbObjectService>(); var res = (EbObjectParticularVersionResponse)myService.Get(new EbObjectParticularVersionRequest() { RefId = request.refid }); EbEmailTemplate ebEmailTemplate = new EbEmailTemplate(); foreach (var element in res.Data) { ebEmailTemplate = EbSerializers.Json_Deserialize(element.Json); } var myDs = base.ResolveService <EbObjectService>(); var myDsres = (EbObjectParticularVersionResponse)myDs.Get(new EbObjectParticularVersionRequest() { RefId = ebEmailTemplate.DataSourceRefId }); // get sql from ebdatasource and render the sql EbDataSource ebDataSource = new EbDataSource(); foreach (var element in myDsres.Data) { ebDataSource = EbSerializers.Json_Deserialize(element.Json); } var ds = _InfraDb.ObjectsDB.DoQueries(ebDataSource.Sql); var pattern = @"\{{(.*?)\}}"; var matches = Regex.Matches(ebEmailTemplate.Body, pattern); Dictionary <string, object> dict = new Dictionary <string, object>(); foreach (Match m in matches) { string str = Regex.Replace(m.Value, "[{}]", ""); foreach (var dt in ds.Tables) { string colname = dt.Rows[0][str.Split('.')[1]].ToString(); ebEmailTemplate.Body = ebEmailTemplate.Body.Replace(m.Value, colname); } } var emailMessage = new MimeMessage(); emailMessage.From.Add(new MailboxAddress("EXPRESSbase", "*****@*****.**")); emailMessage.To.Add(new MailboxAddress("", request.To)); emailMessage.Subject = ebEmailTemplate.Subject; emailMessage.Body = new TextPart("html") { Text = ebEmailTemplate.Body }; try { using (var client = new SmtpClient()) { client.LocalDomain = "www.expressbase.com"; client.Connect("smtp.gmail.com", 465, true); client.Authenticate(new System.Net.NetworkCredential() { UserName = "******", Password = "******" }); client.Send(emailMessage); client.Disconnect(true); } } catch (Exception e) { return(e.Message); } return(null); }