169 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /*
 | |
|  * 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 && System.Diagnostics.Debugger.IsAttached == false)
 | |
|                 {
 | |
|                     //메일대기내역전송
 | |
|                     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 > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10)
 | |
|                     {
 | |
| 
 | |
|                         try { Mail_MakeScheduleDayWeek(); }
 | |
|                         catch { }
 | |
|                         finally { ChkMakeSchDayWeekTime = DateTime.Now; }
 | |
|                     }
 | |
| 
 | |
|                     ///스케쥴 기한 알림(일)
 | |
|                     var tsScheDay = DateTime.Now - ChkMakeSchDay;
 | |
|                     if (tsScheDay.TotalMinutes > 15 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday &&
 | |
|                         DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.Hour >= 10)
 | |
|                     {
 | |
| 
 | |
|                         try { Mail_MakeScheduleDay(); }
 | |
|                         catch { }
 | |
|                         finally { ChkMakeSchDay = DateTime.Now; }
 | |
|                     }
 | |
| 
 | |
|                     ///스케쥴없음
 | |
|                     var tsNoSchedule = DateTime.Now - ChkNoSchedule;
 | |
|                     if (tsNoSchedule.TotalMinutes > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10)
 | |
|                     {
 | |
| 
 | |
|                         try { Mail_NoSchedule(); }
 | |
|                         catch { }
 | |
|                         finally { ChkNoSchedule = DateTime.Now; }
 | |
|                     }
 | |
| 
 | |
|                     ///업무일지(주간)
 | |
|                     var tsjobweek = DateTime.Now - ChkJObreportWeek;
 | |
|                     if (tsjobweek.TotalMinutes > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 9)
 | |
|                     {
 | |
| 
 | |
|                         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)
 | |
|                     {
 | |
| 
 | |
|                         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분정도 지연한다
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | 
