using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using EMIS.Entities; using EMIS.ViewModel; using EMIS.ViewModel.EducationManage.EducationArrange; using EMIS.DataLogic.Repositories; namespace EMIS.DataLogic.EducationManage.EducationArrange { public class EducationMissionClassStudentDAL { public EducationMissionRepository EducationMissionRepository { get; set; } public EducationMissionClassRepository EducationMissionClassRepository { get; set; } public EducationMissionClassTeachingSettingRepository EducationMissionClassTeachingSettingRepository { get; set; } public EducationSchedulingClassRepository EducationSchedulingClassRepository { get; set; } public CourseProcessRepository CourseProcessRepository { get; set; } public SchoolyearRepository SchoolyearRepository { get; set; } public CoursematerialRepository CoursematerialRepository { get; set; } public StudentRepository StudentRepository { get; set; } public ClassmajorRepository ClassmajorRepository { get; set; } public GrademajorRepository GrademajorRepository { get; set; } public FacultymajorRepository FacultymajorRepository { get; set; } public DepartmentRepository DepartmentRepository { get; set; } public CollegeRepository CollegeRepository { get; set; } public CampusRepository CampusRepository { get; set; } public ClassroomRepository ClassroomRepository { get; set; } public UserRepository UserRepository { get; set; } /// /// 查询对应的教学任务班学生名单信息 /// /// /// /// /// /// public IQueryable GetEducationMissionClassStudentViewQueryable(Expression> expEducationSchedulingClass, Expression> expEducationMissionClass, Expression> expEducationMission, Expression> expStudent) { var query = from esc in EducationSchedulingClassRepository.GetList(expEducationSchedulingClass) join emc in EducationMissionClassRepository.GetList(expEducationMissionClass) on esc.EducationMissionClassID equals emc.EducationMissionClassID from cou in CoursematerialRepository.Entities.Where(x => x.CoursematerialID == emc.CoursematerialID) join em in EducationMissionRepository.GetList(expEducationMission) on emc.EducationMissionID equals em.EducationMissionID from sy in SchoolyearRepository.Entities.Where(x => x.SchoolyearID == em.SchoolyearID) from dep in DepartmentRepository.Entities.Where(x => x.DepartmentID == em.DepartmentID).DefaultIfEmpty() from coucol in CollegeRepository.Entities.Where(x => x.CollegeID == dep.CollegeID).DefaultIfEmpty() from emcst in EducationMissionClassTeachingSettingRepository.Entities.Where(x => x.EducationMissionClassID == emc.EducationMissionClassID).DefaultIfEmpty() from stu in esc.CF_Student.AsQueryable().Where(expStudent) from cl in ClassmajorRepository.Entities.Where(x => x.ClassmajorID == stu.ClassmajorID) from gr in GrademajorRepository.Entities.Where(x => x.GrademajorID == cl.GrademajorID) from fa in FacultymajorRepository.Entities.Where(x => x.FacultymajorID == gr.FacultymajorID) from col in CollegeRepository.Entities.Where(x => x.CollegeID == fa.CollegeID) from cam in CampusRepository.Entities.Where(x => x.CampusID == col.CampusID) from us in UserRepository.Entities.Where(x => x.UserID == stu.UserID) join mscl in ClassmajorRepository.Entities on emc.MainScheduleClassID equals mscl.ClassmajorID into tempmscl from emcmscl in tempmscl.DefaultIfEmpty() join cp in ( from coupr in CourseProcessRepository.Entities group coupr by coupr.EducationMissionClassID into g select new { EducationMissionClassID = g.Key, ExecHours = g.Sum(x => x.Times ?? 0) } ) on emc.EducationMissionClassID equals cp.EducationMissionClassID into tempcp from emccp in tempcp.DefaultIfEmpty() from emccr in ClassroomRepository.Entities.Where(x => x.ClassroomID == emc.ClassroomID).DefaultIfEmpty() select new EducationMissionClassStudentView { EducationSchedulingClassID = esc.EducationSchedulingClassID, SchedulingClassName = esc.TaskGroupName, UserID = stu.UserID, StudentNo = us.LoginID, Name = us.Name, SexID = stu.SexID, BirthDate = stu.BirthDate, NationID = stu.NationID, PoliticsID = stu.PoliticsID, InSchoolStatusID = stu.InSchoolStatusID, StudentStatus = stu.StudentStatus, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, ClassmajorID = stu.ClassmajorID, ClassmajorNo = cl.No, ClassmajorName = cl.Name, ClassNum = cl.ClassNum, GradeID = gr.GradeID, GrademajorID = cl.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, FacultymajorID = gr.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, CollegeID = fa.CollegeID, CollegeCode = col.No, CollegeName = col.Name, CampusID = col.CampusID, CampusNo = cam.No, CampusName = cam.Name, EducationMissionClassID = esc.EducationMissionClassID, EducationMissionID = emc.EducationMissionID, MissionName = em.ClassName, SchoolyearID = em.SchoolyearID, SchoolyearCode = sy.Code, Value = sy.Value, MainScheduleClassID = emc.MainScheduleClassID, MainScheduleClassNo = emcmscl.No, MainScheduleClassName = emcmscl.Name, MissionSourceID = emc.MissionSourceTypeID, MissionTypeID = emc.OptionalCourseTypeID, OrderNo = emc.OrderNo, MissionClassName = emc.Name, CoursematerialID = emc.CoursematerialID, CourseCode = cou.CourseCode, CourseName = cou.CourseName, DepartmentID = em.DepartmentID, DepartmentCode = dep.No, DepartmentName = dep.Name, CourseCollegeID = dep.CollegeID, CourseCollegeCode = coucol.No, CourseCollegeName = coucol.Name, CourseStructureID = emc.CourseStructureID, CourseCategoryID = emc.CourseCategoryID, CourseTypeID = emc.CourseTypeID, CourseQualityID = emc.CourseQualityID, Credit = emcst.Credit ?? 0, TheoryCourse = emcst.TheoryCourse ?? 0, Practicehours = emcst.Practicehours ?? 0, Trialhours = emcst.Trialhours ?? 0, Totalhours = (emcst.TheoryCourse ?? 0) + (emcst.Practicehours ?? 0), ExecHours = emccp.ExecHours == null ? 0 : emccp.ExecHours, TheoryWeeklyNum = emcst.TheoryWeeklyNum ?? 0, PracticeWeeklyNum = emcst.PracticeWeeklyNum ?? 0, TrialWeeklyNum = emcst.TrialWeeklyNum ?? 0, SchoolweeksNum = (emcst.TheoryWeeklyNum ?? 0) + (emcst.PracticeWeeklyNum ?? 0), WeeklyHours = emcst.WeeklyHours ?? 0, WeeklyNum = emcst.WeeklyNum ?? 0, StartWeeklyNum = emcst.StartWeeklyNum ?? 0, EndWeeklyNum = emcst.EndWeeklyNum ?? 0, StartEndWeeklyNum = (emcst.StartWeeklyNum ?? 0) + "-" + (emcst.EndWeeklyNum ?? 0), ExecWeeklyNum = emc.EM_EducationMissionClassSettings.Min(x => x.WeeklyNum) + "-" + emc.EM_EducationMissionClassSettings.Max(x => x.WeeklyNum), ClassroomTypeID = emc.ClassroomTypeID, ClassroomID = emc.ClassroomID, ClassroomCode = emccr.Code, ClassroomName = emccr.Name, IsNeedMaterial = emc.IsNeedMaterial ?? false, TeachinglanguageID = emc.TeachinglanguageID, ExaminationModeID = emc.ExaminationModeID, ResultTypeID = emc.ResultTypeID, HandleModeID = emc.HandleModeID, TeachingModeID = emc.TeachingModeID, ApprovalStatus = emc.RecordStatus, Remark = emc.Remark }; return query; } } }