Пример #1
0
        public void Execute()
        {
            DateTime      startDate;
            DateTime      endDate;
            Guid          campaignActivityId;
            Guid          ownerId;
            Guid          marketingListId;
            EMTempProcess emt;

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

                #region Periyodik gönderimler dağıtıldı durumuna çekilir.
                EmailFunctions eFunc = new EmailFunctions();
                eFunc.TestCampaignActivity();

                eFunc.SetCampaignActivityDistributed();
                #endregion

                #region |   Get Campaign Activity   |
                // StatusCode değeri 'Dağıtıldı' ve Kanal Tipi 'Email' 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 = 7"    ;
                sda.openConnection(Globals.ConnectionString);
                DataTable dtCActivity = sda.getDataTable(queryCActivity);
                sda.closeConnection();

                Console.WriteLine("Gönderilmeyi bekleyen kampanya aktiviteleri alındı.");
                logMe.Log("CreateMail - 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("Email 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("CreateMail", ex, TEMPEventLog.EventType.Exception, "CampaignActivity", campaignActivityId.ToString());
                                    continue;
                                }
                            }
                        }
                        #endregion |   Process Marketing Lists    |
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #2
0
 public string Login()
 {
     eFunc = new EmailFunctions();
     AuthorizationServiceKey = eFunc.AuthenticationEM();
     return(AuthorizationServiceKey);
 }
Пример #3
0
        public void Execute()
        {
            try
            {
                logMe.Log("UpdateCampaignActivity - 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..EuroMessageMailErrorTable WHERE Error = 1 AND ActivityId = e.ActivityId
                                    )FailureCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageMailTempTable WHERE Error = 0 AND ActivityId = e.ActivityId AND StatusCode!=5
                                    )EmailCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageMailTempTable WHERE Error = 0 AND StatusCode = 100000003 AND ActivityId = e.ActivityId
                                    )NoSendEmailCount,
                                    (
                                        SELECT COUNT(0) FROM NEFCUSTOM_MSCRM..EuroMessageMailTempTable WHERE ActivityId = e.ActivityId AND Error = 0 AND ( StatusCode = 100000001 OR StatusCode = 1 )
                                    )ResponseWaitingCount
                                FROM
                                    NEFCUSTOM_MSCRM..EuroMessageMailTempTable 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();
                EmailFunctions eFunc = new EmailFunctions();

                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 - Execute", ex, TEMPEventLog.EventType.Exception);
                        }
                    }
                }

                #endregion

                logMe.Log("UpdateCampaignActivity - Execute", "UpdateCampaignActivity Uygulaması Bitti.Tarih : " + DateTime.Now.ToString(), TEMPEventLog.EventType.Info);
            }
            catch (Exception ex)
            {
                logMe.Log("UpdateCampaignActivity - Execute", ex, TEMPEventLog.EventType.Exception);
            }
        }
Пример #4
0
        public void Execute()
        {
            string campaignXmlFile = string.Empty;
            string mailList        = string.Empty;
            string dataFile        = string.Empty;
            string zipFileName     = string.Empty;
            Guid   listId          = Guid.Empty;

            Console.WriteLine("Mail gönderim uygulaması çalıştı.");

            try
            {
                logMe.Log("SendMailIntegration - 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,
	                                    CA.[Subject] CS
                                    FROM
	                                    CampaignActivity CA (NOLOCK)
                                    WHERE
	                                    CA.StatusCode = 100000000 AND CA.StateCode=0 AND CA.ChannelTypeCode=7"    ;
                sda.openConnection(Globals.ConnectionString);
                DataTable dtCActivity = sda.getDataTable(queryCActivity);
                sda.closeConnection();
                Console.WriteLine("Euromessage' a iletilmeyi bekleyen kampanya aktiviteleri alındı.");
                logMe.Log("SendMailIntegration - Execute", "Euromessage' a iletilmeyi bekleyen kampanya aktiviteleri alındı. Adet: " + dtCActivity.Rows.Count, TEMPEventLog.EventType.Info);
                #endregion |   Get Campaign Activity   |

                EmailFunctions eFunc = new EmailFunctions();

                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 = eFunc.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 = eFunc.GetCustomerList(sda, campaignActivityID, listId);

                                        if (customerList != null && customerList.Rows.Count > 0)
                                        {
                                            mailList += eFunc.BuildMailList(customerList);
                                        }
                                    }
                                }

                                if (!string.IsNullOrEmpty(mailList))
                                {
                                    dataFile = eFunc.BuildDataFile(mailList);

                                    if (!string.IsNullOrEmpty(dataFile))
                                    {
                                        zipFileName = eFunc.WriteZip(dataFile, campaignXmlFile);
                                        eFunc.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("SendMailIntegration - 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("SendMailIntegration - 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("SendMailIntegration - 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("SendMailIntegration - Execute", "Başlangıç saati gelmediğinden dolayı kampanya aktivitesi Euromsg'a gönderilmedi.", TEMPEventLog.EventType.Info, "new_campaignactivity", dr["CAID"].ToString());
                    }

                    Console.WriteLine("Kampanya aktivitesi işlemleri bitti.");
                }

                Console.WriteLine("Gönderilmeyi bekleyen kampanya aktivitelerinin alınma işlemi sona erdi.");
                logMe.Log("SendMailIntegration - 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("SendMailIntegration - Execute", ex, TEMPEventLog.EventType.Exception);
            }
        }