Esempio n. 1
0
        public void Execute()
        {
            string campaignXmlFile = string.Empty;
            string smsList         = string.Empty;
            string dataFile        = string.Empty;
            string zipFileName     = string.Empty;
            Guid   listId          = Guid.Empty;

            Console.WriteLine("SMS gönderim uygulaması çalıştı.");
            try
            {
                logMe.Log("SendSmsIntegration - Execute", "Mail gönderim uygulaması başladı.", TEMPEventLog.EventType.Info);

                #region |   Get Campaign Activity   |
                //Euromessage' a gönderilmeyi bekleyen Kampanya Aktiviteleri çekiliyor.
                string queryCActivity = @"
                                    SELECT
	                                    CA.ActivityId CAID,
                                        DATEADD(HOUR,DATEDIFF(HOUR,GETUTCDATE(),GETDATE()),CA.scheduledstart) CAS,
                                        DATEADD(HOUR,DATEDIFF(HOUR,GETUTCDATE(),GETDATE()),CA.scheduledend) CAE,
	                                    CA.[Subject] CS,
                                        CA.new_smstext MSG
                                    FROM
	                                    CampaignActivity CA (NOLOCK)
                                    WHERE
	                                    CA.StatusCode = 100000000 AND CA.StateCode=0 AND CA.ChannelTypeCode=3"    ;
                sda.openConnection(Globals.ConnectionString);
                DataTable dtCActivity = sda.getDataTable(queryCActivity);
                sda.closeConnection();
                Console.WriteLine("Euromessage' a iletilmeyi bekleyen kampanya aktiviteleri alındı.");
                logMe.Log("SendSmsIntegration - Execute", "Euromessage' a iletilmeyi bekleyen kampanya aktiviteleri alındı. Adet: " + dtCActivity.Rows.Count, TEMPEventLog.EventType.Info);
                #endregion |   Get Campaign Activity   |

                SmsFunctions sFunc = new SmsFunctions();

                foreach (DataRow dr in dtCActivity.Rows)
                {
                    Console.WriteLine("Kampanya aktivitesi işlemleri başladı.");
                    DateTime startDate = (DateTime)dr["CAS"];

                    //if ((DateTime.Now.Hour == startDate.Hour && DateTime.Now.Minute >= startDate.Minute) || (DateTime.Now.Hour > startDate.Hour))
                    //{
                    Guid campaignActivityID = new Guid(dr["CAID"].ToString());

                    //Kampanya aktivitesine ait listeler çekilir.
                    DataTable marketingLists = GetMarketingList(sda, campaignActivityID);

                    //Eğer kampanya aktivitesi altında pazarlama listesi yoksa herhangi bir işlem yapılmaz.
                    if (marketingLists != null && marketingLists.Rows.Count > 0)
                    {
                        campaignXmlFile = sFunc.BuildXml(dr);

                        if (!string.IsNullOrEmpty(campaignXmlFile))
                        {
                            foreach (DataRow drList in marketingLists.Rows)
                            {
                                listId = new Guid(drList["ListId"].ToString());

                                if (listId != Guid.Empty)
                                {
                                    //Pazarlama listesine eklenen müsteriler çekilir.
                                    DataTable customerList = sFunc.GetCustomerList(sda, campaignActivityID, listId);

                                    if (customerList != null && customerList.Rows.Count > 0)
                                    {
                                        smsList += sFunc.BuildSmsList(customerList);
                                    }
                                }
                            }

                            if (!string.IsNullOrEmpty(smsList))
                            {
                                dataFile = sFunc.BuildDataFile(smsList);

                                if (!string.IsNullOrEmpty(dataFile))
                                {
                                    zipFileName = sFunc.WriteZip(dataFile, campaignXmlFile);
                                    sFunc.UploadViaSftp(zipFileName, sftpUrl, sftpUsername, sftpPassword);

                                    //Kampanya aktivitesi 100000004->EuroMsg Gönderim Yapıldı olarak UPDATE Ediliyor.
                                    SetStateRequest stateRequest = new SetStateRequest()
                                    {
                                        EntityMoniker = new EntityReference("campaignactivity", campaignActivityID),
                                        State         = new OptionSetValue(1),
                                        Status        = new OptionSetValue(100000001)
                                    };
                                    SetStateResponse stateResponse = (SetStateResponse)orgService.Execute(stateRequest);

                                    Console.WriteLine("Kampanya aktivitesi Euromsg'a başarıyla gönderildi. Aktivite Id : " + campaignActivityID.ToString());
                                }
                                else
                                {
                                    Console.WriteLine("Marketing list için .txt oluşturulamadı.");
                                    logMe.Log("SendSmsIntegration - Execute", "Marketing list için .txt oluşturulamadı.", TEMPEventLog.EventType.Info, "new_campaignactivity", dr["CAID"].ToString());
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("Kampanya aktivitesi için XML oluşturulamadı.");
                            logMe.Log("SendSmsIntegration - Execute", "Kampanya aktivitesi için XML oluşturulamadı.", TEMPEventLog.EventType.Info, "new_campaignactivity", dr["CAID"].ToString());
                        }
                    }
                    else
                    {
                        Console.WriteLine("Kampanya aktivitesine ait pazarlama listesi bulunmamaktadır.");
                        logMe.Log("SendSmsIntegration - Execute", "Kampanya aktivitesine ait pazarlama listesi bulunmamaktadır.", TEMPEventLog.EventType.Info, "new_campaignactivity", dr["CAID"].ToString());
                    }
                    //}
                    //else
                    //{
                    //    Console.WriteLine("Başlangıç saati gelmediğinden dolayı kampanya aktivitesi Euromsg'a gönderilmedi.");
                    //    logMe.Log("SendSmsIntegration - Execute", "Başlangıç saati gelmediğinden dolayı kampanya aktivitesi Euromsg'a gönderilmedi. Kampanya Aktivitesi ID: " + dr["CAID"].ToString(), TEMPEventLog.EventType.Info);
                    //}

                    Console.WriteLine("Kampanya aktivitesi işlemleri bitti.");
                }
                Console.WriteLine("Gönderilmeyi bekleyen kampanya aktivitelerinin alınma işlemi sona erdi.");
                logMe.Log("SendSmsIntegration - Execute", "Gönderilmeyi bekleyen kampanya aktivitelerinin alınma işlemi sona erdi.", TEMPEventLog.EventType.Info);
            }
            catch (Exception ex)
            {
                Console.WriteLine("İşlemler sırasında bir hata ile karşılaşıldı.");
                logMe.Log("SendSmsIntegration - Execute", ex, TEMPEventLog.EventType.Exception);
            }
        }
Esempio n. 2
0
        public void Execute()
        {
            try
            {
                logMe.Log("UpdateCampaignActivity_SMS - Execute", "UpdateCampaignActivity Uygulaması Başladı.Tarih : " + DateTime.Now.ToString(), TEMPEventLog.EventType.Info);

                #region |   Get Campaign Activity   |

                #region |   Query   |

                string queryCA = @"SELECT	
                                    E.ActivityId CAID,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageSmsErrorTable WHERE Error = 1 AND ActivityId = e.ActivityId
                                    )FailureCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageSmsTempTable WHERE Error = 0 AND ActivityId = e.ActivityId AND StatusCode!=5
                                    )EmailCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageSmsTempTable WHERE Error = 0 AND StatusCode = 100000003 AND ActivityId = e.ActivityId
                                    )NoSendEmailCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageSmsTempTable WHERE ActivityId = e.ActivityId AND Error = 0 AND ( StatusCode = 100000001 OR StatusCode = 1 )
                                    )ResponseWaitingCount
                                FROM
                                    NEFCUSTOM_MSCRM..EuroMessageSmsTempTable E (NOLOCK),
                                    CampaignActivity Ca (NOLOCK)
                                WHERE
	                                ca.ActivityId = E.ActivityId 
--and 
	                               -- GETDATE() > Ca.new_euromessagereportlimit
                                GROUP BY
                                    E.ActivityId";

                #endregion |    Query   |

                sda.openConnection(Globals.ConnectionString);;
                DataTable dtCA = sda.getDataTable(queryCA);
                sda.closeConnection();
                SmsFunctions sFunc = new SmsFunctions();

                foreach (DataRow dr in dtCA.Rows)
                {
                    if ((int)dr["ResponseWaitingcount"] == 0)
                    {
                        try
                        {
                            Guid campaignActivityId = (Guid)dr["CAID"];

                            UpdateCampaignActivityStatus(campaignActivityId);
                        }
                        catch (Exception ex)
                        {
                            logMe.Log("UpdateCampaignActivity_SMS - Execute", ex, TEMPEventLog.EventType.Exception);
                        }
                    }
                }

                #endregion

                logMe.Log("UpdateCampaignActivity_SMS - Execute", "UpdateCampaignActivity Uygulaması Bitti.Tarih : " + DateTime.Now.ToString(), TEMPEventLog.EventType.Info);
            }
            catch (Exception ex)
            {
                logMe.Log("UpdateCampaignActivity_SMS - Execute", ex, TEMPEventLog.EventType.Exception);
            }
        }
Esempio n. 3
0
 public string Login()
 {
     eFunc = new SmsFunctions();
     AuthorizationServiceKey = eFunc.AuthenticationEM();
     return(AuthorizationServiceKey);
 }
Esempio n. 4
0
        internal void Execute()
        {
            DateTime      startDate;
            DateTime      endDate;
            Guid          campaignActivityId;
            Guid          ownerId;
            Guid          marketingListId;
            EMTempProcess emt;

            try
            {
                Console.WriteLine("Sms gönderim uygulaması çalıştı.");
                logMe.Log("CreateSms - Execute", "Sms oluşturma uygulaması başladı.", TEMPEventLog.EventType.Info);

                #region Periyodik gönderimler dağıtıldı durumuna çekilir.
                SmsFunctions sFunc = new SmsFunctions();
                sFunc.TestCampaignActivity();
                // sFunc.SetCampaignActivityDistributed();
                #endregion

                #region |   Get Campaign Activity   |
                // StatusCode değeri 'Dağıtıldı' ve Kanal Tipi 'SMS' olan kampanya aktiviteleri alınıyor.
                string queryCActivity = @"
                                    SELECT
	                                    CA.ActivityId CAID,
                                        DATEADD(HOUR,DATEDIFF(HOUR,GETUTCDATE(),GETDATE()),CA.scheduledend) CASEND,
                                        DATEADD(HOUR,DATEDIFF(HOUR,GETUTCDATE(),GETDATE()),CA.scheduledstart) CAS,
	                                    CA.[Subject] CS,
                                        CA.CreatedBy 'owner'                                                 
                                    FROM
	                                    CampaignActivity CA (NOLOCK)
                                    WHERE
	                                    CA.StatusCode = 6
                                        AND
	                                    CA.ChannelTypeCode = 3"    ;
                sda.openConnection(Globals.ConnectionString);
                DataTable dtCActivity = sda.getDataTable(queryCActivity);
                sda.closeConnection();
                Console.WriteLine("Gönderilmeyi bekleyen kampanya aktiviteleri alındı.");
                logMe.Log("CreateSms - Execute", "Gönderilmeyi bekleyen kampanya aktiviteleri alındı. Adet: " + dtCActivity.Rows.Count, TEMPEventLog.EventType.Info);
                #endregion |   Get Campaign Activity   |

                foreach (DataRow dr in dtCActivity.Rows)
                {
                    Console.WriteLine("SMS oluşturma işlemleri başladı.");

                    try
                    {
                        startDate          = (DateTime)dr["CAS"];
                        endDate            = (DateTime)dr["CASEND"];
                        campaignActivityId = (Guid)dr["CAID"];
                        ownerId            = (Guid)dr["owner"];

                        #region |   Process Marketing Lists    |
                        //Kampanya aktivitesine ait listeler çekilir.
                        DataTable dtMarketingLists = GetMarketingList(campaignActivityId);

                        if (dtMarketingLists != null && dtMarketingLists.Rows.Count > 0)
                        {
                            foreach (DataRow drList in dtMarketingLists.Rows)
                            {
                                try
                                {
                                    marketingListId = new Guid(drList["ListId"].ToString());
                                    emt             = new EMTempProcess();
                                    bool result = emt.Process(campaignActivityId.ToString(), marketingListId.ToString(), ownerId.ToString(), startDate, endDate);

                                    // Result true dönerse kampanya aktivitesinin durumu değiştirilir.
                                    if (result)
                                    {
                                        SetStateRequest stateRequest = new SetStateRequest()
                                        {
                                            EntityMoniker = new EntityReference("campaignactivity", campaignActivityId),
                                            State         = new OptionSetValue(0),
                                            Status        = new OptionSetValue(100000000)
                                        };
                                        SetStateResponse stateResponse = (SetStateResponse)orgService.Execute(stateRequest);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    logMe.Log("CreateSMS", ex, TEMPEventLog.EventType.Exception, "CampaignActivity", campaignActivityId.ToString());
                                    continue;
                                }
                            }
                        }
                        #endregion |   Process Marketing Lists    |
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }