コード例 #1
0
        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));
        }
コード例 #2
0
        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());
            }
        }