Exemple #1
0
        //http://192.168.0.12:81/HRMail/AbnSendMail?key=89947155
        /// <summary>
        /// 出勤異常通知 寄E-mail事件
        /// </summary>
        public EmptyResult AbnSendMail(string Key, string Company)
        //(string Key)
        {
            try
            {
                if (Key == "89947155")
                {
                    ModelFactory.Company = Company;
                    ThreadStart ts = new ThreadStart(ModelFactory.AbnSendMail);
                    Thread      t  = new Thread(ts);
                    t.Start();

                    RegalLib.LogOutput("已觸發出勤異常通知!", "AbnSendMail");
                }
                else
                {
                    RegalLib.LogOutput("觸發出勤異常通知時,KEY值錯誤!", "AbnSendMail");
                }
            }
            catch (Exception ex)
            {
                RegalLib.LogOutput("觸發出勤異常通知時,發生問題! " + ex.Message, "AbnSendMail");
            }


            return(new EmptyResult());
        }
        /// <summary>
        /// 寄出異常E-Mail
        /// </summary>
        public void AbnSendMail()
        {
            List <AttendanceModel> AttAbnList = GetAttAbnList(Company);

            if (AttAbnList.Count == 0)
            {
                return;
            }

            var tmpList = from tmp in AttAbnList
                          group tmp by new { tmp.EmployeeNo, tmp.EmployeeEName } into g
                select new { EmployeeNo = g.Key.EmployeeNo, EmployeeEName = g.Key.EmployeeEName };

            string Html = "";


            //*** 寄給個人「個人出勤異常通知」  ***
            foreach (var tmp in tmpList)
            {
                DataTable dt = DbAccess.ExecuteDataTable("SELECT mail FROM LDAPUsers WHERE description=@description AND mail <> ''",
                                                         new DbParameter[] {
                    DataAccess.CreateParameter("description", DbType.String, tmp.EmployeeNo.ToString())
                }
                                                         );

                if (dt.Rows.Count == 1)
                {
                    //代表有找到對應的 E-MAIL  - 寄出信件

                    var tmpAttAbnList = (from tmpAttAbn in AttAbnList
                                         where tmpAttAbn.EmployeeNo == tmp.EmployeeNo
                                         select tmpAttAbn).ToList();

                    Html = "<h2>Dear " + tmp.EmployeeEName + " :</h2> ";

                    Html += "<h3>系統寄發時間 : " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</h3> ";
                    Html += "<h3>如對於出勤有任何疑問,請於當日中午前,向財務部提出說明。</h3>";

                    Html += "<table width='100%' border='1'>";
                    Html += "<tr>";
                    Html += "<th align='center'>員工編號</th>";
                    Html += "<th align='center'>部門</th>";
                    Html += "<th align='center'>姓名</th>";
                    Html += "<th align='center'>英文名</th>";
                    Html += "<th align='center'>上班日期</th>";
                    Html += "<th align='center'>上班時間</th>";
                    Html += "<th align='center'>下班時間</th>";
                    Html += "<th align='center'>加班上班</th>";
                    Html += "<th align='center'>加班下班</th>";
                    Html += "<th align='center'>出勤描述(上午)</th>";
                    Html += "<th align='center'>出勤描述(下午)</th>";
                    Html += "<th align='center'>出勤描述(加班)</th>";
                    Html += "<th align='center'>遲到</th>";
                    Html += "</tr>";

                    foreach (var tmp2 in tmpAttAbnList)
                    {
                        Html += "<tr>";
                        Html += "<td align='center'>" + tmp2.EmployeeNo + "</td>";
                        Html += "<td align='center'>" + tmp2.DepartMentName + "</td>";
                        Html += "<td align='center'>" + tmp2.EmployeeName + "</td>";
                        Html += "<td align='center'>" + tmp2.EmployeeEName + "</td>";
                        Html += "<td align='center'>" + tmp2.WorkDay + "</td>";

                        Html += "<td align='center'>" + tmp2.StartWorkTime + "</td>";
                        Html += "<td align='center'>" + tmp2.EndWorkTime + "</td>";
                        Html += "<td align='center'>" + tmp2.StartWorkOvertime + "</td>";
                        Html += "<td align='center'>" + tmp2.EndWorkOvertime + "</td>";
                        //Html += "<td align='center'>" + tmp2.AttendanceDesc + "</td>";

                        // Scott 1129 修改 將出勤欄位 分為 上午、下午、加班 3欄
                        Html += "<td align='center'>" + tmp2.AttendanceDescM + "</td>";
                        Html += "<td align='center'>" + tmp2.AttendanceDescN + "</td>";
                        Html += "<td align='center'>" + tmp2.AttendanceDescOT + "</td>";
                        Html += "<td align='center'>" + tmp2.LateMin + "</td>";
                        Html += "</tr>";
                    }
                    Html += "</table>";

                    try
                    {
                        Mail_Send(new string[] { dt.Rows[0]["mail"].ToString() }, new string[] { }, "個人出勤異常通知!", Html);
                        //Mail_Send(new string[] { "*****@*****.**" }, new string[] { }, "個人出勤異常通知!", Html);
                        RegalLib.LogOutput("個人出勤異常通知-寄出成功! 員工編號:" + tmp.EmployeeNo + ",E-Mail:" + dt.Rows[0]["mail"].ToString(), "AbnSendMail");
                    }
                    catch (Exception ex)
                    {
                        RegalLib.LogOutput("個人出勤異常通知-寄出失敗! 員工編號:" + tmp.EmployeeNo + ",E-Mail:" + dt.Rows[0]["mail"].ToString() + ",ErrMsg:" + ex.Message, "AbnSendMail");
                    }
                }
                else
                {
                    RegalLib.LogOutput("個人出勤異常通知-寄出失敗! 員工編號:" + tmp.EmployeeNo + " E-Mail有誤!", "AbnSendMail");
                } //if end
            }     //foreach end


            //*** 寄給天使「員工出勤異常清單」 ***
            Html = "<h2>Dear Angel:</h2> ";

            Html += "<h3>系統寄發時間 : " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</h3> ";

            Html += "<table width='100%' border='1'>";

            Html += "<tr>";
            Html += "<th align='center'>員工編號</th>";
            Html += "<th align='center'>部門</th>";
            Html += "<th align='center'>姓名</th>";
            Html += "<th align='center'>英文名</th>";
            Html += "<th align='center'>上班日期</th>";
            Html += "<th align='center'>上班時間</th>";
            Html += "<th align='center'>下班時間</th>";
            Html += "<th align='center'>加班上班</th>";
            Html += "<th align='center'>加班下班</th>";
            Html += "<th align='center'>出勤描述(上午)</th>";
            Html += "<th align='center'>出勤描述(下午)</th>";
            Html += "<th align='center'>出勤描述(加班)</th>";
            Html += "<th align='center'>遲到</th>";
            Html += "</tr>";

            foreach (var tmp in AttAbnList)
            {
                Html += "<tr>";
                Html += "<td align='center'>" + tmp.EmployeeNo + "</td>";
                Html += "<td align='center'>" + tmp.DepartMentName + "</td>";
                Html += "<td align='center'>" + tmp.EmployeeName + "</td>";
                Html += "<td align='center'>" + tmp.EmployeeEName + "</td>";
                Html += "<td align='center'>" + tmp.WorkDay + "</td>";

                Html += "<td align='center'>" + tmp.StartWorkTime + "</td>";
                Html += "<td align='center'>" + tmp.EndWorkTime + "</td>";
                Html += "<td align='center'>" + tmp.StartWorkOvertime + "</td>";
                Html += "<td align='center'>" + tmp.EndWorkOvertime + "</td>";
                //Html += "<td align='center'>" + tmp.AttendanceDesc + "</td>";
                // Scott 1129 修改 將出勤欄位 分為 上午、下午、加班 3欄
                Html += "<td align='center'>" + tmp.AttendanceDescM + "</td>";
                Html += "<td align='center'>" + tmp.AttendanceDescN + "</td>";
                Html += "<td align='center'>" + tmp.AttendanceDescOT + "</td>";
                Html += "<td align='center'>" + tmp.LateMin + "</td>";
                Html += "</tr>";
            }
            Html += "</table>";

            try
            {
                string title = "";
                if (Company == "TPE")
                {
                    title = "台北-";
                }
                if (Company == "TXG")
                {
                    title = "台中-";
                }
                if (Company == "TNN")
                {
                    title = "台南-";
                }
                if (Company == "SU")
                {
                    title = "蘇州-";
                }

                Mail_Send(new string[] { "*****@*****.**" }, new string[] { }, title + "員工出勤異常清單!", Html);
                //Mail_Send(new string[] { "*****@*****.**" }, new string[] { }, title + "員工出勤異常清單!", Html);
                RegalLib.LogOutput("員工出勤異常清單-寄出成功!", "AbnSendMail");
            }
            catch
            {
                RegalLib.LogOutput("員工出勤異常清單-寄出失敗!", "AbnSendMail");
            }
        }