// GET: Moral/MoralReport public ActionResult List() { var vm = new Models.MoralReport.List(); using (var db = new XkSystem.Models.DbContext()) { vm.MoralList = MoralController.SelectList(); if (vm.MoralId == 0 && vm.MoralList.Count() > 0) { vm.MoralId = vm.MoralList.Select(t => t.Value).FirstOrDefault().ConvertToInt(); } var moral = db.Set <Entity.tbMoral>().Find(vm.MoralId); if (moral == null) { var endDate = DateTime.Now.Date; moral = (from p in db.Table <Entity.tbMoral>() where endDate <= p.ToDate && DateTime.Now >= p.FromDate select p).FirstOrDefault(); } if (moral == null) { vm.MoralIsNull = true; return(View(vm)); } if ((!vm.FromDate.HasValue || !vm.ToDate.HasValue) || vm.ToDate <= vm.FromDate) { vm.FromDate = moral.FromDate; vm.ToDate = moral.ToDate; } SetVmData(db, vm); } return(View(vm)); }
public ActionResult Check() { using (var db = new XkSystem.Models.DbContext()) { var vm = new Models.MoralData.List(); var tb = (from p in db.Table <Moral.Entity.tbMoralData>() /*where p.tbMoralItem.tbMoralGroup.tbMoral.MoralType == Code.EnumHelper.MoralType.Once*/ select p); if (vm.MoralId.HasValue && vm.MoralId.Value > 0) { tb = tb.Where(p => p.tbMoralItem.tbMoralGroup.tbMoral.Id == vm.MoralId.Value); } if (!string.IsNullOrWhiteSpace(vm.SearchText)) { tb = tb.Where(p => p.tbStudent.StudentCode.Contains(vm.SearchText) || p.tbStudent.StudentName.Contains(vm.SearchText)); } if (Code.Common.UserType != Code.EnumHelper.SysUserType.Administrator) { tb = tb.Where(p => p.tbSysUser.Id == Code.Common.UserId); } vm.MoralDataList = (from p in tb orderby p.InputDate descending select new Dto.MoralData.List() { Id = p.Id, No = p.No, DataText = p.DataText, MoralName = p.tbMoralItem.tbMoralGroup.tbMoral.MoralName, InputDate = p.InputDate, MoralDate = p.MoralDate, MoralItemId = p.tbMoralItem.Id, MoralId = p.tbMoralItem.tbMoralGroup.tbMoral.Id, MoralItemName = p.tbMoralItem.MoralItemName, MoralOptionId = p.tbMoralOption != null ? p.tbMoralOption.Id : 0, MoralOptionName = p.tbMoralOption != null ? p.tbMoralOption.MoralOptionName : "-", MoralOptionScore = p.tbMoralOption != null ? p.tbMoralOption.MoralOptionValue : Decimal.Zero, StudentGroupName = p.tbClassGroup != null ? p.tbClassGroup.ClassGroupName : "-", ClassName = p.tbClass != null ? p.tbClass.ClassName : "-", StudentName = p.tbStudent != null ? p.tbStudent.StudentName : "-", SysUserName = p.tbSysUser.UserName, CheckStatus = p.CheckStatus }).ToPageList(vm.Page); //vm.MoralList = MoralController.SelectList(Code.EnumHelper.MoralType.Once); vm.MoralList = MoralController.SelectList(); //vm.MoralClassList return(View(vm)); } }
private void SetVmDataForStar(Models.MoralRedFlag.List vm, XkSystem.Models.DbContext db, Entity.tbMoral moral) { vm.MoralList = MoralController.SelectList(); var classIds = new List <int>(); //管理员不限制班级 if (Code.Common.UserType == Code.EnumHelper.SysUserType.Administrator) { classIds = (from p in db.Table <Entity.tbMoralClass>() where p.tbMoral.Id == vm.MoralId select p.tbClass.Id).ToList(); } else { classIds = ( from p in db.Table <Entity.tbMoralClass>() join ct in db.Table <Basis.Entity.tbClassTeacher>() on p.tbClass.Id equals ct.tbClass.Id where p.tbMoral.Id == vm.MoralId && ct.tbTeacher.tbSysUser.Id == Code.Common.UserId select p.tbClass.Id ).ToList(); } if (classIds == null || !classIds.Any()) { vm.DataIsNull = true; return; } //vm.MoralItemList = MoralItemController.SelectListByMoralIdAndKind(vm.MoralId, Code.EnumHelper.MoralItemKind.Class); vm.MoralItemList = (from p in db.Table <Moral.Entity.tbMoralItem>() where p.tbMoralGroup.tbMoral.Id == vm.MoralId && (p.MoralItemKind == Code.EnumHelper.MoralItemKind.Class || p.MoralItemKind == Code.EnumHelper.MoralItemKind.Student) select new Dto.MoralItem.Info() { Id = p.Id, MoralItemName = p.MoralItemName, MoralGroupId = p.tbMoralGroup.Id, DefaultValue = p.DefaultValue, MaxScore = p.MaxScore, MinScore = p.MinScore, InitScore = p.InitScore }).ToList(); //var weekNum = Code.DateHelper.GetWeekNumOfYearByDate(DateTime.Now); //var startDate = Code.DateHelper.GetDateTimeByWeekNumOfYear(DateTime.Now.Year, weekNum); //var endDate = startDate.AddDays(8).AddSeconds(-1); DateTime startDate; DateTime endDate; var weekNum = vm.WeekNum.HasValue ? vm.WeekNum.Value : Code.DateHelper.GetWeekNumOfYearByDate(DateTime.Now); if (!vm.WeekNum.HasValue) { vm.WeekNum = weekNum; } Code.DateHelper.GetWeekDate(DateTime.Now.Year, weekNum, out startDate, out endDate); //vm.MoralStudentList = Student.Controllers.StudentController.GetStudentInfoListByClassIds(classIds); vm.MoralClassInfo = (from p in db.Table <Entity.tbMoralClass>() join mr in db.Table <Entity.tbMoralRedFlag>() on new { moralId = p.tbMoral.Id, classId = p.tbClass.Id, weekNum = vm.WeekNum.Value } equals new { moralId = mr.tbMoral.Id, classId = mr.tbClass.Id, weekNum = mr.WeekNum } into redFlag from r in redFlag.DefaultIfEmpty() where p.tbMoral.Id == vm.MoralId && classIds.Contains(p.tbClass.Id) select new Dto.MoralRedFlag.ClassInfo { Id = p.tbClass.Id, ClassName = p.tbClass.ClassName, IsRedFlag = r != null && !r.IsDisabled }).ToList(); //流动红旗和每周之星不一样,流动红旗也累加班级及班级下面学生/*、小组*/的分数 var moralData = (from p in db.Table <Entity.tbMoralData>() //join c in db.Table<Basis.Entity.tbClassStudent>() on p.tbStudent.Id equals c.tbStudent.Id into tbClassStudent //from cs in tbClassStudent.DefaultIfEmpty() where p.CheckStatus == Code.EnumHelper.CheckStatus.Success && p.tbMoralItem.tbMoralGroup.tbMoral.Id == vm.MoralId && (p.tbStudent != null || p.tbClass != null /*|| p.tbClassGroup!=null*/) && p.MoralDate >= startDate && p.MoralDate <= endDate select new { MoralItemId = p.tbMoralItem.Id, ClassId = p.tbClass != null ? p.tbClass.Id : 0, StudentId = p.tbStudent != null ? p.tbStudent.Id : 0, //AddScore = p.DataText.Value > 0 ? p.DataText.Value : 0, //SubScore = p.DataText.Value < 0 ? (0 - p.DataText.Value) : 0, DefaultValue = p.tbMoralItem.DefaultValue, Score = p.DataText.Value }).ToList(); var classData = moralData.Where(p => p.StudentId == 0).GroupBy(p => new { p.MoralItemId, p.ClassId, p.DefaultValue }).Select(p => new { ClassId = p.Key.ClassId, MoralItemId = p.Key.MoralItemId, DefaultValue = p.Key.DefaultValue, //AddScore = p.Sum(d => d.AddScore), //SubScore = p.Sum(d => d.SubScore), Score = p.Sum(d => d.Score) }).ToList(); var studentData = moralData.Where(p => p.StudentId > 0).GroupBy(p => new { p.MoralItemId, p.ClassId, p.DefaultValue }).Select(p => new { ClassId = p.Key.ClassId, MoralItemId = p.Key.MoralItemId, DefaultValue = p.Key.DefaultValue, //AddScore = p.Sum(d => d.AddScore), //SubScore = p.Sum(d => d.SubScore), Score = p.Sum(d => d.Score) }).ToList(); classData.AddRange(studentData); dynamic data; if (classData != null && classData.Any()) { data = classData.GroupBy(p => new { p.ClassId, p.MoralItemId, p.DefaultValue, p.Score }).Select(p => new { ClassId = p.Key.ClassId, MoralItemId = p.Key.MoralItemId, DefaultValue = p.Sum(d => d.DefaultValue), Score = p.Sum(d => d.Score) }).ToList(); } vm.MoralClassInfo.ForEach(p => { var entity = new Dto.MoralStat.RedFlag() { ClassId = p.Id, ClassName = p.ClassName, IsRedFlag = p.IsRedFlag, MoralItemList = new List <Dto.MoralStat.MoralItemList>() }; vm.MoralItemList.ForEach(i => { var itemData = new Dto.MoralStat.MoralItemList() { Id = i.Id, MoralItemName = i.MoralItemName, DefaultValue = i.DefaultValue }; var hasData = classData != null && classData.Any() ? classData.Where(d => d.ClassId == entity.ClassId && d.MoralItemId == i.Id).ToList() : null; if (hasData != null && hasData.Any()) { itemData.DefaultValue = hasData.Select(d => d.DefaultValue).FirstOrDefault(); //itemData.AddScore = hasData.Select(d => d.AddScore).FirstOrDefault(); //itemData.SubScore = hasData.Select(d => d.SubScore).FirstOrDefault(); itemData.RealScore = hasData.Select(d => d.Score).FirstOrDefault(); } entity.MoralItemList.Add(itemData); entity.TotalScore = entity.MoralItemList.Sum(s => (s.DefaultValue + s.RealScore)); entity.TotalDefaultValue = entity.MoralItemList.Sum(s => s.DefaultValue); //entity.TotalAddScore = entity.MoralItemList.Sum(s => s.AddScore); //entity.TotalSubScore = entity.MoralItemList.Sum(s => s.SubScore); }); vm.StatList.Add(entity); }); vm.StatList.ForEach(p => { p.Ranking = vm.StatList.Count(s => s.TotalScore > p.TotalScore) + 1; }); vm.StatList = vm.StatList.OrderBy(p => p.Ranking).ToList(); }
public ActionResult Edit() { using (var db = new XkSystem.Models.DbContext()) { var vm = new Models.MoralData.Edit(); var moral = db.Set <Moral.Entity.tbMoral>().Find(vm.MoralId); if (moral == null) { //moral = (from p in db.Table<Moral.Entity.tbMoral>() where DateTime.Now <= p.ToDate && DateTime.Now >= p.FromDate && p.IsOpen select p).FirstOrDefault(); moral = (from p in db.Table <Moral.Entity.tbMoral>() where p.IsOpen select p).FirstOrDefault(); } if (moral == null) { vm.DataIsNull = true; return(View(vm)); //return RedirectToAction("List", "Moral"); } switch (moral.MoralType) { case Code.EnumHelper.MoralType.Once: return(RedirectToAction("OnceEdit", new { MoralId = vm.MoralId })); case Code.EnumHelper.MoralType.Days: return(RedirectToAction("DayEdit", new { MoralId = vm.MoralId })); } if (vm.MoralDate == Code.DateHelper.MinDate) { vm.MoralDate = DateTime.Now.Date; } vm.MoralId = moral.Id; vm.MoralClassList = MoralClassController.SelectList(vm.MoralId); if (vm.ClassId == 0 && vm.MoralClassList != null && vm.MoralClassList.Any()) { vm.ClassId = vm.MoralClassList[0].ClassId; } if (Code.Common.UserType != Code.EnumHelper.SysUserType.Administrator) { //获取拥有评价权限的德育选项及班级列表 var classList = (from p in db.Table <Entity.tbMoralPowerClass>() where p.tbMoralPower.tbTeacher.tbSysUser.Id == Code.Common.UserId && (p.tbMoralPower.MoralDate == vm.MoralDate || !p.tbMoralPower.MoralDate.HasValue) && p.tbMoralPower.tbMoralItem.tbMoralGroup.tbMoral.Id == vm.MoralId select new //Models.MoralPower.Info() { MoralItemId = p.tbMoralPower.tbMoralItem.Id, MoralItemName = p.tbMoralPower.tbMoralItem.MoralItemName, ClassId = p.tbClass.Id, ClassName = p.tbClass.ClassName }).ToList(); classList.RemoveAll(p => !vm.MoralClassList.Select(t => t.ClassId).ToList().Contains(p.ClassId)); vm.MoralPowerClass = classList.GroupBy(p => new { p.MoralItemId, p.MoralItemName }).Select(p => new Models.MoralPower.Info() { MoralItemId = p.Key.MoralItemId, MoralItemName = p.Key.MoralItemName, MoralClass = new List <Dto.MoralClass.Info>() }).ToList(); vm.MoralPowerClass.ForEach(p => { p.MoralClass = classList.Where(c => c.MoralItemId == p.MoralItemId).Select(c => new Dto.MoralClass.Info() { ClassId = c.ClassId, ClassName = c.ClassName }).ToList(); }); } vm.MoralList = MoralController.SelectList(); if (vm.MoralClassList == null || !vm.MoralClassList.Any()) { return(View(vm)); } vm.MoralType = moral.MoralType; vm.FromDate = moral.FromDate.ToString(Code.Common.StringToDate); vm.ToDate = moral.ToDate.ToString(Code.Common.StringToDate); vm.KindId = vm.KindId ?? (int)Code.EnumHelper.MoralItemKind.Class; if (typeof(Code.EnumHelper.MoralItemKind).IsEnumDefined(vm.KindId)) { vm.Kind = (Code.EnumHelper.MoralItemKind)System.Enum.Parse(typeof(Code.EnumHelper.MoralItemKind), vm.KindId.ToString()); } //分组列表 vm.MoralGroupList = MoralGroupController.GetMoralGroupInfoList(vm.MoralId, vm.Kind); foreach (var group in vm.MoralGroupList) { //根据分组获取德育选项 vm.MoralItemList.AddRange(MoralItemController.SelectList(group.Id, vm.Kind)); ////根据分组及评价权限获取德育选项 //var tb=(from p in db.Table<tbMoralPowerClass>) } vm.MoralItemIsNull = vm.MoralItemList == null || vm.MoralItemList.Count == 0; if (vm.MoralItemIsNull) { return(View(vm)); } var moralClassIds = vm.MoralClassList.Select(p => p.ClassId).ToList(); vm.MoralDataList = (from p in db.Table <Moral.Entity.tbMoralData>() where p.CheckStatus == Code.EnumHelper.CheckStatus.Success && p.tbMoralItem.tbMoralGroup.tbMoral.Id == vm.MoralId && p.MoralDate == vm.MoralDate && p.MoralItemOperateType == Code.EnumHelper.MoralItemOperateType.Score select new Dto.MoralData.List() { Id = p.Id, StudentId = p.tbStudent != null ? p.tbStudent.Id : 0, StudentGroupId = p.tbClassGroup != null ? p.tbClassGroup.Id : 0, ClassId = p.tbClass != null ? p.tbClass.Id : 0, MoralItemId = p.tbMoralItem.Id, DataText = p.DataText }).ToList(); if (vm.ClassId > 0) { moralClassIds = new List <int> { vm.ClassId.Value }; } switch (vm.Kind) { case Code.EnumHelper.MoralItemKind.Student: vm.StudentList = Student.Controllers.StudentController.GetStudentInfoListByClassIds(moralClassIds); //vm.MoralClassListItem = MoralClassController.SelectItemList(vm.MoralId); vm.MoralClassListItem = vm.MoralClassList.Select(p => new SelectListItem() { Text = p.ClassName, Value = p.ClassId.ToString() }).ToList(); break; case Code.EnumHelper.MoralItemKind.Group: //vm.MoralClassListItem = MoralClassController.SelectItemList(vm.MoralId); vm.StudentGroupList = Basis.Controllers.ClassGroupController.SelectList(moralClassIds); vm.MoralClassListItem = vm.MoralClassList.Select(p => new SelectListItem() { Text = p.ClassName, Value = p.ClassId.ToString() }).ToList(); break; case Code.EnumHelper.MoralItemKind.Class: break; } return(View(vm)); } }
public ActionResult DayEdit() { using (var db = new XkSystem.Models.DbContext()) { var vm = new Models.MoralData.DayEdit(); var moral = db.Set <Moral.Entity.tbMoral>().Find(vm.MoralId); if (moral == null) { moral = (from p in db.Table <Moral.Entity.tbMoral>() where DateTime.Now <= p.ToDate && DateTime.Now >= p.FromDate select p).FirstOrDefault(); } if (moral == null) { vm.DataIsNull = true; return(View(vm)); //return RedirectToAction("List", "Moral"); } switch (moral.MoralType) { case Code.EnumHelper.MoralType.Many: return(RedirectToAction("Edit", new { MoralId = vm.MoralId })); case Code.EnumHelper.MoralType.Once: return(RedirectToAction("OnceEdit", new { MoralId = vm.MoralId })); } if (vm.MoralDate == Code.DateHelper.MinDate) { vm.MoralDate = moral.FromDate; } vm.MoralId = moral.Id; vm.MoralClassList = MoralClassController.SelectList(vm.MoralId); vm.MoralGroupList = MoralGroupController.GetMoralGroupInfoList(vm.MoralId); vm.MoralList = MoralController.SelectList(); vm.MoralType = moral.MoralType; vm.FromDate = moral.FromDate.ToString(Code.Common.StringToDate); vm.ToDate = moral.ToDate.ToString(Code.Common.StringToDate); foreach (var group in vm.MoralGroupList) { vm.MoralItemList.AddRange(MoralItemController.SelectList(group.Id)); } foreach (var item in vm.MoralItemList) { vm.MoralOptionList.AddRange(MoralOptionController.SelectList(item.Id)); } var moralClassIds = (from p in db.Table <Moral.Entity.tbMoralClass>() where p.tbMoral.Id == vm.MoralId select p.tbClass.Id).ToList(); vm.StudentList = Student.Controllers.StudentController.GetStudentInfoListByClassIds(moralClassIds); var moralItemIds = vm.MoralItemList.Select(p => p.Id); vm.MoralDataList = (from p in db.Table <Moral.Entity.tbMoralData>() where p.CheckStatus == Code.EnumHelper.CheckStatus.Success && moralItemIds.Contains(p.tbMoralItem.Id) && vm.MoralDate == p.MoralDate orderby p.No select new Dto.MoralData.OnceList() { Id = p.Id, DataText = p.DataText, MoralItemId = p.tbMoralItem.Id, MoralOptionId = p.tbMoralOption != null ? p.tbMoralOption.Id : 0, StudentId = p.tbStudent.Id, StudentName = p.tbStudent.StudentName, SysUserName = p.tbSysUser.UserName }).ToList(); return(View(vm)); } }