/* * Backgroudn worker */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; namespace Project { public partial class fMain { //DateTime redisTryTime = DateTime.Parse("1982-11-23"); Boolean bBW = true; DateTime ChkMakeAutoTime = DateTime.Now.AddDays(-1); DateTime ChkSendMailTime = DateTime.Now.AddDays(-1); DateTime ChkMakeSchDayWeekTime = DateTime.Now.AddDays(-1); DateTime ChkMakeSchDay = DateTime.Now.AddDays(-1); DateTime ChkNoSchedule = DateTime.Now.AddDays(-1); DateTime ChkJobreportDay = DateTime.Now.AddDays(-1); DateTime ChkJObreportWeek = DateTime.Now.AddDays(-1); DateTime ChkTakeARest = DateTime.Now.AddDays(-1); public string MailSort(string addr, string except) { if (string.IsNullOrEmpty(except)) return addr; var alist = addr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var elist = except.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (var item in elist) alist.Remove(item); if (alist.Count < 1) return string.Empty; return string.Join(";", alist); } string getdbdata(object tdata) { if (tdata == null) return string.Empty; return tdata.ToString(); } string getMaillist(object orgo) { var org = string.Empty; if (orgo != null) org = orgo.ToString(); org = org.Replace(";", ",").Replace(":", ","); string list_to = ""; foreach (var item in org.Split(',')) { if (item.Trim() != "") { var atindex = item.IndexOf("@"); if (atindex != -1) { var dotindex = item.IndexOf(".", atindex + 1); if (dotindex != -1) { //정상이므로 추가한다. if (list_to != "") list_to += ","; list_to += item.Trim(); } } } } return list_to; } private void bw_DoWork(object sender, DoWorkEventArgs e) { while (bBW) { ServerUtil.IsMailserver = ServerUtil.SendmailSet(); if (ServerUtil.IsMailserver) { //메일대기내역전송 var tsSendMail = DateTime.Now - ChkSendMailTime; if (tsSendMail.TotalMilliseconds > 1000) { try { SendMail(); } catch { } finally { ChkSendMailTime = DateTime.Now; } } //자동생성 메일 작성 var tsAutoMake = DateTime.Now - ChkMakeAutoTime; if (tsAutoMake.TotalMinutes >= 10) { try { MakeAutoMail(); } catch { } finally { ChkMakeAutoTime = DateTime.Now; } } ///스케쥴 기한 알림(주) var tsScheDayweek = DateTime.Now - ChkMakeSchDayWeekTime; if (tsScheDayweek.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18) { try { Mail_MakeScheduleDayWeek(); } catch { } finally { ChkMakeSchDayWeekTime = DateTime.Now; } } ///스케쥴 기한 알림(일) var tsScheDay = DateTime.Now - ChkMakeSchDay; if (tsScheDay.TotalMinutes > 30 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18) { try { Mail_MakeScheduleDay(); } catch { } finally { ChkMakeSchDay = DateTime.Now; } } ///스케쥴없음 var tsNoSchedule = DateTime.Now - ChkNoSchedule; if (tsNoSchedule.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18) { try { Mail_NoSchedule(); } catch { } finally { ChkNoSchedule = DateTime.Now; } } ///업무일지(주간) var tsjobweek = DateTime.Now - ChkJObreportWeek; if (tsjobweek.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18) { try { Mail_JobReportWeek(); } catch { } finally { ChkJObreportWeek = DateTime.Now; } } ///업무일지(일) var tsjobday = DateTime.Now - ChkJobreportDay; if (tsjobday.TotalMinutes > 15 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.DayOfWeek != DayOfWeek.Monday && DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18) { try { Mail_JobReportDay(); } catch { } finally { ChkJobreportDay = DateTime.Now; } } ///휴가신청(Remind) - 230611 var tsTakeaRest = DateTime.Now - ChkTakeARest; if (tsTakeaRest.TotalMinutes > 15 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.Hour >= 17) { try { Mail_Take_a_rest_remind(); } catch { } finally { ChkTakeARest = DateTime.Now; } } System.Threading.Thread.Sleep(1000); } else System.Threading.Thread.Sleep(60000); //메일서비스사용안하므로 1분정도 지연한다 } } } }