You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
5.4 KiB
136 lines
5.4 KiB
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|