public static void Sendmail(NotificationSchedulerVO vo, List <CreatedFileInfoVO> fileList)
 {
     if (vo.EmailServer == SERVERTYPE_INTERNAL)
     {
         if (fileList == null)
         {
             MailHelper.SendmailInternal(vo);
         }
         else
         {
             MailHelper.SendmailInternal(vo, fileList);
         }
     }
     else
     {
         if (fileList == null)
         {
             MailHelper.SendmailExternal(vo);
         }
         else
         {
             MailHelper.SendmailExternal(vo, fileList);
         }
     }
 }
示例#2
0
        public void Execute(NotificationSchedulerVO vo)
        {
            sd = new SAPDAO("US");

            try {
                var currentList          = sd.GetAccountForRenewalData(MonthPeroid.CURRENT_MONTH);
                var currentFileHelper    = new FileHelper <AccountForRenewalVO>();
                var currentStageFileInfo = currentFileHelper.CreateCvsFileAtStage(currentList, FILE_SHOT_NAME_CURRENT_MONTH);

                var lastList          = sd.GetAccountForRenewalData(MonthPeroid.LAST_MONTH);
                var lastFileHelper    = new FileHelper <AccountForRenewalVO>();
                var lastStageFileInfo = currentFileHelper.CreateCvsFileAtStage(lastList, FILE_SHOT_NAME_LAST_MONTH);

                var nextList          = sd.GetAccountForRenewalData(MonthPeroid.NEXT_MONTH);
                var nextFileHelper    = new FileHelper <AccountForRenewalVO>();
                var nextStageFileInfo = currentFileHelper.CreateCvsFileAtStage(nextList, FILE_SHOT_NAME_NEXT_MONTH);

                var fileList = new List <CreatedFileInfoVO> {
                    currentStageFileInfo,
                    lastStageFileInfo,
                    nextStageFileInfo
                };

                MailHelper.Sendmail(vo, fileList);

                currentFileHelper.moveCompleteDirectory(currentStageFileInfo);
                currentFileHelper.moveCompleteDirectory(lastStageFileInfo);
                currentFileHelper.moveCompleteDirectory(nextStageFileInfo);
            } catch (Exception e) {
                log.Error(e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            } finally {
                sd.closeConnection();
            };
        }
        public void Execute(NotificationSchedulerVO vo)
        {
            try {
                if (ShipConfirmEmailUS == "Y")
                {
                    sdUS = new SAPDAO("US");
                    var shipmentInfoList_US = sdUS.GetShipmentInfoData();
                    shipmentInfoList_US.ForEach(x => {
                        MailHelper.SendShipEmailToCustomer(x);
                        sdUS.UpdateIsShipped(x.DocEntry);
                    });
                }

                if (ShipConfirmEmailCA == "Y")
                {
                    sdCA = new SAPDAO("CA");
                    var shipmentInfoList_CA = sdCA.GetShipmentInfoData();
                    shipmentInfoList_CA.ForEach(x => {
                        MailHelper.SendShipEmailToCustomer(x);
                        sdCA.UpdateIsShipped(x.DocEntry);
                    });
                }
            } catch (Exception e) {
                log.Error(e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            } finally {
                sdUS.closeConnection();
                sdCA.closeConnection();
            };
        }
示例#4
0
        public void Execute(NotificationSchedulerVO vo)
        {
            sd = new SAPDAO("CA");

            try {
                var list          = sd.GetValidToShipData();
                var fileHelper    = new FileHelper <ValidToShipVO>();
                var stageFileInfo = fileHelper.CreateCvsFileAtStage(list, FILE_SHOT_NAME);

                MailHelper.Sendmail(vo, stageFileInfo);
                fileHelper.moveCompleteDirectory(stageFileInfo);
            } catch (Exception e) {
                log.Error(e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            } finally {
                sd.closeConnection();
            };
        }
        public void Execute(NotificationSchedulerVO vo)
        {
            sd = new SAPDAO("CA");

            try {
                var list          = sd.getTestNoti();
                var fileHelper    = new FileHelper <TestNotiVO>();
                var stageFileInfo = fileHelper.CreateCvsFileAtStage(list, FILE_SHOT_NAME);

                MailHelper.Sendmail(vo, stageFileInfo);
                //MailHelper.SendmailAdmin("test", "test", MailHelper.SERVERTYPE_INTERNAL, Path.Combine(stageFileInfo.path, stageFileInfo.fileName));
                fileHelper.moveCompleteDirectory(stageFileInfo);
            } catch (Exception e) {
                log.Error(e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            } finally {
                sd.closeConnection();
            };
        }
        public void Execute(NotificationSchedulerVO vo)
        {
            try {
                var splitServerName = SERVER_NAME.Split(',');

                log.Info("============== Api state check ==============");
                foreach (var serverName in splitServerName)
                {
                    var urlUS = new UrlHelper().Scheme(SCHEMA)
                                .Host(serverName)
                                .Port(API_PORT)
                                .Path(SAP_US).Path(ITEMPRICE).Path(ACCOUNT_NO).Path(ITEM_CODE)
                                .Extension(EXTENSION)
                                .Build();

                    var urlCA = new UrlHelper()
                                .Scheme(SCHEMA)
                                .Host(serverName)
                                .Port(API_PORT)
                                .Path(SAP_CA).Path(ITEMPRICE).Path(ACCOUNT_NO).Path(ITEM_CODE)
                                .Extension(EXTENSION)
                                .Build();

                    Console.WriteLine("=======");
                    Console.WriteLine(urlUS);
                    Console.WriteLine(urlCA);

                    ApiServerStateCheck(serverName, SAP_US, urlUS);
                    ApiServerStateCheck(serverName, SAP_CA, urlCA);
                }
                log.Info("=============================================");
            } catch (Exception e) {
                log.Error(e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            }
        }
示例#7
0
        public List <NotificationSchedulerVO> getScheduler()
        {
            SqlDataReader rdr = null;

            var    tdlist         = new List <NotificationSchedulerVO>();
            string specialRunOnly = (ConfigurationManager.AppSettings["SpecialRunOnly"] == "Y"?"1":"0");

            try {
                var sqlQuery = @"SELECT Id
	                                , Department
	                                , Cycle
	                                , CycleDate
	                                , CycleDay
	                                , CycleTime
	                                , EmailServer
	                                , EmailTitle
	                                , EmailContent
	                                , ReceiverEmail
	                                , SenderName
	                                , SenderEmail
	                                , CcEmail
	                                , BccEmail
	                                , ProgramClass
	                                , Isnull(FirstRunDate,'1900-01-01') FirstRunDate
	                                , Isnull(LastRunDate,'1900-01-01') LastRunDate
	                                , CreateDate
	                                , ModifiedDate
                                    , isnull(Active,0) Active
                                    , isnull(EmailOnlyDataFlag,0) EmailOnlyDataFlag
                                FROM SAP_NotificationScheduler
                                WHERE SpecialRun = " + specialRunOnly + @"
                                ORDER BY Id";
                rdr = getRecordSet(sqlQuery);

                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        var vo = new NotificationSchedulerVO();
                        vo.Id                = Convert.ToInt32(rdr["Id"]);
                        vo.Department        = rdr["Department"].ToString();
                        vo.Cycle             = rdr["Cycle"].ToString();
                        vo.CycleDate         = (rdr["CycleDate"].ToString() == "") ? 0 : Convert.ToInt32(rdr["CycleDate"]);
                        vo.CycleDay          = rdr["CycleDay"].ToString();
                        vo.CycleTime         = (rdr["CycleTime"].ToString() == "") ? TODAY.DEFAULT_CYCLE_TIME : rdr["CycleTime"].ToString();
                        vo.EmailServer       = rdr["EmailServer"].ToString();
                        vo.EmailTitle        = rdr["EmailTitle"].ToString();
                        vo.EmailContent      = rdr["EmailContent"].ToString();
                        vo.ReceiverEmail     = rdr["ReceiverEmail"].ToString();
                        vo.SenderName        = rdr["SenderName"].ToString();
                        vo.SenderEmail       = rdr["SenderEmail"].ToString();
                        vo.CcEmail           = rdr["CcEmail"].ToString();
                        vo.BccEmail          = rdr["BccEmail"].ToString();
                        vo.ProgramClass      = rdr["ProgramClass"].ToString();
                        vo.FirstRunDate      = Convert.ToDateTime(rdr["FirstRunDate"]);
                        vo.LastRunDate       = Convert.ToDateTime(rdr["LastRunDate"]);
                        vo.CreateDate        = rdr["CreateDate"].ToString();
                        vo.ModifiedDate      = rdr["ModifiedDate"].ToString();
                        vo.Active            = Convert.ToInt32(rdr["Active"]);
                        vo.EmailOnlyDataFlag = Convert.ToInt32(rdr["EmailOnlyDataFlag"]);
                        tdlist.Add(vo);
                    }
                }
                if (rdr != null && rdr.IsClosed == false)
                {
                    rdr.Close();
                }
            } catch (SqlException ex) {
                log.Error("SQL Exception", ex);
                MailHelper.AddSystemIssueString(GetType().Name, ex.ToString());
            } catch (Exception e) {
                log.Error("Exception", e);
                MailHelper.AddSystemIssueString(GetType().Name, e.ToString());
            } finally {
                if (rdr != null && rdr.IsClosed == false)
                {
                    rdr.Close();
                }
            }
            return(tdlist);
        }
        public static void SendmailExternal(NotificationSchedulerVO vo, List <CreatedFileInfoVO> fileList = null)
        {
            var emailServer   = System.Configuration.ConfigurationManager.AppSettings["AWSEmailServer"];
            var emailUserName = System.Configuration.ConfigurationManager.AppSettings["AWSEmailUserName"];
            var emailPassword = System.Configuration.ConfigurationManager.AppSettings["AWSEmailPassword"];

            var customerSenderName      = vo.SenderName;
            var customerSenderEmail     = vo.SenderEmail;
            var customerRecipientsEmail = vo.ReceiverEmail;
            var customerCcEmail         = vo.CcEmail;
            var customerBccEmail        = vo.BccEmail;

            var mail = new MailMessage();

            mail.From = new MailAddress(customerSenderEmail, customerSenderName);

            if (customerRecipientsEmail != null)
            {
                mail.To.Add(new MailAddress(customerRecipientsEmail));
            }
            else
            {
                mail.To.Add(customerRecipientsEmail);
            }
            if (customerCcEmail != null && !"".Equals(customerCcEmail))
            {
                mail.CC.Add(customerCcEmail);
            }
            if (customerBccEmail != null && !"".Equals(customerBccEmail))
            {
                mail.Bcc.Add(customerBccEmail);
            }

            var attachedFileInfo = new StringBuilder();

            if (fileList != null)
            {
                var filterFileList = fileList.Where(x => x.filePath != CreatedFileInfoVO.nil).ToList();
                if (filterFileList.Count == 0 && vo.EmailOnlyDataFlag == 1)
                {
                    return;
                }

                attachedFileInfo.Append(mailBodyFileInfoHeader);
                filterFileList.Where(x => x.filePath != CreatedFileInfoVO.nil).ToList().ForEach(x => {
                    attachedFileInfo.Append("<br><br>");
                    attachedFileInfo.Append($"File name : {x.fileName}");
                    attachedFileInfo.Append("<br>");
                    attachedFileInfo.Append($"Data count : {x.dataCount}");

                    var filePath = Path.Combine(x.filePath, x.fileName);

                    var attachment = new Attachment(filePath);

                    mail.Attachments.Add(attachment);
                });
                attachedFileInfo.Append(mailBodyFileInfoFooter);
            }

            mail.Subject    = vo.EmailTitle;
            mail.Body       = mailBodyHeader;
            mail.Body      += vo.EmailContent + attachedFileInfo.ToString();
            mail.Body      += mailBodyEnd;
            mail.IsBodyHtml = true;

            try {
                var Client = new SmtpClient(emailServer);
                Client.Port      = 587;
                Client.EnableSsl = true;
                //Client.UseDefaultCredentials = true;
                Client.Credentials = new NetworkCredential(emailUserName, emailPassword);
                Client.Send(mail);
                Client.Dispose();
            } catch (SmtpException se) {
                log.Error("###### Exception caught when sendding email : {0}", se);
            }
        }
        public static void SendmailInternal(NotificationSchedulerVO vo, List <CreatedFileInfoVO> fileList = null)
        {
            var senderName         = vo.SenderName;
            var senderEmail        = vo.SenderEmail;
            var recipientsEmail    = vo.ReceiverEmail;
            var ccRecipientsEmail  = vo.CcEmail;
            var bccRecipientsEmail = vo.BccEmail;
            var mailServer         = System.Configuration.ConfigurationManager.AppSettings["MailServer"];
            var mail = new MailMessage();

            mail.From = new MailAddress(senderEmail, senderName);
            //mail.To.Add(new System.Net.Mail.MailAddress("*****@*****.**"));
            mail.To.Add(recipientsEmail);

            if (ccRecipientsEmail != null && !"".Equals(ccRecipientsEmail))
            {
                mail.CC.Add(ccRecipientsEmail);
            }

            if (bccRecipientsEmail != null && !"".Equals(bccRecipientsEmail))
            {
                mail.Bcc.Add(bccRecipientsEmail);
            }

            var attachedFileInfo = new StringBuilder();

            if (fileList != null)
            {
                var filterFileList = fileList.Where(x => x.filePath != CreatedFileInfoVO.nil).ToList();

                if (filterFileList.Count() > 0)
                {
                    attachedFileInfo.Append(mailBodyFileInfoHeader);
                    filterFileList.Where(x => x.filePath != CreatedFileInfoVO.nil).ToList().ForEach(x => {
                        attachedFileInfo.Append("<br><br>");
                        attachedFileInfo.Append($"&nbsp; - File name : {x.fileName}");
                        attachedFileInfo.Append("<br>");
                        attachedFileInfo.Append($"&nbsp; - Data count : {x.dataCount}");

                        var filePath   = Path.Combine(x.filePath, x.fileName);
                        var attachment = new Attachment(filePath);

                        mail.Attachments.Add(attachment);
                    });
                    attachedFileInfo.Append(mailBodyFileInfoFooter);
                }
            }

            mail.Subject    = vo.EmailTitle;
            mail.Body       = mailBodyHeader;
            mail.Body      += vo.EmailContent.Replace(Environment.NewLine, "<BR>") + attachedFileInfo.ToString();
            mail.Body      += mailBodyEnd;
            mail.IsBodyHtml = true;

            try {
                var Client = new SmtpClient(mailServer);
                Client.Send(mail);
                Client.Dispose();
            } catch (SmtpException se) {
                Console.WriteLine("####################################################");
                Console.WriteLine("Exception caught when sendding email ");
                Console.WriteLine(se);
                Console.WriteLine("####################################################");
                log.Error("Exception caught when sendding email : {0}", se);
            }
        }
        public Boolean TimeValidationAndInsert(NotificationSchedulerVO x, string CycleType)
        {
            var result = false;

            if (CycleType == CYCLE.HOURLY)
            {
                if (x.LastRunDate == new DateTime(1900, 01, 01))    // if first run // 마지막 실행날짜가 없으면, 즉 최초 실행일때
                {
                    Console.WriteLine("FIRST RUN ============");
                    Console.WriteLine("INSERT QUEUE ============");

                    sdUP.UpdateFirstRunDate(x.Id, DateTime.Now);
                    sdUP.UpdateLastRunDate(x.Id, DateTime.Now);

                    result = true;
                }
                else
                {
                    Console.WriteLine("NOT FIRST RUN ============");

                    var schour  = new DateTime(x.LastRunDate.Year, x.LastRunDate.Month, x.LastRunDate.Day, x.LastRunDate.Hour, 0, 0);
                    var current = new DateTime(TODAY.DETETIME.Year, TODAY.DETETIME.Month, TODAY.DETETIME.Day, TODAY.DETETIME.Hour, 0, 0);
                    var diff    = current - schour;
                    if (diff.Hours >= 1)    // 전에 돌렸던 시간과 1시간 이상 차이가 난다면
                    {
                        Console.WriteLine("INSERT QUEUE ============");
                        result = true;
                        sdUP.UpdateLastRunDate(x.Id, DateTime.Now);
                    }
                    else
                    {
                        Console.WriteLine("HOURLY ALREAY RUN ============");
                    }
                }
            }
            else
            {
                var currentHourMinute = DateTime.ParseExact(TODAY.HOUR, "HH", null);
                var cycleTime         = DateTime.ParseExact(DateTime.ParseExact(x.CycleTime, "HH:mm", null).ToString("HH"), "HH", null);

                if (DateTime.Compare(currentHourMinute, cycleTime) == 0)    // 현재 시간과 사이클 다음을 비교해서 클때만 시작하게하고
                {
                    Console.WriteLine("OVER TIME PASS ============");

                    if (x.LastRunDate == new DateTime(1900, 01, 01))    // if first run // 마지막 실행날짜가 없으면, 즉 최초 실행일때
                    {
                        Console.WriteLine("FIRST RUN ============");
                        Console.WriteLine("INSERT QUEUE ============");

                        sdUP.UpdateFirstRunDate(x.Id, DateTime.Now);
                        sdUP.UpdateLastRunDate(x.Id, DateTime.Now);

                        result = true;
                    }
                    else
                    {
                        var todaty           = new DateTime(TODAY.DETETIME.Year, TODAY.DETETIME.Month, TODAY.DETETIME.Day);
                        var scLastSimpleDate = new DateTime(x.LastRunDate.Year, x.LastRunDate.Month, x.LastRunDate.Day);

                        if (todaty == scLastSimpleDate)
                        {
                            Console.WriteLine("TODAY ALREAY RUN ============");
                        }
                        else
                        {
                            Console.WriteLine("INSERT QUEUE ============");
                            sdUP.UpdateLastRunDate(x.Id, DateTime.Now);
                            result = true;
                        }
                    }
                }
                else
                {
                    Console.WriteLine("OVER TIME NOT PASS ============");
                }
            }

            //var currentHourMinute = DateTime.ParseExact(TODAY.HOURMIN, "HH:mm", null);
            //var cycleTime = DateTime.ParseExact(x.CycleTime, "HH:mm", null);

            //if (DateTime.Compare(currentHourMinute, cycleTime) == 0) {  // 현재 시간과 사이클 다음을 비교해서 클때만 시작하게하고
            //    Console.WriteLine("OVER TIME PASS ============");

            //    if (x.LastRunDate == new DateTime(1900, 01, 01)) {  // if first run // 마지막 실행날짜가 없으면, 즉 최초 실행일때
            //        Console.WriteLine("FIRST RUN ============");
            //        Console.WriteLine("INSERT QUEUE ============");

            //        sdUP.UpdateFirstRunDate(x.Id, DateTime.Now);
            //        sdUP.UpdateLastRunDate(x.Id, DateTime.Now);

            //        result = true;

            //    } else {

            //        if (CycleType == CYCLE.HOURLY) {

            //            Console.WriteLine("NOT FIRST RUN ============");

            //            var current = new DateTime(x.LastRunDate.Year, x.LastRunDate.Month, x.LastRunDate.Day, x.LastRunDate.Hour, 0, 0);
            //            var schour = new DateTime(TODAY.DETETIME.Year, TODAY.DETETIME.Month, TODAY.DETETIME.Day, TODAY.DETETIME.Hour, 0, 0);
            //            var diff = current - schour;

            //            if (diff.Hours >= 1) {  // 전에 돌렸던 시간과 1시간 이상 차이가 난다면
            //                Console.WriteLine("INSERT QUEUE ============");
            //                result = true;
            //                //resultQueue.Add(x);
            //                sdUP.UpdateLastRunDate(x.Id, DateTime.Now);
            //            } else {
            //                Console.WriteLine("HOURLY ALREAY RUN ============");
            //            }

            //        } else {    // 오늘 돌린 기록이 있는지 없는지

            //            var todaty = new DateTime(TODAY.DETETIME.Year, TODAY.DETETIME.Month, TODAY.DETETIME.Day);
            //            var scLastSimpleDate = new DateTime(x.LastRunDate.Year, x.LastRunDate.Month, x.LastRunDate.Day);

            //            if (todaty == scLastSimpleDate) {
            //                Console.WriteLine("TODAY ALREAY RUN ============");
            //            } else {
            //                Console.WriteLine("INSERT QUEUE ============");
            //                sdUP.UpdateLastRunDate(x.Id, DateTime.Now);
            //                result = true;
            //            }
            //        }
            //    }
            //} else {
            //    Console.WriteLine("OVER TIME NOT PASS ============");
            //}
            return(result);
        }