using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.DataLogic.Repositories; using EMIS.ViewModel.UniversityManage.TeacherManage; using System.Linq.Expressions; using EMIS.Entities; using EMIS.ViewModel.ExaminationManage; using EMIS.DataLogic.UniversityManage.TeacherManage; namespace EMIS.DataLogic.ExaminationManage { public class ExaminationTeacherDAL { public ExaminationTeacherRepository ExaminationTeacherRepository { get; set; } public ExaminationRoomLayoutRepository ExaminationRoomLayoutRepository { get; set; } public ExaminationPlanRepository ExaminationPlanRepository { get; set; } public StaffDAL StaffDAL { get; set; } public IQueryable GetAvailableStaffView(Expression> examinationPlanExp, Guid classroomID, Expression> staffExp) { var q = ( from et in ExaminationTeacherRepository.Entities join s in StaffDAL.GetStaffViewQueryable(staffExp) on et.UserID equals s.UserID join nas in ( from ep in ExaminationPlanRepository.GetList(examinationPlanExp) join erl in ExaminationRoomLayoutRepository.Entities on true equals true where erl.EX_ExaminationPlan.ExaminationDate == ep.ExaminationDate && erl.ClassroomID != classroomID && erl.EX_ExaminationPlan.EndTime >= ep.StartTime && erl.EX_ExaminationPlan.StartTime <= ep.EndTime from s in erl.CF_Staff select s ) on et.UserID equals nas.UserID into dnas from enas in dnas.DefaultIfEmpty() where enas.UserID == null select s ); return q; } public IQueryable GetAvailableStaffViewGdss(Expression> otherExaminationPlanExp, Guid classroomID, Expression> staffExp) { var q = ( from et in ExaminationTeacherRepository.Entities join s in StaffDAL.GetStaffViewQueryable(staffExp) on et.UserID equals s.UserID join nas in ( from other in ExaminationPlanRepository.GetList(otherExaminationPlanExp) join otherLayout in ExaminationRoomLayoutRepository.Entities on other.ExaminationPlanID equals otherLayout.ExaminationPlanID where otherLayout.ClassroomID != classroomID from s in otherLayout.CF_Staff select s ) on et.UserID equals nas.UserID into dnas from enas in dnas.DefaultIfEmpty() where enas.UserID == null select s ); return q; } public IQueryable GetConflictStaffView(Expression> examinationPlanExp, DateTime? date, TimeSpan? startTime, TimeSpan? endTime) { var q = ( from ep in ExaminationPlanRepository.GetList(examinationPlanExp) from erl in ep.EX_ExaminationRoomLayout from erls in erl.CF_Staff join erlt in ( from erlt1 in ExaminationRoomLayoutRepository.Entities from erlst1 in erlt1.CF_Staff select new { UserID = erlst1.UserID, ExaminationPlanID = erlt1.EX_ExaminationPlan.ExaminationPlanID, ExaminationPlanName = erlt1.EX_ExaminationPlan.ClassName, erlt1.EX_ExaminationPlan.ExaminationDate, erlt1.EX_ExaminationPlan.StartTime, erlt1.EX_ExaminationPlan.EndTime } ) on erls.UserID equals erlt.UserID where ep.ExaminationPlanID != erlt.ExaminationPlanID && erlt.ExaminationDate == date && erlt.EndTime >= startTime && erlt.StartTime <= endTime select new TeacherConflictView { UserID = erls.Sys_User.UserID, Name = erls.Sys_User.Name, ExaminationPlanID = erlt.ExaminationPlanID, ExaminationPlanName = erlt.ExaminationPlanName, StartTime = erlt.StartTime, EndTime = erlt.EndTime } ); return q; } } }