/// <summary>Only master data change</summary> /// <param name="master"></param> /// <returns></returns> public ActionResult DetailGridCustomUpdate(TR01AViewModel master) { string errMsg = ""; //Validation ValidateMaster(master); //Save if (ModelState.IsValid) { var TR01A = MasterToEntity(master); var result = _Service.UpdateM(TR01A); errMsg = result.Message; master = new TR01AViewModel(result.Data); } //Result if (errMsg.Length > 0 || !ModelState.IsValid) { errMsg += "Fail"; ViewData["EditErrorMsg"] = errMsg; ViewData["MasterForm"] = ReadViewHelper.PartialView(this, "_MasterForm", master); return(PartialView("_DetailGrid", GetTR01BList(master.TR01A_ID))); } else { SetTempData(master.TR01A_ID); return(RedirectToAction("Index")); } }
private void ValidateMaster(TR01AViewModel master) { //if (master.REM_MM != null && master.REM_MM.Length > 10) //{ // ModelState.AddModelError("REM_MM", "Error REM_MM Too Long"); //} }
private static void ValidateMaster(Dictionary <string, string> errorDic, TR01AViewModel master) { if (master.CUR_RT < 1) { errorDic.Add("CUR_RT", "不可小於1"); } }
/// <summary>Entity to viewmodel Single</summary> /// <param name="entity">TR01A</param> public static TR01AViewModel FromEntity(TR01A entity) { var data = new TR01AViewModel(); if (entity != null) { var objectHelper = new ActWeis.Utility.ObjectHelper(); objectHelper.CopyValue(entity, data); #region [ 資料處理 ] var BA01A = CacheCommonDataModule.GetBA01A().FirstOrDefault(x => x.BA01A_ID == entity.BA01A_ID); if (BA01A != null) { data.FAX_NO = BA01A.FAX_NO; data.ADD_DR = BA01A.ADD_DR; } var BA01B = new Services.BA01.BA01Service().GetD(x => x.BA01B_ID == entity.BA01B_ID); if (BA01B != null) { data.TEL_NO = BA01B.TEL_NO; data.TEL_EX = BA01B.TEL_EX; } #endregion [ 資料處理 ] } return(data); }
/// <summary>viewmodel to entity </summary> /// <param name="entity"></param> private static TR01A ToEntity(TR01AViewModel data) { var entity = new TR01A(); if (data != null) { #region [ 資料處理 ] #endregion [ 資料處理 ] var objectHelper = new ActWeis.Utility.ObjectHelper(); objectHelper.CopyValue(data, entity); } return(entity); }
//==========================BeforSave========================== public static TR01A BeforSave(TR01AViewModel data) { if (data.TR01A_ID == 0)//Adding New { data.CFN_YN = "N"; data.CREATE_USER = UserInfo.Id; data.CREATE_DATE = DateTime.Now; } else//Update { TR01Service _Service = new TR01Service(); var TR01A = _Service.GetA(data.TR01A_ID); data.CREATE_USER = TR01A.CREATE_USER; data.CREATE_DATE = TR01A.CREATE_DATE; data.CFN_DT = TR01A.CFN_DT; data.UPDATE_USER = UserInfo.Id; data.UPDATE_DATE = DateTime.Now; } return(ToEntity(data)); }
private TR01A MasterToEntity(TR01AViewModel master) { var TR01A = new TR01A(); if (master.TR01A_ID == 0)//Adding New { master.CREATE_USER = "******"; master.CREATE_DATE = DateTime.Now; master.PUR_NO = new PURSysEntities().Database.SqlQuery <string>("select dbo.Get_PUR_NO()").FirstOrDefault(); master.ToDomain(TR01A); } else//Update { TR01A = _Service.GetM(master.TR01A_ID); master.CREATE_USER = TR01A.CREATE_USER; master.CREATE_DATE = TR01A.CREATE_DATE; master.UPDATE_USER = "******"; master.UPDATE_DATE = DateTime.Now; master.ToDomain(TR01A); } return(TR01A); }
/// <summary>Both master and detail has change</summary> /// <param name="batchData">contain updata、insert、delete list</param> /// <param name="master"></param> /// <returns></returns> public ActionResult DetailGridBatchUpdate(MVCxGridViewBatchUpdateValues <TR01BViewModel, int> updateValues, TR01AViewModel master) { string errMsg = ""; int errorCount = 0; int TR01A_ID = master.TR01A_ID; //Validation ValidateMaster(master); for (int i = 0; i < updateValues.Insert.Count; i++) { if (updateValues.IsValid(updateValues.Insert[i]) == false) { errorCount++; } //if (updateValues.Insert[i].REM_MM.Length > 10) //{ // errorCount++; // ModelState.AddModelError($"Update[{i}].REM_MM", "REM_MM太長");//display error in cell //} } for (int i = 0; i < updateValues.Update.Count; i++) { if (updateValues.IsValid(updateValues.Update[i]) == false) { errorCount++; } //if (updateValues.Update[i].REM_MM.Length > 10) //{ // errorCount++; // ModelState.AddModelError($"Update[{i}].REM_MM", "REM_MM太長");//display error in cell //} } //Save if (errorCount == 0 && ModelState.IsValid) { var TR01A = MasterToEntity(master); var addList = new List <TR01B>(); foreach (var item in updateValues.Insert) { var TR01B = new TR01B(); item.CREATE_USER = "******"; item.CREATE_DATE = DateTime.Now; item.ToDomain(TR01B); addList.Add(TR01B); } var updateList = new List <TR01B>(); foreach (var item in updateValues.Update) { var TR01B = new TR01B(); TR01B = _Service.GetD(x => x.TR01B_ID == item.TR01B_ID); item.CREATE_USER = TR01B.CREATE_USER; item.CREATE_DATE = TR01B.CREATE_DATE; item.UPDATE_USER = "******"; item.UPDATE_DATE = DateTime.Now; item.ToDomain(TR01B); updateList.Add(TR01B); } errMsg = _Service.UpdateMD(TR01A, addList, updateList, updateValues.DeleteKeys); } //Result if (errMsg.Length > 0 || !ModelState.IsValid) { for (int i = 0; i < updateValues.Insert.Count; i++) { ModelState.AddModelError($"Insert[{i}].IsValid", "Error"); } for (int i = 0; i < updateValues.Update.Count; i++) { ModelState.AddModelError($"Update[{i}].IsValid", "Error"); } string deleteIDStrList = ""; for (int i = 0; i < updateValues.DeleteKeys.Count; i++) { updateValues.SetErrorText(updateValues.DeleteKeys[i], "Unable to delete!"); deleteIDStrList += updateValues.DeleteKeys[i] + ","; } ViewData["EditErrorMsg"] = "Failure" + "<br />" + errMsg; ViewData["DeleteIDList"] = deleteIDStrList; ViewData["MasterForm"] = ReadViewHelper.PartialView(this, "_MasterForm", master); return(PartialView("_DetailGrid", GetTR01BList(TR01A_ID))); } else { SetTempData(master.TR01A_ID); return(RedirectToAction("Index")); } }
/// <summary>Both master and detail has change</summary> /// <param name="batchData">contain updata、insert、delete list</param> /// <param name="master"></param> /// <returns></returns> public ActionResult DetailGridBatchUpdate(MVCxGridViewBatchUpdateValues <TR01BViewModel, int> updateValues, TR01AViewModel master, string DateBeg, string DateEnd, string Tax) { //Validation string errMsg = ""; if (UserInfo.LanguageType == Language.Type.VN) { master.DtPUR_DT = DateTime.Parse(DateBeg); master.DtEXP_DT = DateTime.Parse(DateEnd); ModelState.Clear(); TryValidateModel(master); } var isValid = TR01Business.Validation(master, updateValues, ModelState); ModelState.Remove("DtPUR_DT"); ModelState.Remove("DtEXP_DT"); if (!TR01Business.ValidateRemove(master, updateValues.Update)) { isValid = false; errMsg = "資料已被其他人異動過"; } if (master.CFN_YN == "Y") { errMsg += "資料已確認 不可修改"; } else if (master.CFN_YN == "P") { errMsg += "資料申請中 不可修改"; } else { //Save if (isValid) { var TR01A = TR01Business.BeforSave(master); if (UserInfo.LanguageType == Language.Type.VN) { TR01A.PUR_DT = DateBeg.Replace("/", ""); //master.DtPUR_DT.Value.ToString("yyyyddMM"); TR01A.EXP_DT = DateEnd.Replace("/", ""); //master.DtEXP_DT.Value.ToString("yyyyddMM"); System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Language.US); TR01A.TAX_RT = double.Parse(Tax); //越文沒有小數點特殊處理 } else { TR01A.PUR_DT = master.DtPUR_DT.Value.ToString("yyyyMMdd"); TR01A.EXP_DT = master.DtEXP_DT.Value.ToString("yyyyMMdd"); } var addList = TR01Business.BeforSave(updateValues.Insert, EditType.AddNew); var updateList = TR01Business.BeforSave(updateValues.Update, EditType.Update); var result = _Service.Update(TR01A, addList, updateList, updateValues.DeleteKeys); errMsg = result.Message; master = TR01Business.FromEntity(result.Data); } } //Error handling if (errMsg.Length > 0 || !isValid) { for (int i = 0; i < updateValues.Insert.Count; i++) { ModelState.AddModelError($"Insert[{i}].IsValid", "Error"); } for (int i = 0; i < updateValues.Update.Count; i++) { ModelState.AddModelError($"Update[{i}].IsValid", "Error"); } string deleteIDStrList = ""; for (int i = 0; i < updateValues.DeleteKeys.Count; i++) { updateValues.SetErrorText(updateValues.DeleteKeys[i], "Unable to delete!"); deleteIDStrList += updateValues.DeleteKeys[i] + ","; } ViewData["DeleteIDList"] = deleteIDStrList; ViewData["ErrMsg"] = Resources.Resource.FailureStr + "<br />" + errMsg; } ViewData["Key"] = master.TR01A_ID; var BA01BList = new Services.BA01.BA01Service().GetAllD(master.BA01A_ID).ToList(); ViewBag.Data = BA01BList; //var BA01B = BA01BList.FirstOrDefault(x => x.BA01B_ID == master.BA01B_ID); //if (BA01B != null) //{ // master.TEL_NO = BA01B.TEL_NO; // master.TEL_EX = BA01B.TEL_EX; //} ViewData["CFN_YN"] = master.CFN_YN; if (master.CFN_YN == "Y") { ViewData["IsConfirm"] = true; } else { ViewData["IsConfirm"] = false; } ViewData["MasterForm"] = ReadViewHelper.PartialView(this, "_MasterForm", master); return(PartialView("_DetailGrid", GetTR01BList(master.TR01A_ID))); }
/// <summary>Only master data change</summary> /// <param name="master">主檔資料</param> /// <param name="key">JS keyOnPage的 value</param> /// <param name="Deletekey">要刪除的key</param> /// <param name="Reload_TF">控制是否單純刷新資料</param> /// <returns></returns> public ActionResult DetailGridCustomUpdate(TR01AViewModel master, string key, string Deletekey, string Reload_TF, string Lock, string DateBeg, string DateEnd, string Tax) { var errMsg = ""; if (Lock != null) { var entities = new PURSysEntities(); var keyInt = int.Parse(key); var data = entities.TR01A.First(x => x.TR01A_ID == keyInt); if (Lock == "Y") { data.CFN_YN = "N"; } else { data.CFN_YN = "Y"; } entities.SaveChanges(); } if (Reload_TF == "T")//load畫面 => 新增/查詢/取消 { int.TryParse(key, out int keyValue); if (keyValue > 0) { master = TR01Business.FromEntity(_Service.GetA(keyValue)); } else { //新增初始化 master.DtPUR_DT = DateTime.UtcNow.AddHours(07); master.CPN_NM = "劲亨金属表面处理工業有限公司 Công ty Jingheng"; master.TAX_RT = CacheCommonDataModule.GetTaxRate().First().Value; } ModelState.Clear(); } else // 修改(新增、修改) / 刪除 { if (master.CFN_YN == "Y") { errMsg += "資料已確認 不可修改"; int.TryParse(key, out int keyValue); master = TR01Business.FromEntity(_Service.GetA(keyValue)); } else if (master.CFN_YN == "P") { errMsg += "資料申請中 不可修改"; int.TryParse(key, out int keyValue); master = TR01Business.FromEntity(_Service.GetA(keyValue)); } else { if (int.TryParse(Deletekey, out int keyValue))// 刪除 { if (keyValue > 0) { errMsg = "查無此筆刪除資料"; var count = _Service.GetA(x => x.TR01A_ID == keyValue).Count(); if (count == 1) { errMsg = _Service.Delete(keyValue);//刪除成功回傳空字串 } if (errMsg.Length > 0) { ViewData["ErrMsg"] = "Delete Fail"; master = TR01Business.FromEntity(_Service.GetA(keyValue));//取回刪除失敗的資料回畫面顯示 } } ModelState.Clear(); } else// Save 新增、修改 data { //Help.ClearError(ModelState, "DtPUR_DT"); //Help.ClearError(ModelState, "DtEXP_DT"); if (UserInfo.LanguageType == Language.Type.VN) { master.DtPUR_DT = DateTime.Parse(DateBeg); master.DtEXP_DT = DateTime.Parse(DateEnd); ModelState.Clear(); TryValidateModel(master); } var isValid = TR01Business.Validation(master, ModelState); if (!TR01Business.ValidateRemove(master, null)) { isValid = false; errMsg = "資料已被其他人異動過"; } if (isValid)// Save { var TR01A = TR01Business.BeforSave(master); if (UserInfo.LanguageType == Language.Type.VN) { TR01A.PUR_DT = DateBeg.Replace("/", ""); //master.DtPUR_DT.Value.ToString("yyyyddMM"); TR01A.EXP_DT = DateEnd.Replace("/", ""); //master.DtEXP_DT.Value.ToString("yyyyddMM"); System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Language.US); TR01A.TAX_RT = double.Parse(Tax); } else { TR01A.PUR_DT = master.DtPUR_DT.Value.ToString("yyyyMMdd"); TR01A.EXP_DT = master.DtEXP_DT.Value.ToString("yyyyMMdd"); } var result = _Service.Update(TR01A); errMsg = result.Message; master = TR01Business.FromEntity(result.Data); } if (errMsg.Length > 0 || !isValid)// Result { errMsg += Resources.Resource.FailureStr; } } } } ViewData["ErrMsg"] = errMsg; ViewData["Key"] = master.TR01A_ID; var BA01BList = new Services.BA01.BA01Service().GetAllD(master.BA01A_ID).ToList(); ViewBag.Data = BA01BList; ViewData["CFN_YN"] = master.CFN_YN; if (master.CFN_YN == "Y") { ViewData["IsConfirm"] = true; } else { ViewData["IsConfirm"] = false; } ViewData["MasterForm"] = ReadViewHelper.PartialView(this, "_MasterForm", master); return(PartialView("_DetailGrid", GetTR01BList(master.TR01A_ID))); }
public static List <string> Validation(TR01AViewModel model, MVCxGridViewBatchUpdateValues <TR01BViewModel, int> updateValues, ModelStateDictionary modelState) { List <string> errMsg = new List <string>(); //不是新增的時候要去驗證是否有被異動過 if (model.TR01A_ID > 0) { TR01Service _Service = new TR01Service(); var count = _Service.GetA(x => x.TR01A_ID == model.TR01A_ID).Count(); if (count == 0) { errMsg.Add("已被其他使用者刪除"); } if (updateValues != null && updateValues.Update.Count > 0) { var TR01B_IDList = updateValues.Update.Select(x => x.TR01B_ID).ToList(); EntityConnection _Entity = new EntityConnection(); var DBCount = _Entity.TR01B.Where(x => TR01B_IDList.Contains(x.TR01B_ID)).Count(); if (DBCount != TR01B_IDList.Count()) { errMsg.Add("部份明細已被其他使用者刪除" + "<br />" + "請重新整理"); } } } //驗證Master var masterErrDic = new Dictionary <string, string>(); ValidateMaster(masterErrDic, model); if (masterErrDic.Count > 0) { errMsg.Add("Master contains error"); foreach (var err in masterErrDic) { modelState.AddModelError($"{err.Key}", err.Value);//display error in cell } } //驗證Detail if (updateValues != null) { var detailErrDic = new Dictionary <string, string>(); for (int i = 0; i < updateValues.Insert.Count; i++) { ValidateDetail(i, detailErrDic, updateValues.Insert[i], EditType.AddNew); } for (int i = 0; i < updateValues.Update.Count; i++) { ValidateDetail(i, detailErrDic, updateValues.Update[i], EditType.Update); } if (detailErrDic.Count > 0) { errMsg.Add("Detail contains error"); foreach (var item in detailErrDic) { modelState.AddModelError(item.Key, item.Value); } } } if (!modelState.IsValid) { errMsg.Add("請檢查紅色驚嘆號"); } return(errMsg); }
public static void SetDefaultValue(ref TR01AViewModel model) { }