Example #1
0
        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));
        }
Example #2
0
        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));
        }