|
|
using EasyBL.WebApi.Message; using Entity.Sugar; using log4net; using SqlSugar.Base; using System; using System.Collections.Generic; using System.Linq;
namespace EasyBL { public class LogService : ServiceBase { public static readonly ILog mo_Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);//記錄異常
/// <summary>
/// (會計)取消審核
/// </summary>
/// <param name="i_crm">todo: describe i_crm parameter on ErrorMessage</param>
/// <returns></returns>
public new ResponseMessage ErrorMessage(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { var sErrorSource = _fetchString(i_crm, "ErrorSource"); var sErrorlineNO = _fetchString(i_crm, "Errorlineno"); var sErrorcolNO = _fetchString(i_crm, "Errorcolno"); var sErrorMessage = _fetchString(i_crm, nameof(ErrorMessage));
MailSend(sErrorMessage, null, i_crm.ORIGID, i_crm.USERID, "", "", "", sErrorSource, sErrorlineNO, sErrorcolNO);
rm = new SuccessResponseMessage(null, i_crm); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; }
public static void MailSend(string sErrorMessage, Exception Exception, string sOrgID, string sUserID, string sProgramId, string sProgramName, string sFunctionName, string sErrorSource, string sErrorlineNO, string sErrorcolNO) { LogService.mo_Log.Error(sProgramName + sFunctionName + " Error:" + sErrorMessage, Exception);
var db = SugarBase.GetIntance(); string sError = null; string sUserFromName = null; var sEmailBody = "";
if (string.IsNullOrWhiteSpace(sProgramId)) { //拆分JS錯誤來源網址
var saErrorSource = sErrorSource.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries); sProgramId = saErrorSource.LastOrDefault(); } if (string.IsNullOrWhiteSpace(sProgramName)) { sProgramName = ""; } if (string.IsNullOrWhiteSpace(sProgramName)) { sFunctionName = ""; } if (Exception != null) { sErrorMessage += "<br/>" + Exception.ToString(); }
//查詢工程師郵件,拆分維護工程師郵件
var saEmails = Common.GetSystemSetting(db, sOrgID, "ErrorEngineer").Split(new string[] { ";", "," }, StringSplitOptions.RemoveEmptyEntries); //獲取Email郵件格式
var oErrorMessage = db.Queryable<OTB_SYS_Email>().Single(it => it.OrgID == sOrgID && it.EmailID == nameof(ErrorMessage));
if (oErrorMessage != null) { if (!string.IsNullOrWhiteSpace(sUserID)) { var oUserFrom = db.Queryable<OTB_SYS_Members>().Single(it => it.OrgID == sOrgID && it.MemberID == sUserID);
if (oUserFrom != null) { sUserFromName = oUserFrom.MemberName; } }
//寄信開始
foreach (string email in saEmails) { //利用郵件獲取工程師ID和名稱
var oUserTo = db.Queryable<OTB_SYS_Members>().Single(it => it.OrgID == sOrgID && it.Email == email);
if (oUserTo == null) { oUserTo = new OTB_SYS_Members(); } sEmailBody = oErrorMessage.BodyHtml.Replace("{{:UserName}}", oUserTo.MemberName) .Replace("{{:UseMember}}", sUserFromName ?? sUserID) .Replace("{{:FunctionName}}", sFunctionName) .Replace("{{:ErrorRow}}", sErrorlineNO) .Replace("{{:ErrorColumn}}", sErrorcolNO) .Replace("{{:ProgramId}}", sProgramId) .Replace("{{:ProgramName}}", sProgramName) .Replace("{{:error}}", sErrorMessage);
var oEmail = new Emails(); var saEmailTo = new List<EmailTo>(); //收件人
var oEmailTo = new EmailTo { ToUserID = oUserTo.MemberID, ToUserName = oUserTo.MemberName, ToEmail = email, Type = "to" }; saEmailTo.Add(oEmailTo);
oEmail.FromUserName = "系統自動發送";//取fonfig
oEmail.Title = "奕達運通管理系統錯誤信息派送";//取fonfig
oEmail.EmailBody = sEmailBody; oEmail.IsCCSelf = false; oEmail.Attachments = null; oEmail.EmailTo = saEmailTo;
var bSend = new MailService(sOrgID, true).MailFactory(oEmail, out sError); } } } } }
|