using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using EMIS.Entities; using EMIS.ViewModel.UniversityManage.SpecialtyClassManage; using EMIS.ViewModel.StudentManage.StudentProfile; using EMIS.DataLogic.Repositories; namespace EMIS.DataLogic.UniversityManage.SpecialtyClassManage { public class ClassmajorDAL { public ClassmajorRepository ClassmajorRepository { get; set; } public FacultymajorRepository FacultymajorRepository { get; set; } public GrademajorRepository GrademajorRepository { get; set; } public CollegeRepository CollegeRepository { get; set; } public CampusRepository CampusRepository { get; set; } public StudentRepository StudentRepository { get; set; } public UserRepository UserRepository { get; set; } /// /// 查询对应的班级信息View /// /// /// public IQueryable GetClassmajorViewQueryable(Expression> expClassmajor) { var query = from cl in ClassmajorRepository.GetList(expClassmajor) join gr in GrademajorRepository.Entities on cl.GrademajorID equals gr.GrademajorID join fa in FacultymajorRepository.Entities on gr.FacultymajorID equals fa.FacultymajorID join col in CollegeRepository.Entities on fa.CollegeID equals col.CollegeID join cam in CampusRepository.Entities on col.CampusID equals cam.CampusID join c in UserRepository.Entities on cl.UserID equals c.UserID into gu from guser in gu.DefaultIfEmpty() join d in UserRepository.Entities on cl.AssistantUserID equals d.UserID into ga from gassis in ga.DefaultIfEmpty() select new ClassmajorView { ClassmajorID = cl.ClassmajorID, No = cl.No, Name = cl.Name, Abbreviation = cl.Abbreviation, EnglishName = cl.EnglishName, ClassNum = cl.ClassNum, FacultymajorID = gr.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, GrademajorID = cl.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, CampusID = col.CampusID, CampusNo = cam.No, CampusName = cam.Name, CollegeID = fa.CollegeID, CollegeCode = col.No, CollegeName = col.Name, GradeID = gr.GradeID, SemesterID = gr.SemesterID, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, GraduateSchoolyearID = gr.GraduateSchoolyearID, GraduateValue = gr.CF_Schoolyear.Value, GraduateSchoolyearCode = gr.CF_Schoolyear.Code, UserID = cl.UserID, UserName = guser.Name, AssistantUserID = cl.AssistantUserID, AssistantUserName = gassis.Name, Fixedclassroom = cl.Fixedclassroom, Remark = cl.Remark, RecordStatus = cl.RecordStatus, CreateUserID = cl.CreateUserID, CreateTime = cl.CreateTime, ModifyUserID = cl.ModifyUserID, ModifyTime = cl.ModifyTime }; return query; } /// /// 查询对应的班级信息View(统计对应的学生人数) /// /// /// /// public IQueryable GetClassmajorViewQueryable(Expression> expClassmajor, Expression> expStudent) { var query = from cl in ClassmajorRepository.GetList(expClassmajor) join gr in GrademajorRepository.Entities on cl.GrademajorID equals gr.GrademajorID join fa in FacultymajorRepository.Entities on gr.FacultymajorID equals fa.FacultymajorID join col in CollegeRepository.Entities on fa.CollegeID equals col.CollegeID join cam in CampusRepository.Entities on col.CampusID equals cam.CampusID join sc in ( from sc in StudentRepository.GetList(expStudent) group sc by sc.CF_Classmajor.ClassmajorID into g select new { ClassmajorID = g.Key, StudentCount = g.Count() }) on cl.ClassmajorID equals sc.ClassmajorID into dsc from esc in dsc.DefaultIfEmpty() join c in UserRepository.Entities on cl.UserID equals c.UserID into gu from guser in gu.DefaultIfEmpty() join d in UserRepository.Entities on cl.AssistantUserID equals d.UserID into ga from gassis in ga.DefaultIfEmpty() select new ClassmajorView { ClassmajorID = cl.ClassmajorID, No = cl.No, Name = cl.Name, Abbreviation = cl.Abbreviation, EnglishName = cl.EnglishName, ClassNum = cl.ClassNum, FacultymajorID = gr.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, GrademajorID = cl.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, CampusID = col.CampusID, CampusNo = cam.No, CampusName = cam.Name, CollegeID = fa.CollegeID, CollegeCode = col.No, CollegeName = col.Name, GradeID = gr.GradeID, SemesterID = gr.SemesterID, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, GraduateSchoolyearID = gr.GraduateSchoolyearID, GraduateValue = gr.CF_Schoolyear.Value, GraduateSchoolyearCode = gr.CF_Schoolyear.Code, UserID = cl.UserID, UserName = guser.Name, AssistantUserID = cl.AssistantUserID, AssistantUserName = gassis.Name, Fixedclassroom = cl.Fixedclassroom, StudentCount = esc.StudentCount == null ? 0 : esc.StudentCount, Remark = cl.Remark, RecordStatus = cl.RecordStatus, CreateUserID = cl.CreateUserID, CreateTime = cl.CreateTime, ModifyUserID = cl.ModifyUserID, ModifyTime = cl.ModifyTime }; return query; } /// /// 查询班级信息对应的学生信息BaseStudentView /// /// /// /// public IQueryable GetStudentBaseViewQueryable(Expression> expClassmajor, Expression> expStudent) { var query = from cl in ClassmajorRepository.GetList(expClassmajor) join stu in StudentRepository.GetList(expStudent) on cl.ClassmajorID equals stu.ClassmajorID join gr in GrademajorRepository.Entities on cl.GrademajorID equals gr.GrademajorID join fa in FacultymajorRepository.Entities on gr.FacultymajorID equals fa.FacultymajorID join us in UserRepository.Entities on stu.UserID equals us.UserID select new StudentBaseView { UserID = stu.UserID, LoginID = us.LoginID, UserName = us.Name, SexID = stu.SexID, IDNumber = stu.IDNumber, StudentStatus = stu.StudentStatus, InSchoolStatusID = stu.InSchoolStatusID, ClassmajorID = stu.ClassmajorID, ClassmajorNo = cl.No, ClassmajorName = cl.Name, ClassNum = cl.ClassNum == null ? 1 : cl.ClassNum, GradeID = gr.GradeID, SemesterID = gr.SemesterID, GrademajorID = cl.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, FacultymajorID = gr.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name }; return query; } } }