Exemplo n.º 1
0
        public ActionResult StudentDetailEdit(Models.MoralData.StudentDetailEdit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var moralItem = db.Set <Entity.tbMoralItem>().Find(vm.MoralItemId);

                var tbData = (from p in db.Table <Entity.tbMoralData>() where p.tbMoralItem.Id == vm.MoralItemId && p.MoralDate == vm.MoralDate select p);
                if (vm.ClassId > 0)
                {
                    tbData = tbData.Where(p => p.tbClass.Id == vm.ClassId);
                }
                if (vm.StudentGroupId > 0)
                {
                    tbData = tbData.Where(p => p.tbClassGroup.Id == vm.StudentGroupId);
                }
                if (vm.StudentId > 0)
                {
                    tbData = tbData.Where(p => p.tbStudent.Id == vm.StudentId);
                }
                //累计已评分数值
                var existsScore = tbData.Sum(p => p.DataText);

                //当前评分值
                var currentScore = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score;

                var score = moralItem.DefaultValue + (existsScore.HasValue ? existsScore.Value : 0) + currentScore;

                if (score > moralItem.MaxScore)
                {
                    return(Code.MvcHelper.Post(new List <string>()
                    {
                        $"累计分数【{score}】已超过该评分项的最高分【{moralItem.MaxScore}】!"
                    }));
                }

                if (score < moralItem.MinScore)
                {
                    return(Code.MvcHelper.Post(new List <string>()
                    {
                        $"累计分数【{score}】不能小于该评分项的最低分【{moralItem.MinScore}】!"
                    }));
                }



                if (vm.MoralDataId > 0)
                {
                    var tb = db.Set <Moral.Entity.tbMoralData>().Find(vm.MoralDataId);
                    if (tb != null)
                    {
                        tb.DataText = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score;
                        tb.Comment  = vm.Edit.Comment ?? string.Empty;
                        if (vm.Edit.tbMoralDataReasonId.HasValue && vm.Edit.tbMoralDataReasonId.Value > 0)
                        {
                            tb.tbMoralDataReason = db.Set <Entity.tbMoralDataReason>().Find(vm.Edit.tbMoralDataReasonId);
                        }
                        tb.MoralItemOperateType = moralItem.MoralItemOperateType;
                        tb.CheckStatus          = moralItem.AutoCheck ? Code.EnumHelper.CheckStatus.Success : Code.EnumHelper.CheckStatus.None;
                        if (!string.IsNullOrWhiteSpace(vm.Edit.MoralPhotos))
                        {
                            var tbMoralPhoto = (from p in db.Table <Entity.tbMoralPhoto>() where p.tbMoralData.Id == vm.MoralDataId select p);
                            foreach (var photo in tbMoralPhoto)
                            {
                                photo.IsDeleted = true;
                            }

                            var photoList = vm.Edit.MoralPhotos.Split('|').ToList();
                            photoList.RemoveAll(p => string.IsNullOrWhiteSpace(p));
                            db.Set <Entity.tbMoralPhoto>().AddRange(photoList.Select(p => new Entity.tbMoralPhoto()
                            {
                                FileName    = p,
                                tbMoralData = tb
                            }).ToList());
                        }

                        if (db.SaveChanges() > 0)
                        {
                            Sys.Controllers.SysUserLogController.Insert("修改了德育评分!");
                        }
                    }
                    else
                    {
                        return(Code.MvcHelper.Post(new List <string>()
                        {
                            Resources.LocalizedText.MsgNotFound
                        }));
                    }
                }
                else
                {
                    var tb = new Moral.Entity.tbMoralData()
                    {
                        DataText             = vm.Edit.MoralExpress == Code.EnumHelper.MoralExpress.Add ? vm.Edit.Score : 0 - vm.Edit.Score,
                        InputDate            = DateTime.Now.Date,
                        MoralDate            = vm.MoralDate,
                        tbMoralItem          = moralItem,
                        MoralItemOperateType = moralItem.MoralItemOperateType,
                        CheckStatus          = moralItem.AutoCheck ? Code.EnumHelper.CheckStatus.Success : Code.EnumHelper.CheckStatus.None,
                        Comment   = vm.Edit.Comment ?? string.Empty,
                        tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId),
                    };

                    if (vm.Edit.tbMoralDataReasonId.HasValue && vm.Edit.tbMoralDataReasonId.Value > 0)
                    {
                        tb.tbMoralDataReason = db.Set <Entity.tbMoralDataReason>().Find(vm.Edit.tbMoralDataReasonId);
                    }

                    if (vm.StudentId > 0)
                    {
                        tb.tbStudent = db.Set <Student.Entity.tbStudent>().Find(vm.StudentId);
                    }
                    if (vm.StudentGroupId > 0)
                    {
                        tb.tbClassGroup = db.Set <Basis.Entity.tbClassGroup>().Find(vm.StudentGroupId);
                    }
                    if (vm.ClassId > 0)
                    {
                        tb.tbClass = db.Set <Basis.Entity.tbClass>().Find(vm.ClassId);
                    }

                    db.Set <Moral.Entity.tbMoralData>().Add(tb);

                    if (!string.IsNullOrWhiteSpace(vm.Edit.MoralPhotos))
                    {
                        var photoList = vm.Edit.MoralPhotos.Split('|').ToList();
                        photoList.RemoveAll(p => string.IsNullOrWhiteSpace(p));
                        db.Set <Entity.tbMoralPhoto>().AddRange(photoList.Select(p => new Entity.tbMoralPhoto()
                        {
                            FileName    = p,
                            tbMoralData = tb
                        }).ToList());
                    }

                    if (db.SaveChanges() > 0)
                    {
                        Sys.Controllers.SysUserLogController.Insert("添加了德育评分!");
                    }
                }
            }
            return(Code.MvcHelper.Post(message: "操作成功!", returnUrl: Url.Action("StudentDetailList", new
            {
                ItemId = vm.MoralItemId,
                StudentId = vm.StudentId,
                GroupId = vm.StudentGroupId,
                ClassId = vm.ClassId,
                Date = vm.MoralDate.Date,
                Op = vm.OperateType
            })));
        }
Exemplo n.º 2
0
        public ActionResult SaveForDay(Models.MoralData.DayEdit vm)
        {
            var error = new List <string>();

            using (var db = new XkSystem.Models.DbContext())
            {
                var moralId = vm.MoralId;

                var moralItemIds = db.Table <Moral.Entity.tbMoralItem>().Where(p => p.tbMoralGroup.tbMoral.Id == vm.MoralId).Select(p => p.Id).ToList();
                var itemCount    = moralItemIds.Count;

                //列数
                var arrLength = itemCount * 2 + 4;          // 4=__RequestVerificationToken+MoralId+MoralDate+StudentIds
                var list      = new List <string>();
                for (var i = 3; i < arrLength; i++)
                {
                    list.Add(Request.Form[i]);
                }
                var listData   = new List <Moral.Entity.tbMoralData>();
                var studentIds = list[0].Split(',').Select(int.Parse).ToList();

                for (var i = 0; i < studentIds.Count; i++)
                {
                    Moral.Entity.tbMoralData tb = null;
                    for (var j = 1; j < list.Count; j += 2)
                    {
                        tb           = new Moral.Entity.tbMoralData();
                        tb.tbStudent = db.Set <Student.Entity.tbStudent>().Find(studentIds[i]);

                        //偶数,MoralItem
                        var items = list[j].Split(',').Select(int.Parse).ToList();
                        tb.tbMoralItem = db.Set <Moral.Entity.tbMoralItem>().Find(items[i]);

                        //奇数,MoralOption或者MoralDataText
                        var options = list[j + 1].Split(',');
                        var option  = options[i];

                        //值包含option前缀的为MoralOption
                        if (option.Contains("option_"))      // option_i
                        {
                            var optionId = option.Split('_')[1].ConvertToInt();
                            tb.tbMoralOption = db.Set <Moral.Entity.tbMoralOption>().Find(optionId);
                        }
                        else
                        {
                            //判断dataText是否在MinScore和MaxScore之间
                            var optionValue = option.ConvertToDecimal();
                            if (optionValue < tb.tbMoralItem.MinScore || optionValue > tb.tbMoralItem.MaxScore)
                            {
                                error.Add($"第{i + 1}行{tb.tbMoralItem.MoralItemName}的分数必须在{tb.tbMoralItem.MinScore}-{tb.tbMoralItem.MaxScore}之间!");
                            }
                            tb.DataText = option.ConvertToDecimal();
                        }
                        listData.Add(tb);
                    }
                }
                if (!error.Any())
                {
                    var tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId);
                    listData.ForEach(p =>
                    {
                        p.InputDate = DateTime.Now;
                        p.MoralDate = vm.MoralDate;
                        p.tbSysUser = tbSysUser;
                    });

                    var oldData = (from p in db.Table <Moral.Entity.tbMoralData>()
                                   where studentIds.Contains(p.tbStudent.Id) && moralItemIds.Contains(p.tbMoralItem.Id) &&
                                   vm.MoralDate == p.MoralDate
                                   select p);
                    foreach (var item in oldData)
                    {
                        item.IsDeleted = true;
                    }

                    db.Set <Moral.Entity.tbMoralData>().AddRange(listData);

                    if (db.SaveChanges() > 0)
                    {
                        Sys.Controllers.SysUserLogController.Insert("录入了德育数据!");
                    }
                }
            }
            return(Code.MvcHelper.Post(error, message: "保存成功!"));
        }