public ActionResult Edit(int id = 0) { var vm = new Models.MoralItem.Edit(); using (var db = new XkSystem.Models.DbContext()) { vm.MoralType = db.Set <Moral.Entity.tbMoral>().Find(vm.MoralId).MoralType; if (id > 0) { var tb = (from p in db.Table <Moral.Entity.tbMoralItem>() where p.Id == id select new Dto.MoralItem.Edit() { Id = p.Id, InitScore = p.InitScore, MaxScore = p.MaxScore, MinScore = p.MinScore, DefaultValue = p.DefaultValue, MoralExpress = p.MoralExpress, MoralItemName = p.MoralItemName, MoralItemType = p.MoralItemType, MoralItemKind = p.MoralItemKind, MoralItemOperateType = p.MoralItemOperateType, No = p.No, MoralGroupId = p.tbMoralGroup.Id, AutoCheck = p.AutoCheck }).FirstOrDefault(); if (tb != null) { vm.MoralItemEdit = tb; if (vm.MoralType != Code.EnumHelper.MoralType.Many) { vm.MoralOptionList = MoralOptionController.SelectList(vm.MoralItemEdit.Id); } } } else { vm.MoralItemEdit.No = db.Table <Moral.Entity.tbMoralItem>().Where(p => p.tbMoralGroup.tbMoral.Id == vm.MoralId).Select(p => p.No).DefaultIfEmpty(0).Max() + 1; vm.MoralItemEdit.MoralItemType = Code.EnumHelper.MoralItemType.Select; vm.MoralItemEdit.MoralItemOperateType = Code.EnumHelper.MoralItemOperateType.Score; } } vm.MoralGroupList = MoralGroupController.SelectList(vm.MoralId); vm.MoralItemKindList = typeof(Code.EnumHelper.MoralItemKind).ToItemList(); return(View(vm)); }
public ActionResult Edit(Models.MoralItem.Edit vm) { var error = new List <string>(); using (var db = new XkSystem.Models.DbContext()) { var tbMoralGroup = (from p in db.Set <Moral.Entity.tbMoralGroup>().Include(p => p.tbMoral) where p.Id == vm.MoralItemEdit.MoralGroupId select new { p, p.tbMoral }).FirstOrDefault(); if (vm.MoralItemEdit.MoralItemOperateType == Code.EnumHelper.MoralItemOperateType.Score) { if (vm.MoralItemEdit.MaxScore <= vm.MoralItemEdit.MinScore) { error.AddError("最大分值必须大于最小分值!"); return(Code.MvcHelper.Post(error)); } //var tbMoralGroup = (from p in db.Set<Moral.Entity.tbMoralGroup>().Include(p => p.tbMoral) where p.Id == vm.MoralItemEdit.MoralGroupId select new { p, p.tbMoral }).FirstOrDefault(); if (tbMoralGroup.tbMoral.MoralType != Code.EnumHelper.MoralType.Many) { if (vm.MoralItemEdit.InitScore < vm.MoralItemEdit.MinScore || vm.MoralItemEdit.InitScore > vm.MoralItemEdit.MaxScore) { error.AddError("初始分分必须介于最小分和最大分之间!"); return(Code.MvcHelper.Post(error)); } } if (tbMoralGroup.tbMoral.MoralType == Code.EnumHelper.MoralType.Many) { if (vm.MoralItemEdit.DefaultValue > vm.MoralItemEdit.MaxScore || vm.MoralItemEdit.DefaultValue < vm.MoralItemEdit.MinScore) { error.AddError("基础分必须介于最小分和最大分之间!"); return(Code.MvcHelper.Post(error)); } } } var isExists = (db.Table <Moral.Entity.tbMoralItem>() .Where(t => t.MoralItemName == vm.MoralItemEdit.MoralItemName && t.tbMoralGroup.tbMoral.Id == vm.MoralId && t.tbMoralGroup.Id == vm.MoralItemEdit.MoralGroupId && t.Id != vm.MoralItemEdit.Id) ).Any(); if (isExists) { error.AddError("系统中已存在相同项目名称的记录!"); return(Code.MvcHelper.Post(error)); } var emptyString = new string[] { }; var ids = Request["txtId"]?.Split(',') ?? emptyString; var nos = Request["txtNo"]?.Split(',') ?? emptyString; var names = Request["txtMoralOptionName"]?.Split(',') ?? emptyString; var values = Request["txtMoralOptionValue"]?.Split(',') ?? emptyString; //单次模式,如果选项类型是下拉框,判断是否有设置选项 if (tbMoralGroup.tbMoral.MoralType != Code.EnumHelper.MoralType.Many && vm.MoralItemEdit.MoralItemType == Code.EnumHelper.MoralItemType.Select) { if (names.Count() == decimal.Zero || names.Count(p => !string.IsNullOrWhiteSpace(p)) == 0) { error.AddError("至少应添加一个 [选项名称] 不为空的选项数据!"); return(Code.MvcHelper.Post(error)); } } Moral.Entity.tbMoralItem tbMoralItem = null; if (vm.MoralItemEdit.Id > 0) { tbMoralItem = db.Set <Moral.Entity.tbMoralItem>().Find(vm.MoralItemEdit.Id); if (tbMoralItem == null) { error.AddError(Resources.LocalizedText.MsgNotFound); return(Code.MvcHelper.Post(error)); } } else { tbMoralItem = new Moral.Entity.tbMoralItem(); } tbMoralItem.InitScore = vm.MoralItemEdit.InitScore; tbMoralItem.MaxScore = vm.MoralItemEdit.MaxScore; tbMoralItem.MinScore = vm.MoralItemEdit.MinScore; tbMoralItem.DefaultValue = vm.MoralItemEdit.DefaultValue; tbMoralItem.MoralExpress = vm.MoralItemEdit.MoralExpress; tbMoralItem.MoralItemName = vm.MoralItemEdit.MoralItemName; tbMoralItem.MoralItemType = vm.MoralItemEdit.MoralItemType; tbMoralItem.MoralItemKind = vm.MoralItemEdit.MoralItemKind; tbMoralItem.MoralItemOperateType = vm.MoralItemEdit.MoralItemOperateType; tbMoralItem.tbMoralGroup = tbMoralGroup.p; tbMoralItem.AutoCheck = vm.MoralItemEdit.AutoCheck; tbMoralItem.No = (vm.MoralItemEdit.No ?? 0) == 0 ? db.Table <Moral.Entity.tbMoralItem>().Where(p => p.tbMoralGroup.tbMoral.Id == vm.MoralId).Select(p => p.No).DefaultIfEmpty(0).Max() + 1 : vm.MoralItemEdit.No.Value; if (vm.MoralItemEdit.Id == 0) { db.Set <Moral.Entity.tbMoralItem>().Add(tbMoralItem); } //编辑的时候,改变操作方式时,删除原有方式下的德育数据 if (vm.MoralItemEdit.Id > 0) { var tbMoralData = (from p in db.Table <Entity.tbMoralData>() where p.tbMoralItem.Id == vm.MoralItemEdit.Id && p.MoralItemOperateType != vm.MoralItemEdit.MoralItemOperateType select p); foreach (var item in tbMoralData) { item.IsDeleted = true; } } #region tbMoralOption if (tbMoralGroup.tbMoral.MoralType != Code.EnumHelper.MoralType.Many) { var oldIds = ids.Where(p => !string.IsNullOrWhiteSpace(p)).Select(int.Parse); //var optionList = (from p in db.Table<Moral.Entity.tbMoralOption>() where p.tbMoralItem.Id == tbMoralItem.Id && !oldIds.Contains(p.Id) select p); var optionList = (from p in db.Table <Moral.Entity.tbMoralOption>() where p.tbMoralItem.Id == tbMoralItem.Id select p); if (vm.MoralItemEdit.MoralItemType == Code.EnumHelper.MoralItemType.Text) { foreach (var option in optionList) { option.IsDeleted = true; } } else { for (var i = 0; i < ids.Length; i++) { var _OptionId = ids[i].ConvertToInt(); var _No = nos[i].ConvertToInt(); var _Name = names[i]; if (string.IsNullOrWhiteSpace(_Name)) { continue; } var _Value = values[i]; if (_Value.ConvertToDecimal() > tbMoralItem.MaxScore) { error.Add("选项的分数不能超过项目的最大分数!"); break; } if (_Value.ConvertToDecimal() <= decimal.Zero) { error.Add("选项的分数不能为0!"); break; } if (_OptionId > 0) { //var option = db.Set<Moral.Entity.tbMoralOption>().Find(_OptionId.ConvertToInt()); var option = optionList.First(p => p.Id == _OptionId); option.No = _No == 0 ? db.Table <Moral.Entity.tbMoralOption>().Where(p => p.tbMoralItem.Id == tbMoralItem.Id).Select(p => p.No).DefaultIfEmpty(0).Max() + 1 : _No; option.MoralOptionName = _Name; option.MoralOptionValue = _Value.ConvertToDecimal(); } else { var option = new Moral.Entity.tbMoralOption() { No = _No == 0 ? db.Table <Moral.Entity.tbMoralOption>().Where(p => p.tbMoralItem.Id == tbMoralItem.Id).Select(p => p.No).DefaultIfEmpty(0).Max() + 1 : _No, MoralOptionName = _Name, MoralOptionValue = _Value.ConvertToDecimal(), tbMoralItem = tbMoralItem }; db.Set <Moral.Entity.tbMoralOption>().Add(option); } } } } #endregion if (error != null && error.Any()) { return(Code.MvcHelper.Post(error)); } else { if (db.SaveChanges() > 0) { Sys.Controllers.SysUserLogController.Insert($"{(vm.MoralItemEdit.Id == 0 ? "添加" : "修改")}了德育项目!"); } } return(Code.MvcHelper.Post()); } }