public ActionResult Edit(PurchaseComplex info) { ResultModel result = new ResultModel(); try { #region 驗證Model if (!ModelState.IsValid) { throw new Exception(ModelStateErrorClass.FormatToString(ModelState)); } // 至少需有一筆明細資料 if (info.ChildList == null || info.ChildList.Count == 0) { ModelState.AddModelError("ChildList", "至少需有一筆明細資料。"); } else { var query = info.ChildList .GroupBy(x => x.ProductID) .ToDictionary(x => x.Key, x => x.Count()) .Where(x => x.Value > 1) .ToList(); CDMS.Web.Common.DuplicateValidator validator = new CDMS.Web.Common.DuplicateValidator(query); if (validator.Message.Count > 0) { foreach (var s in validator.Message) { ModelState.AddModelError("ChildList", s); } } } if (!ModelState.IsValid) { string message = ModelStateErrorClass.FormatToString(ModelState); result.Status = false; result.Message = message; return(Json(result)); } #endregion #region 前端資料變後端用資料ViewModel時用 #endregion #region Service資料庫 this._PurchaseComplexService.Update(info); #endregion #region 息頁面設定 result.Status = true; result.CloseWindow = false; result.Url = Url.Action("Edit", new { id = info.Purchase.PurchaseID }); result.Message = "MessageComplete".ToLocalized(); #endregion } catch (Exception ex) { #region 錯誤時錯誤訊息 result.Status = false; result.Message = ex.Message.ToString(); #endregion } return(Json(result)); }
public ActionResult Edit(ProductComplex info) { ResultModel result = new ResultModel(); try { #region 驗證Model if (!ModelState.IsValid) { throw new Exception(ModelStateErrorClass.FormatToString(ModelState)); } var query = info.ChildList .GroupBy(x => x.AlternativeID) .ToDictionary(x => x.Key, x => x.Count()) .Where(x => x.Value > 1) .ToList(); CDMS.Web.Common.DuplicateValidator validator = new CDMS.Web.Common.DuplicateValidator(query); if (validator.Message.Count > 0) { foreach (var s in validator.Message) { ModelState.AddModelError("AlternativeID", s); } } var query2 = info.ChildList .Where(x => x.AlternativeID == info.Product.ProductID) .ToList() .Count; if (query2 > 0) { ModelState.AddModelError("AlternativeID", "替代品不可與產品相同<br/>"); } if (!ModelState.IsValid) { string message = ModelStateErrorClass.FormatToString(ModelState); result.Status = false; result.Message = message; return(Json(result)); } #endregion // 有修改的資料 foreach (var item in info.ChildList.Where(x => x.IsDirty == true)) { Alternative target = Mapper.Map <Alternative>(item); if (target.SeqNo == 0) { this._AlternativeService.Create(target); } else { this._AlternativeService.Update(target); } } #region 息頁面設定 result.Status = true; result.Url = Url.Action("Index", "Alternative", new { id = info.Product.ProductID }); result.Message = "MessageComplete".ToLocalized(); #endregion } catch (Exception ex) { #region 錯誤時錯誤訊息 result.Status = false; result.Message = ex.Message.ToString(); #endregion } return(Json(result)); }