public List<NotifyBsamModelResponse> NotifyBsamModel(NotifyBsamModel[] BsamModelItems) { string connectionDB_BK = "SD_DBServer"; string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); try { //1.檢查必要的input parameter Execute.ValidateParameter(connectionDB_BK, BsamModelItems); //3.執行DB insert Execute.Process(connectionDB_BK, BsamModelItems); //4.Build Response Message List<NotifyBsamModelResponse> pgiresponse = Execute.BuildResponseMsg(connectionDB_BK, BsamModelItems); return pgiresponse; } catch (Exception e) { logger.Error(MethodBase.GetCurrentMethod(), e); // UTL.SendMail("test", e.Message); //4.Build Response Error Message List<NotifyBsamModelResponse> ResponseList = new List<NotifyBsamModelResponse>(); foreach (NotifyBsamModel item in BsamModelItems) { NotifyBsamModelResponse response = new NotifyBsamModelResponse(); string SerialNumber = ""; string State = "F"; response.SerialNumber = SerialNumber; response.Result = State; ResponseList.Add(response); } return ResponseList; } finally { BaseLog.LoggingEnd(logger, methodName); } }
public static void UpdateBsamModel(string connectionDB, int dbIndex, NotifyBsamModel result) { string IEC_A_Part = result.IEC_A_Part; string HP_A_Part = (result.HP_A_Part == null ? "":result.HP_A_Part); string HP_C_SKU = result.HP_C_SKU; string strSQL = @"if not exists(select * from BSamModel where A_Part_Model=@IEC_A_Part) begin insert into BSamModel(A_Part_Model, C_Part_Model, HP_A_Part, HP_C_SKU, QtyPerCarton, Editor, Cdt, Udt) values (@IEC_A_Part, '', @HP_A_Part, @HP_C_SKU, 0, 'SAP', @Now, @Now) end"; SQLHelper.ExecuteNonQuery(SQLHelper.GetDBConnectionString(connectionDB, dbIndex), System.Data.CommandType.Text, strSQL, SQLHelper.CreateSqlParameter("@IEC_A_Part", 20, IEC_A_Part), SQLHelper.CreateSqlParameter("@HP_A_Part", 20, HP_A_Part), SQLHelper.CreateSqlParameter("@HP_C_SKU", 20, HP_C_SKU), SQLHelper.CreateSqlParameter("@Now", DateTime.Now)); }
//3.執行DB insert public static void Process(string connectionDB, NotifyBsamModel[] results) { int dbIndex = 0; string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); try { foreach (NotifyBsamModel item in results) { string SerialNumber = item.SerialNumber; string LogState = SQL.GetBsamModelState(connectionDB, dbIndex, SerialNumber); if (LogState != "F") { SQL.UpdateBsamModel(connectionDB, 1, item); //log success response record to TxnDataLog SQL.InsertTxnDataLog_DB(connectionDB, dbIndex, EnumMsgCategory.Response, "NotifyBsamModelResponse", string.IsNullOrEmpty(item.IEC_A_Part) ? "" : item.IEC_A_Part, string.IsNullOrEmpty(item.HP_C_SKU) ? "" : item.HP_C_SKU, string.IsNullOrEmpty(item.SerialNumber) ? "" : item.SerialNumber, "", "", EnumMsgState.Success, ""); } } } catch (Exception e) { BaseLog.LoggingError(logger, MethodBase.GetCurrentMethod(), e); throw e; } finally { BaseLog.LoggingEnd(logger, methodName); } }
//1.檢查必要的input parameter public static void ValidateParameter(string connectionDB, NotifyBsamModel[] results) { int dbIndex = 0; string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); try { List<string> NotNullItemList = new List<string> {"SerialNumber", "IEC_A_Part", "HP_C_SKU"}; foreach (NotifyBsamModel item in results) { logger.DebugFormat("NotifyBsamModel: \r\n{0}", ObjectTool.ObjectTostring(item)); //log receive record to TxnDataLog SQL.InsertTxnDataLog_DB(connectionDB, dbIndex, EnumMsgCategory.Receive, "NotifyBsamModel", string.IsNullOrEmpty(item.IEC_A_Part) ? "" : item.IEC_A_Part, string.IsNullOrEmpty(item.HP_C_SKU) ? "" : item.HP_C_SKU, string.IsNullOrEmpty(item.SerialNumber) ? "" : item.SerialNumber, "", "", EnumMsgState.Received, ""); } foreach (NotifyBsamModel item in results) { //Check null data string className = item.GetType().BaseType.Name; if (className == "Object") { className = item.GetType().Name; } string title = "These columns of " + className + " are null or no data : "; string error = ""; foreach (string itemcolumn in NotNullItemList) { if (string.IsNullOrEmpty(GetValueByType(itemcolumn, item).Trim())) { error = error + itemcolumn + ","; } } if (error != "") { error = title + error; //log fail response record to TxnDataLog SQL.InsertTxnDataLog_DB(connectionDB, dbIndex, EnumMsgCategory.Response, "NotifyBsamModelResponse", string.IsNullOrEmpty(item.IEC_A_Part) ? "" : item.IEC_A_Part, string.IsNullOrEmpty(item.HP_C_SKU) ? "" : item.HP_C_SKU, string.IsNullOrEmpty(item.SerialNumber) ? "" : item.SerialNumber, "", "", EnumMsgState.Fail, ""); } } } catch (Exception e) { BaseLog.LoggingError(logger, MethodBase.GetCurrentMethod(), e); throw e; } finally { BaseLog.LoggingEnd(logger, methodName); } }
//4.Build Response message structure public static List<NotifyBsamModelResponse> BuildResponseMsg(string connectionDB, NotifyBsamModel[] results) { int dbIndex = 0; string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); List<NotifyBsamModelResponse> ResponseList = new List<NotifyBsamModelResponse>(); try { foreach (NotifyBsamModel item in results) { BaseLog.LoggingInfo(logger, "SerialNumber: \r\n{0}", ObjectTool.ObjectTostring(item.SerialNumber)); NotifyBsamModelResponse response = new NotifyBsamModelResponse(); string SerialNumber = item.SerialNumber; string State = SQL.GetBsamModelState(connectionDB, dbIndex, SerialNumber); if (State == "N") State = "F"; response.SerialNumber = item.SerialNumber; response.Result = State; ResponseList.Add(response); } return ResponseList; } catch (Exception e) { BaseLog.LoggingError(logger, MethodBase.GetCurrentMethod(), e); throw e; } finally { BaseLog.LoggingEnd(logger, methodName); } }