using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using EMIS.Entities; using EMIS.ViewModel.UniversityManage.ClassroomManage; using EMIS.DataLogic.Repositories; namespace EMIS.DataLogic.UniversityManage.ClassroomManage { public class BuildingsInfoDAL { public BuildingsInfoRepository BuildingsInfoRepository { get; set; } public ClassroomRepository ClassroomRepository { get; set; } public ClassroomReserveRepository ClassroomReserveRepository { get; set; } public CollegeClassroomRepository CollegeClassroomRepository { get; set; } public CampusRepository CampusRepository { get; set; } public CollegeRepository CollegeRepository { get; set; } /// /// 查询对应的建筑信息View(统计对应的教室数量) /// /// /// public IQueryable GetBuildingsInfoViewQueryable(Expression> exp) { var query = from a in BuildingsInfoRepository.GetList(exp) join cr in ( from cr in ClassroomRepository.Entities group cr by cr.BuildingsInfoID into gcr select new { BuildingsInfoID = gcr.Key, ClassroomCount = gcr.Count() } ) on a.BuildingsInfoID equals cr.BuildingsInfoID into tempcr from bicr in tempcr.DefaultIfEmpty() select new BuildingsInfoView { BuildingsInfoID = a.BuildingsInfoID, Code = a.Code, Name = a.Name, CampusID = a.CF_Campus.CampusID, CampusCode = a.CF_Campus.No, CampusName = a.CF_Campus.Name, CollegeID = a.CF_College.CollegeID, CollegeCode = a.CF_College.No, CollegeName = a.CF_College.Name, CollegeCampusID = a.CF_College.CampusID, CollegeCampusCode = a.CF_College.CF_Campus.No, CollegeCampusName = a.CF_College.CF_Campus.Name, BuildingsTypeID = a.BuildingsTypeID, BuildingsStatusID = a.BuildingsStatusID, BuildingsLevel = a.BuildingsLevel, BuildingsArea = a.BuildingsArea, UseArea = a.UseArea, Position = a.Position, IsSpecial = a.IsSpecial ?? false, ClassroomCount = bicr.ClassroomCount == null ? 0 : bicr.ClassroomCount, Remark = a.Remark, RecordStatus = a.RecordStatus, CreateUserID = a.CreateUserID, CreateTime = a.CreateTime, ModifyUserID = a.ModifyUserID, ModifyTime = a.ModifyTime }; return query; } /// /// 查询教室信息View(根据建筑信息查询,关联排课中教室预留信息、统计排课分配的院系个数) /// /// /// public IQueryable GetClassroomViewQueryable(Expression> expBuildingsInfo) { var query = from bi in BuildingsInfoRepository.GetList(expBuildingsInfo) join cr in ClassroomRepository.Entities on bi.BuildingsInfoID equals cr.BuildingsInfoID join re in ClassroomReserveRepository.Entities on cr.ClassroomID equals re.ClassroomID into tempre from crre in tempre.DefaultIfEmpty() join cc in ( from cc in CollegeClassroomRepository.Entities group cc by cc.ClassroomID into gcr select new { ClassroomID = gcr.Key, ScheduleCollegeCount = gcr.Count() } ) on cr.ClassroomID equals cc.ClassroomID into tempcc from colcr in tempcc.DefaultIfEmpty() select new ClassroomView { ClassroomID = cr.ClassroomID, Code = cr.Code, Name = cr.Name, BuildingsInfoID = bi.BuildingsInfoID, BuildingsInfoCode = bi.Code, BuildingsInfoName = bi.Name, CampusID = bi.CampusID, CampusCode = bi.CF_Campus.No, CampusName = bi.CF_Campus.Name, CollegeID = cr.CollegeID, CollegeCode = cr.CF_College.No, CollegeName = cr.CF_College.Name, CollegeCampusID = cr.CF_College.CampusID, CollegeCampusCode = cr.CF_College.CF_Campus.No, CollegeCampusName = cr.CF_College.CF_Campus.Name, CF_ClassroomType = cr.CF_ClassroomType, ClassroomTypeIDList = cr.CF_ClassroomType.Select(x => x.ClassroomType).ToList(), LayoutTypeID = cr.LayoutTypeID, RoomUseID = cr.RoomUseID, FloorLevel = cr.FloorLevel, Acreage = cr.Acreage, RowCout = cr.RowCout, ColumnCount = cr.ColumnCount, Totalseating = cr.Totalseating, Effectiveseating = cr.Effectiveseating, Examinationseating = cr.Examinationseating, IsWrittenExam = cr.IsWrittenExam ?? false, IsMachinetest = cr.IsMachinetest ?? false, IsConcurrentUse = cr.IsConcurrentUse ?? false, IsReserve = crre.IsReserved == true ? true : false, IsAvailable = cr.IsAvailable ?? false, ScheduleCollegeCount = colcr.ScheduleCollegeCount == null ? 0 : colcr.ScheduleCollegeCount, Remark = cr.Remark, RecordStatus = cr.RecordStatus, CreateUserID = cr.CreateUserID, CreateTime = cr.CreateTime, ModifyUserID = cr.ModifyUserID, ModifyTime = cr.ModifyTime }; return query; } } }