using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.Entities; using System.Linq.Expressions; using Bowin.Common.Linq.Entity; using Bowin.Common.Linq; using EMIS.DataLogic.SchedulingManage.SchedulingSettings; using EMIS.ViewModel.SchedulingManage.SchedulingSettings; using EMIS.CommonLogic.CalendarManage; using EMIS.ViewModel.CalendarManage; using EMIS.ViewModel.UniversityManage.ClassroomManage; namespace EMIS.CommonLogic.SchedulingManage.SchedulingSettings { public class ClassroomScheduleSettingServices : BaseServices, IClassroomScheduleSettingServices { public ClassroomScheduleSettingDAL classroomScheduleSettingDAL { get; set; } public IArrangementServices arrangementServices { get; set; } public ClassroomReserveDAL classroomReserveDAL { get; set; } /// <summary> /// 查询 /// </summary> /// <param name="classroomID"></param> /// <param name="collegeID"></param> /// <param name="titleID"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public Bowin.Common.Linq.Entity.IGridResultSet<ViewModel.SchedulingManage.SchedulingSettings.ClassroomScheduleSettingView> GetClassroomScheduleSettingViewGrid(Guid? classroomID, Guid? collegeID, int? classroomTypeID, int pageIndex, int pageSize) { Expression<Func<CF_Classroom, bool>> exp = (x => true); if (classroomID.HasValue) exp = exp.And(x => x.ClassroomID == classroomID); if (collegeID.HasValue) exp = exp.And(x => x.CollegeID == collegeID); if (classroomTypeID.HasValue) exp = exp.And(x => x.CF_ClassroomType.Select(y => y.ClassroomType).Contains(classroomTypeID)); var query = classroomScheduleSettingDAL.GetClassroomScheduleSettingViewQueryable(exp); var resultSet = query.OrderByDescending(x => x.CreateTime).ToGridResultSet<ClassroomScheduleSettingView>(pageIndex, pageSize); var classroomIDList = resultSet.rows.Select(x => x.ClassroomID).ToList(); var queryClassroomTyoeView = classroomReserveDAL.GetClassroomTypeViewQueryable().Where(x => classroomIDList.Contains(x.ClassroomID)).ToList(); resultSet.rows.ForEach(x => x.ClassroomTypes = new HashSet<ClassroomTypeView>(queryClassroomTyoeView.Where(y => y.ClassroomID == x.ClassroomID))); return resultSet; } /// <summary> /// 查询 /// </summary> /// <param name="userID"></param> /// <returns></returns> public Bowin.Common.Linq.Entity.IGridResultSet<ViewModel.CalendarManage.ArrangementView> GetArrangementViewGrid(Guid? classroomID) { var resultSet = classroomScheduleSettingDAL.GetArrangementViewQueryable(classroomID).OrderBy(x => x.StartTimes).ToGridResultSet<ArrangementView>(); if (resultSet.total > 0) { return resultSet; } return arrangementServices.GetArrangementViewGrid(); } /// <summary> /// 新增 /// </summary> /// <param name="listArrangement"></param> public void ClassroomScheduleSettingAdd(List<ViewModel.CalendarManage.ArrangementView> listArrangement, Guid? classroomID) { try { UnitOfWork.Delete<ES_ClassroomScheduleSetting>(x => x.ClassroomID == classroomID); foreach (var arrangementView in listArrangement) { bool? IsOnWork = false; for (int i = 0; i < 7; i++) { if (i == (int)DayOfWeek.Monday) IsOnWork = arrangementView.MondayIsOnWork; if (i == (int)DayOfWeek.Tuesday) IsOnWork = arrangementView.TuesdayIsOnWork; if (i == (int)DayOfWeek.Wednesday) IsOnWork = arrangementView.WednesdayIsOnWork; if (i == (int)DayOfWeek.Thursday) IsOnWork = arrangementView.ThursdayIsOnWork; if (i == (int)DayOfWeek.Friday) IsOnWork = arrangementView.FridayIsOnWork; if (i == (int)DayOfWeek.Saturday) IsOnWork = arrangementView.SaturdayIsOnWork; if (i == (int)DayOfWeek.Sunday) IsOnWork = arrangementView.SundayIsOnWork; ES_ClassroomScheduleSetting classroomScheduleSetting = new ES_ClassroomScheduleSetting(); classroomScheduleSetting.ClassroomScheduleSettingID = Guid.NewGuid(); classroomScheduleSetting.ClassroomID = classroomID; classroomScheduleSetting.CoursesTimeID = arrangementView.CoursesTimeID; classroomScheduleSetting.Weekday = i; classroomScheduleSetting.IsOnWork = IsOnWork; SetNewStatus(classroomScheduleSetting); UnitOfWork.Add(classroomScheduleSetting); } } UnitOfWork.Commit(); } catch (Exception) { throw; } } /// <summary> /// 删除 /// </summary> /// <param name="userIDs"></param> public void ClassroomScheduleSettingDelete(List<Guid?> classroomIDs) { try { UnitOfWork.Delete<ES_ClassroomScheduleSetting>(x => classroomIDs.Contains(x.ClassroomID)); } catch (Exception) { throw; } } } }