예제 #1
0
        /// <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"));
            }
        }
예제 #2
0
 private void ValidateMaster(TR01AViewModel master)
 {
     //if (master.REM_MM != null && master.REM_MM.Length > 10)
     //{
     //    ModelState.AddModelError("REM_MM", "Error REM_MM Too Long");
     //}
 }
예제 #3
0
 private static void ValidateMaster(Dictionary <string, string> errorDic, TR01AViewModel master)
 {
     if (master.CUR_RT < 1)
     {
         errorDic.Add("CUR_RT", "不可小於1");
     }
 }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
 //==========================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));
 }
예제 #7
0
        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);
        }
예제 #8
0
        /// <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"));
            }
        }
예제 #9
0
        /// <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)));
        }
예제 #10
0
        /// <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)));
        }
예제 #11
0
        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);
        }
예제 #12
0
 public static void SetDefaultValue(ref TR01AViewModel model)
 {
 }