This commit is contained in:
chi
2023-06-12 00:04:03 +09:00
parent 800492b1a1
commit 4b8291d787
7 changed files with 256 additions and 16 deletions

View File

@@ -1213,6 +1213,195 @@ namespace Project
}
}
/// <summary>
/// 휴가신청(Remind)
/// </summary>
void Mail_Take_a_rest_remind()
{
var taForm = new DSMailTableAdapters.MailFormTableAdapter();
var taMailData = new DSMailTableAdapters.MailDataTableAdapter();
var taMailPrjSche = new DSMailTableAdapters.vMailingProjectScheduleTableAdapter();
var vCate = "HA";
try
{
Console.WriteLine("휴가신청remind - 검출 시작");
var gcodelist = FCOMMON.DBM.getGroupListWithoutGcode("gcode", "MailForm", "gcode is not null and gcode <> 'DEV'");
//var db = new EEEntities();
//기준일자는 오늘부터 -15일이다
var sd = DateTime.Now.AddDays(-15);
var ed = DateTime.Now;
var str_sd = sd.ToShortDateString();
var str_ed = ed.ToShortDateString();
var str_dt = DateTime.Now.ToShortDateString();
//var gcodelist = db.MailForm.GroupBy(t => t.gcode).ToList();
var cn = FCOMMON.DBM.getCn();
cn.Open();
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
foreach (var vGcode in gcodelist)
{
//메일양식이 지정되어있는지 체크
var MailJD = taForm.GetData(vGcode, vCate).FirstOrDefault();
if (MailJD == null) continue;
if (MailJD.exceptmail == null) MailJD.exceptmail = string.Empty;
if (MailJD.exceptmailcc == null) MailJD.exceptmailcc = string.Empty;
if (string.IsNullOrEmpty(MailJD.subject) || string.IsNullOrEmpty(MailJD.tolist)) continue;
//오늘날짜로 데이터가 등록되어있느지 확인한다.
var Existweek = taMailData.GetData(vGcode, str_dt, vCate).Where(t => t.tolist.Equals("chikyun.kim@amkor.co.kr") == false && t.wuid.Equals("debug") == false).Any();
if (Existweek) return;
//대상 사용자 목록을 추출한다
var sql = "select datediff(day, getdate(),sdate ),uid,cate,sdate,edate,isnull(remark,'')" +
" ,holydays,holytimes from EETGW_HolydayRequest " +
$" where gcode = '{vGcode}'" +
" and isnull(conf,0) = 0" +
" and datediff(day, getdate(), sdate ) between - 100 and 2" +
" order by sdate desc";
cmd.CommandText = sql;
var dar = cmd.ExecuteReader();
//메일데이터 생성
var body = new System.Text.StringBuilder();
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
body.AppendLine("<tr>");
body.AppendLine("<td>남은일수</td>");
body.AppendLine("<td>신청인</td>");
body.AppendLine("<td>형태</td>");
body.AppendLine("<td>시작일</td>");
body.AppendLine("<td>종료일</td>");
body.AppendLine("<td>일</td>");
body.AppendLine("<td>시간</td>");
body.AppendLine("<td>비고</td>");
body.AppendLine("</tr>");
while (dar.Read())
{
var idx = 0;
var remainday = int.Parse(dar[idx++].ToString());
var uid = dar[idx++].ToString();
var username = FCOMMON.DBM.GetUserName(vGcode, uid);
var cate = dar[idx++].ToString();
var sdate = dar[idx++].ToString();
var edate = dar[idx++].ToString();
var remark = dar[idx++].ToString();
var o_days = dar[idx++];
var o_time = dar[idx++];
var v_days = string.Empty;
var v_time = string.Empty;
if (o_days != null) v_days = o_days.ToString();
if (o_time != null) v_time = o_time.ToString();
body.AppendLine($"<tr>");
body.AppendLine($"<td>{remainday}</td>");
body.AppendLine($"<td>[{uid}] {username}</td>");
body.AppendLine($"<td>{cate}</td>");
body.AppendLine($"<td>{sdate}</td>");
body.AppendLine($"<td>{edate}</td>");
body.AppendLine($"<td>{v_days}</td>");
body.AppendLine($"<td>{v_time}</td>");
body.AppendLine($"<td>{remark}</td>");
body.AppendLine("</tr>");
}
body.AppendLine("</table>");
dar.Close();
//일별경고(월요일제외)
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
var mail_cc = string.Empty; //
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
var mail_bcc = string.Empty;
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
//mail_body = mail_body.Replace("{사번}", userinfo.id);
//메일본문을 생성해서 진행해야함
var mail_content = mail_body.Replace("{data}", body.ToString());
//메일데이터를 생성한다.
//mail_to = "chikyun.kim@amkor.co.kr";
//mail_bcc = string.Empty;
//mail_cc = string.Empty;
mail_to = MailSort(mail_to, MailJD.exceptmail);
if (string.IsNullOrEmpty(mail_to) == false)
{
using (var dt = new DSMail.MailDataDataTable())
{
var newdr = dt.NewMailDataRow();
newdr.gcode = vGcode;
newdr.cate = vCate;
newdr.subject = mail_subject;
newdr.fromlist = "eetgw@amkor.co.kr";
newdr.tolist = mail_to;// MailSort(mail_to, MailJD.exceptmail);
newdr.bcc = mail_bcc;
newdr.cc = MailSort(mail_cc, MailJD.exceptmailcc);
newdr.pdate = DateTime.Now.ToShortDateString();
newdr.body = mail_content;
newdr.wuid = FCOMMON.info.Login.no;// "dev";
newdr.wdate = DateTime.Now;
if (System.Diagnostics.Debugger.IsAttached)
{
newdr.tolist = "chikyun.kim@amkor.co.kr";
newdr.bcc = string.Empty;
newdr.cc = string.Empty;
newdr.wuid = "debug";
}
newdr.EndEdit();
dt.AddMailDataRow(newdr);
taMailData.Update(dt);// db.SaveChanges();
Console.WriteLine($"[{vGcode}] 메일 전송 완료(holy remind)");
}
}
}
cmd.Dispose();
cn.Close();
cn.Dispose();
}
catch (Exception ex)
{
using (var dt = new DSMail.MailDataDataTable())
{
var newdr = dt.NewMailDataRow();
newdr.gcode = "EET1P";
newdr.cate = "ER";
newdr.subject = "[ERROR] holy remind 메일작성 실패";
newdr.fromlist = "chikyun.kim@amkor.co.kr";
newdr.tolist = "chikyun.kim@amkor.co.kr";
newdr.bcc = string.Empty;
newdr.cc = string.Empty;
newdr.pdate = DateTime.Now.ToShortDateString();
newdr.body = ex.Message;
newdr.wuid = FCOMMON.info.Login.no;// "dev";
newdr.wdate = DateTime.Now;
if (System.Diagnostics.Debugger.IsAttached)
{
newdr.tolist = "chikyun.kim@amkor.co.kr";
newdr.bcc = string.Empty;
newdr.cc = string.Empty;
newdr.wuid = "debug";
}
newdr.EndEdit();
dt.AddMailDataRow(newdr);
var cnt = taMailData.Update(dt);
}
}
taForm.Dispose();
taMailData.Dispose();
taMailPrjSche.Dispose();
}
}
}