Beispiel #1
0
        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;
            }
        }