public static GeneralPurpose.Request GetBulkRequest(RequestParameters p) { GeneralPurpose.Request r; Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); using (System.IO.StreamReader rdr = new System.IO.StreamReader(assembly.GetManifestResourceStream("DataContext.BBCS.GeneralPurpose.Resources.BulkRequest.json"))) { System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(GeneralPurpose.Request)); r = (GeneralPurpose.Request)ser.ReadObject(rdr.BaseStream); } if (p.GenerateMergedata) { r.CompressedMergeData = r.CompressMergeData(RequestFactory.AddMergeData(p.Tag, p.RecipientCount)); } else { using (System.IO.StreamReader strm = new System.IO.StreamReader(assembly.GetManifestResourceStream("DataContext.BBCS.GeneralPurpose.Resources." + p.ContentResourceName))) { r.EmailContentHTML = strm.ReadToEnd(); } using (System.IO.StreamReader strm = new System.IO.StreamReader(assembly.GetManifestResourceStream("DataContext.BBCS.GeneralPurpose.Resources." + p.MergeDataResourceName))) { string mergeData = strm.ReadToEnd(); r.CompressedMergeData = r.CompressMergeData(mergeData); } } return r; }
public static void BBCS(CommandArguments args) { connection = args.GetConnection(); Processors.BBCS.REST.Common.HOST = args.Host; Processors.BBCS.REST.Common.USER = args.User; Processors.BBCS.REST.Common.PWD = args.Password; switch (args.BBCSAction) { case BBCSAction.Ping: Processors.BBCS.SOAP.Ping p = new Processors.BBCS.SOAP.Ping( ( new Processors.BBCS.SOAP.EmailSubmissionService() .proxy(Processors.BBCS.SOAP.EmailSubmissionService.HTTP_SCHEME, Processors.BBCS.SOAP.EmailSubmissionService.PATH_TRANSACTIONAL) )); if (p.Execute()) { Console.WriteLine("SOAP ping: success"); } else { Console.WriteLine("Failure"); } break; case BBCSAction.Bulk: DevLab.UI.BBCS inline = DevLab.UI.UIFactory.GetBBCSUI(); DevLab.UI.ScreenParameters inlineParam = inline.PrintMenu(connection); DataContext.BBCS.RequestFactory.GenerateMergeData = false; RequestParameters pm = new RequestParameters(); pm.MergeDataResourceName = connection.MergeData.FileName; pm.ContentResourceName = connection.Content.FileName; pm.Tag = inlineParam.tag; pm.RecipientCount = inlineParam.recipientCount; pm.GenerateMergedata = false; DataContext.BBCS.GeneralPurpose.Request r = DataContext.BBCS.RequestFactory.GetBulkRequest(pm); r.OrganizationID = connection.OrganizationId.ToString(); Processors.BBCS.REST.Submission.Bulk b = new Processors.BBCS.REST.Submission.Bulk(r, connection.BulkInline(), connection.AuthorizationHeader); b.Submit(); Console.WriteLine("Bulk submit: success"); break; case BBCSAction.BulkChunk: if (args.BBCSProtocol == BBCSProtocol.REST) { DevLab.UI.BBCS chunk = DevLab.UI.UIFactory.GetBBCSUI(); DevLab.UI.ScreenParameters chunkParm = chunk.PrintMenu(connection); RequestFactory.GenerateMergeData = true; Request _cr = RequestFactory.GetBulkCreateRequest(Guid.NewGuid(), chunkParm.tag, chunkParm.recipientCount); AddDataRequest _adr = RequestFactory.GetBulkAddDataRequest(_cr.JobId, chunkParm.tag, chunkParm.recipientCount); ProcessRequest _pr = RequestFactory.GetBulkProcessRequest(_cr.JobId); BulkCreate _bs = new BulkCreate(_cr, connection.BulkCreate(), connection.AuthorizationHeader); _bs.Submit(); chunk.PrintScreen(connection); BulkAddData _ba = new BulkAddData(_adr, connection.BulkAdd(), connection.AuthorizationHeader); _ba.Submit(); chunk.PrintScreen(connection); BulkProcess _br = new BulkProcess(_pr, connection.BulkProcess(), connection.AuthorizationHeader); _br.Submit(); chunk.PrintScreen(connection); Console.WriteLine("Success"); } else { Processors.BBCS.SOAP.GeneralPurpose.Chunk ch = new Processors.BBCS.SOAP.GeneralPurpose.Chunk( new Processors.BBCS.SOAP.EmailSubmissionService() .proxy(Processors.BBCS.SOAP.EmailSubmissionService.HTTPS_SCHEME, Processors.BBCS.SOAP.EmailSubmissionService.PATH_GENERAL_PURPOSE) ); ch.Jobid = Guid.NewGuid(); ch.Execute(); } break; case BBCSAction.BulkPing: break; case BBCSAction.ClientPing: break; case BBCSAction.AddClient: Processors.BBCS.REST.ClientResponse cr = Processors.BBCS.REST.Client.Submit(); Console.WriteLine("Client Id: " + cr.ID.ToString()); break; case BBCSAction.Inline: Processors.BBCS.SOAP.GeneralPurpose.Inline i = new Processors.BBCS.SOAP.GeneralPurpose.Inline( (new Processors.BBCS.SOAP.EmailSubmissionService() .proxy(Processors.BBCS.SOAP.EmailSubmissionService.HTTP_SCHEME, Processors.BBCS.SOAP.EmailSubmissionService.PATH_GENERAL_PURPOSE) )); bool result = i.Execute(); Console.WriteLine("Submitted: " + result.ToString()); break; case BBCSAction.JobStatus: switch (args.BBCSProtocol) { case BBCSProtocol.SOAP: System.Collections.Generic.List<StatusException> exceptions = new List<StatusException>(); string exceptionsPath = System.Configuration.ConfigurationManager.AppSettings.Get("ExceptionsList"); try { string path = System.Configuration.ConfigurationManager.AppSettings.Get("ClientListPath"); string[] clients = System.IO.File.ReadAllLines(path); for (int ii = 0; ii < clients.Length; ii++) { if (ii == 0) continue; string client = clients[ii]; string[] columns = client.Split(','); string uname = columns[0]; string pwd = columns[1]; string name = columns[2]; string siteId = columns[3]; try { Processors.BBCS.SOAP.EmailStatusService.UserName = uname; Processors.BBCS.SOAP.EmailStatusService.Password = pwd; var proxy = Processors.BBCS.SOAP.EmailStatusService.proxy(Processors.BBCS.SOAP.EmailStatusService.HTTPS_SCHEME); Processors.BBCS.SOAP.Status.GetJobStatus soapStatus = new Processors.BBCS.SOAP.Status.GetJobStatus(proxy); soapStatus.Execute(); } catch (Exception ex) { exceptions.Add(new StatusException() { SiteId = siteId, Name = name, UserName = uname, Password = pwd, Message = ex.Message }); } } } catch (Exception) { throw; } finally { if (exceptions.Count > 0) { System.Collections.Generic.List<string> list = new List<string>(); list.Add("ServiceUser,ServicePassword,Name,SiteID,ErrorMessage"); foreach (StatusException se in exceptions) { list.Add(se.Serialize()); } System.IO.File.WriteAllLines(exceptionsPath, list.ToArray()); } } break; case BBCSProtocol.REST: Processors.BBCS.REST.Status.GetJobStatus(); break; } Console.WriteLine("Complete"); break; case BBCSAction.RecipientStatus: Processors.BBCS.REST.Status.GetRecipientStatus(); Console.WriteLine("Complete"); break; case BBCSAction.Data: DataSet ds = new DataSet(); string cs = System.Configuration.ConfigurationManager.ConnectionStrings["BBCS"].ConnectionString; string startDate = System.Configuration.ConfigurationManager.AppSettings.Get("startdate"); string endDate = System.Configuration.ConfigurationManager.AppSettings.Get("enddate"); using (SqlConnection con = new SqlConnection(cs)) { using (SqlCommand cmd = con.CreateCommand()) { cmd.Connection.Open(); cmd.CommandText = "select id from dbo.generalpurposeemailjobinfo i where (i.dateadded between @startdate and @enddate) and i.statuscode = 3 ;"; cmd.Parameters.Add(new SqlParameter("@startdate", startDate)); cmd.Parameters.Add(new SqlParameter("@enddate", endDate)); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); } } Console.WriteLine("Jobs found: " + ds.Tables[0].Rows.Count.ToString()); string csvFormat = @"{0},{1},{2},{3},{4}"; if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { Console.WriteLine("Jobs found: " + ds.Tables[0].Rows.Count.ToString()); using (StreamWriter sw = new StreamWriter(@"C:\Users\scott.carnley\Documents\listquality\recipientgroups.csv")) { sw.WriteLine("EmailJobId,Unknown(0),Low(1),Medium(2),High(3)"); foreach (DataRow dr in ds.Tables[0].Rows) { Console.Write("."); Processors.BBCS.MergeData md = new Processors.BBCS.MergeData(); md.ConnectionString = cs; md.EmailJobId = dr[0].ToString(); Processors.BBCS.MergeData.Stats st = md.ProcessMergeData(); sw.WriteLine(string.Format(csvFormat, st.EmailJobId, st.Unknown.ToString(), st.Low.ToString(), st.Medium.ToString(), st.High.ToString())); } } Console.WriteLine("Jobs processed: " + ds.Tables[0].Rows.Count.ToString()); } else { Console.WriteLine("No jobs found."); } //Console.ReadLine(); //Console.WriteLine(); break; case BBCSAction.Transactional: string trx_tag = CCUpdate.Program.WriteMenu(CCUpdate.Program.EMAIL_JOB_BBCS, "Enter tag", true); string trxScreen = CCUpdate.Program.GetMenu(CCUpdate.Program.RUN_BBCS); CCUpdate.Program.WriteScreen(string.Format(trxScreen, connection.Host, connection.User, connection.Password, trx_tag, connection.Transactional())); DataContext.BBCS.Transactional.Request trxR = DataContext.BBCS.RequestFactory.GetTrxRequest(); trxR.OrganizationID = connection.OrganizationId.ToString(); Processors.BBCS.REST.Submission.Transactional t = new Processors.BBCS.REST.Submission.Transactional(trxR, connection.Transactional(), connection.AuthorizationHeader); t.Submit(); Console.WriteLine("Complete"); break; case BBCSAction.Attachment: string attScreen = CCUpdate.Program.GetMenu(CCUpdate.Program.RUN_BBCS); CCUpdate.Program.WriteScreen(string.Format(attScreen, connection.Host, connection.User, connection.Password, "N/A", connection.Attachments())); AttachmentService svc = new AttachmentService(connection.Attachments(), connection.AuthorizationHeader); svc.Submit(null); break; case BBCSAction.LoadBalancer: break; } }