public ActionResult List(Models.PerformChange.List vm)
 {
     return(Code.MvcHelper.Post(null, Url.Action("List", new { searchText = vm.SearchText, performId = vm.PerformId, classId = vm.ClassId })));
 }
        public ActionResult List()
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm = new Models.PerformChange.List();

                vm.PerformList = Perform.Controllers.PerformController.SelectList();

                if (vm.PerformId == 0 && vm.PerformList.Count > 0)
                {
                    vm.PerformId = vm.PerformList.FirstOrDefault().Value.ConvertToInt();
                }

                vm.ClassList = SelectOrgList(vm.PerformId);

                if (vm.ClassList.Count > 0 && vm.ClassId > 0)
                {
                    if (vm.ClassList.Where(d => d.Value.ConvertToInt() == vm.ClassId).Count() == decimal.Zero)
                    {
                        vm.ClassId = vm.ClassList.FirstOrDefault().Value.ConvertToInt();
                    }
                }

                if (vm.ClassId == 0 && vm.ClassList.Count > 0)
                {
                    vm.ClassId = vm.ClassList.FirstOrDefault().Value.ConvertToInt();
                }

                if (vm.ClassList.Count() == decimal.Zero)
                {
                    vm.ClassId = 0;
                }

                vm.OrgSelectInfo = SelectOrgSelectInfo(db, vm.ClassList, vm.PerformId);

                var tbOrg = (from p in db.Table <Course.Entity.tbOrg>()
                             .Include(d => d.tbClass)
                             .Include(d => d.tbYear)
                             .Include(d => d.tbCourse)
                             where p.Id == vm.ClassId
                             select p).FirstOrDefault();

                if (tbOrg != null)
                {
                    var tbPerformGroupIds = (from p in db.Table <Perform.Entity.tbPerformCourse>()
                                             where p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                             p.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                             p.tbCourse.IsDeleted == false &&
                                             p.tbPerformGroup.IsDeleted == false
                                             select p.tbPerformGroup.Id).ToList();

                    vm.PerformItemList = (from p in db.Table <Perform.Entity.tbPerformItem>()
                                          where tbPerformGroupIds.Contains(p.tbPerformGroup.Id) &&
                                          p.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                          p.tbPerformGroup.IsDeleted == false &&
                                          p.IsMany == false &&
                                          p.IsSelect == false
                                          orderby p.No
                                          select new Dto.PerformItem.List
                    {
                        Id = p.Id,
                        Rate = p.Rate,
                        ScoreMax = p.ScoreMax,
                        PerformItemName = p.PerformItemName
                    }
                                          ).ToList();


                    vm.PerformChangeDataList = (from p in db.Table <Perform.Entity.tbPerformData>()
                                                where p.tbPerformItem.tbPerformGroup.tbPerform.Id == vm.PerformId &&
                                                p.tbPerformItem.IsDeleted == false &&
                                                p.tbPerformItem.tbPerformGroup.IsDeleted == false &&
                                                p.tbStudent.IsDeleted == false &&
                                                p.tbCourse.IsDeleted == false &&
                                                p.tbPerformItem.IsMany == false &&
                                                p.tbPerformItem.IsSelect == false
                                                select new Dto.PerformChange.List
                    {
                        PerformItemId = p.tbPerformItem.Id,
                        Score = p.Score,
                        StudentId = p.tbStudent.Id,
                        CourseId = p.tbCourse.Id
                    }).ToList();

                    vm.PerformTotalList = (from p in db.Table <Perform.Entity.tbPerformTotal>()
                                           where p.tbPerform.Id == vm.PerformId &&
                                           p.tbCourse.Id == tbOrg.tbCourse.Id &&
                                           p.tbStudent.IsDeleted == false &&
                                           p.tbCourse.IsDeleted == false &&
                                           p.tbPerform.IsDeleted == false
                                           select new Dto.PerformTotal.List
                    {
                        Id = p.Id,
                        PerformId = p.tbPerform.Id,
                        CourseId = p.tbCourse.Id,
                        PerformName = p.tbPerform.PerformName,
                        CourseName = p.tbCourse.CourseName,
                        StudentId = p.tbStudent.Id,
                        StudentName = p.tbStudent.StudentName,
                        TotalScore = p.TotalScore
                    }).ToList();

                    var orgStudentList = new List <Dto.PerformData.List>();
                    if (tbOrg.IsClass)
                    {
                        if (tbOrg.tbClass != null)
                        {
                            orgStudentList = (from p in db.Table <Basis.Entity.tbClassStudent>()
                                              where p.tbClass.Id == tbOrg.tbClass.Id &&
                                              p.tbStudent.IsDeleted == false &&
                                              p.tbClass.IsDeleted == false
                                              orderby p.No, p.tbStudent.StudentCode
                                              select new Dto.PerformData.List
                            {
                                No = p.No.ToString(),
                                StudentId = p.tbStudent.Id,
                                StudentCode = p.tbStudent.StudentCode,
                                StudentName = p.tbStudent.StudentName,
                                CourseId = tbOrg.tbCourse.Id,
                            }).ToList();
                        }
                    }
                    else
                    {
                        orgStudentList = (from p in db.Table <Course.Entity.tbOrgStudent>()
                                          where p.tbOrg.Id == vm.ClassId &&
                                          p.tbStudent.IsDeleted == false &&
                                          p.tbOrg.IsDeleted == false
                                          orderby p.No, p.tbStudent.StudentCode
                                          select new Dto.PerformData.List
                        {
                            No = p.No.ToString(),
                            StudentId = p.tbStudent.Id,
                            StudentCode = p.tbStudent.StudentCode,
                            StudentName = p.tbStudent.StudentName,
                            CourseId = tbOrg.tbCourse.Id
                        }).ToList();
                    }

                    if (string.IsNullOrEmpty(vm.SearchText) == false)
                    {
                        orgStudentList = (from p in orgStudentList
                                          where p.StudentCode.Contains(vm.SearchText) || p.StudentName.Contains(vm.SearchText)
                                          select p).ToList();
                    }
                    vm.PerformChangeList = (from p in orgStudentList
                                            select new Dto.PerformChange.List
                    {
                        No = p.No == null ? "" : p.No.ToString(),
                        StudentCode = p.StudentCode.ToString(),
                        StudentName = p.StudentName.ToString(),
                        StudentId = p.StudentId,
                        CourseId = p.CourseId,
                        PerformItemList = vm.PerformItemList
                    }).ToList();
                }

                return(View(vm));
            }
        }