Files
Groupware/Project/StateMachine/_BW.cs
2023-05-30 11:03:12 +09:00

157 lines
6.1 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);
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 { 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 { 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; }
}
System.Threading.Thread.Sleep(1000);
}
else System.Threading.Thread.Sleep(60000); //메일서비스사용안하므로 1분정도 지연한다
}
}
}
}