using System; using System.Collections.Generic; using System.Linq; using System.Text; using Bowin.Common.Linq; using Bowin.Common.Linq.Entity; using EMIS.ViewModel.EducationManage; using EMIS.ViewModel.EducationManagement; using EMIS.DataLogic.EducationManage; using System.Linq.Expressions; using EMIS.Entities; using EMIS.ViewModel; namespace EMIS.CommonLogic.EducationManage { public class EducationMissionClassCheckServices : BaseServices, IEducationMissionClassCheckServices { public EducationMissionClassCheckDAL educationMissionClassCheckDAL { get; set; } public IGridResultSet GetEducationMissionClassCheckViewGrid(ConfiguretView configuretView, Guid? schoolyearID, int? weekNum, int? weekDay, Guid? times, Guid? classroomID, Guid? coursematerialID, Guid? staffID, int? opinionID, int? checkWayID, int pageIndex, int pageSize) { Expression> emccexp = (x => true); Expression> emexp = (x => true); Expression> esexp = (x => true); Expression> mctexp = (x => true); Expression> emcexp = (x => true); Expression> eswnexp = (x => true); if (schoolyearID.HasValue) { emexp = emexp.And(x => x.SchoolyearID == schoolyearID); } if (weekNum.HasValue) { eswnexp = eswnexp.And(x => x.WeekNum == weekNum); } if (weekDay.HasValue) { esexp = esexp.And(x => x.Weekday == weekDay); } if (times.HasValue) { esexp = esexp.And(x => x.CoursesTimeID == times); } if (classroomID.HasValue) { esexp = esexp.And(x => x.ClassroomID == classroomID); } if (coursematerialID.HasValue) { emcexp = emcexp.And(x => x.CoursematerialID == coursematerialID); } if (staffID.HasValue) { emcexp = emcexp.And(x => x.EM_MissionClassTeacher.Any(y => y.UserID == staffID)); } if (opinionID.HasValue) { emccexp = emccexp.And(x => x.OpinionID == opinionID); } if (checkWayID.HasValue) { emccexp = emccexp.And(x => x.CheckWayID == checkWayID); } var query = educationMissionClassCheckDAL.GetEducationMissionClassCheckViewQueryble(emccexp, emexp, esexp, mctexp, emcexp, eswnexp); if (!string.IsNullOrEmpty(configuretView.ConditionValue)) query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue); var result = this.GetQueryByDataRangeByCollege(query).OrderByDescending(x => x.SchoolyearCode).ThenBy(x => x.ClassroomCode).ToGridResultSet(pageIndex, pageSize); var educationMissionClassID = result.rows.Select(x => x.EducationMissionClassID).ToList(); var educationSchedulingID = result.rows.Select(x => x.EducationSchedulingID).ToList(); var missionClassTeacherList = educationMissionClassCheckDAL.GetTeacherByEducationSchedulingID(x => educationSchedulingID.Contains(x.EducationSchedulingID)).ToList(); result.rows.ForEach(x => x.MissionClassTeacherView = new HashSet(missionClassTeacherList.Where(y => y.EducationSchedulingID == x.EducationSchedulingID))); return result; } /// /// 获取导出列表 /// /// /// /// /// /// /// /// /// /// /// /// /// /// public List GetEducationMissionClassCheckViewList(ConfiguretView configuretView, Guid? schoolyearID, int? weekNum, int? weekDay, Guid? times, Guid? classroomID, Guid? coursematerialID, Guid? staffID, int? opinionID, int? checkWayID, List educationMissionClassCheckIDList) { Expression> emccexp = (x => true); Expression> emexp = (x => true); Expression> esexp = (x => true); Expression> mctexp = (x => true); Expression> emcexp = (x => true); Expression> eswnexp = (x => true); if (educationMissionClassCheckIDList != null) { emccexp = emccexp.And(x => educationMissionClassCheckIDList.Contains(x.EducationMissionClassCheckID)); } if (schoolyearID.HasValue) { emexp = emexp.And(x => x.SchoolyearID == schoolyearID); } if (weekNum.HasValue) { eswnexp = eswnexp.And(x => x.WeekNum == weekNum); } if (weekDay.HasValue) { esexp = esexp.And(x => x.Weekday == weekDay); } if (times.HasValue) { esexp = esexp.And(x => x.CoursesTimeID == times); } if (classroomID.HasValue) { esexp = esexp.And(x => x.ClassroomID == classroomID); } if (coursematerialID.HasValue) { emcexp = emcexp.And(x => x.CoursematerialID == coursematerialID); } if (staffID.HasValue) { mctexp = mctexp.And(x => x.UserID == staffID); } if (opinionID.HasValue) { emccexp = emccexp.And(x => x.OpinionID == opinionID); } if (checkWayID.HasValue) { emccexp = emccexp.And(x => x.CheckWayID == checkWayID); } var query = educationMissionClassCheckDAL.GetEducationMissionClassCheckViewQueryble(emccexp, emexp, esexp, mctexp, emcexp, eswnexp); if (!string.IsNullOrEmpty(configuretView.ConditionValue)) query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue); var result = this.GetQueryByDataRangeByCollege(query).OrderByDescending(x => x.SchoolyearCode).ThenBy(x => x.ClassroomCode).ToList(); var educationMissionClassID = result.Select(x => x.EducationMissionClassID).ToList(); var educationSchedulingID = result.Select(x => x.EducationSchedulingID).ToList(); var missionClassTeacherList = educationMissionClassCheckDAL.GetTeacherByEducationSchedulingID(x => educationSchedulingID.Contains(x.EducationSchedulingID)).ToList(); result.ForEach(x => x.MissionClassTeacherView = new HashSet(missionClassTeacherList.Where(y => y.EducationSchedulingID == x.EducationSchedulingID))); return result; } public IGridResultSet GetEducationMissionClassViewByCondition(ConfiguretView configuretView, Guid? schoolyearID, int? weekNum, int? weekDay, Guid? CoursesTimeID, Guid? ClassroomID, int pageIndex, int pageSize) { Expression> eswnexp = x => true; Expression> esexp = x => true; Expression> emexp = (x => true); Expression> emcexp = (x => true); if (schoolyearID.HasValue) { emexp = emexp.And(x => x.SchoolyearID == schoolyearID); } if (weekNum.HasValue) { eswnexp = eswnexp.And(x => x.WeekNum == weekNum); } if (weekDay.HasValue) { esexp = esexp.And(x => x.Weekday == weekDay); } if (CoursesTimeID.HasValue) { esexp = esexp.And(x => x.CoursesTimeID == CoursesTimeID); } if (ClassroomID.HasValue) { esexp = esexp.And(x => x.ClassroomID == ClassroomID); } var query = educationMissionClassCheckDAL.GetEducationMissionClassViewByConditionQueryble(emcexp, emexp, eswnexp, esexp); if (!string.IsNullOrEmpty(configuretView.ConditionValue)) query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue); var result = this.GetQueryByDataRangeByCollege(query).OrderBy(x => x.Name).ToGridResultSet(pageIndex, pageSize); //var educationMissionClassID = result.rows.Select(x => x.EducationMissionClassID).ToList(); //var missionClassTeacherList = educationMissionClassCheckDAL.GetTeacherNameQuery(esexp, eswnexp).ToList(); //result.rows.ForEach(x => x.MissionClassTeacherView = new HashSet(missionClassTeacherList.Where(y => y.EducationMissionClassID == x.EducationMissionClassID))); return result; } public IGridResultSet GetCoursematerialByCondition(ConfiguretView configuretView, Guid? schoolyearID, int? weekNum, int? weekDay, Guid? CoursesTimeID, Guid? ClassroomID, Guid? educationID, int pageIndex, int pageSize) { Expression> eswnexp = x => true; Expression> esexp = x => true; Expression> emexp = (x => true); Expression> emcexp = (x => true); if (educationID.HasValue) { emcexp = emcexp.And(x => x.EducationMissionClassID == educationID); } if (schoolyearID.HasValue) { emexp = emexp.And(x => x.SchoolyearID == schoolyearID); } if (weekNum.HasValue) { eswnexp = eswnexp.And(x => x.WeekNum == weekNum); } if (weekDay.HasValue) { esexp = esexp.And(x => x.Weekday == weekDay); } if (CoursesTimeID.HasValue) { esexp = esexp.And(x => x.CoursesTimeID == CoursesTimeID); } if (ClassroomID.HasValue) { esexp = esexp.And(x => x.ClassroomID == ClassroomID); } var query = educationMissionClassCheckDAL.GetEducationMissionClassViewByConditionQueryble(emcexp, emexp, eswnexp, esexp); if (!string.IsNullOrEmpty(configuretView.ConditionValue)) query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue); var result = this.GetQueryByDataRangeByCollege(query).OrderBy(x => x.Name).ToGridResultSet(pageIndex, pageSize); //var educationMissionClassID = result.rows.Select(x => x.EducationMissionClassID).ToList(); //var missionClassTeacherList = educationMissionClassCheckDAL.GetTeacherNameQuery(esexp, eswnexp).ToList(); //result.rows.ForEach(x => x.MissionClassTeacherView = new HashSet(missionClassTeacherList.Where(y => y.EducationMissionClassID == x.EducationMissionClassID))); return result; } /// /// 获取单个信息 /// /// /// public EducationMissionClassCheckView GetEducationMissionClassCheckView(Guid? educationMissionClassCheckID) { try { var graduationApplyView = educationMissionClassCheckDAL.GetEducationMissionClassCheckView(educationMissionClassCheckID); return graduationApplyView; } catch (Exception ex) { throw new Exception(ex.Message); } } public void EducationMissionClassCheckEdit(EducationMissionClassCheckView educationMissionClassCheckView, List teacherList) { try { //根据周次、星期、节次、场地、任务班去找对应的排课周次ID var educationSchedulingWeekNumID = educationMissionClassCheckDAL.GetEducationSchedulingWeekNumID(educationMissionClassCheckView.WeekNum, educationMissionClassCheckView.Weekday, educationMissionClassCheckView.CoursesTimeID, educationMissionClassCheckView.ClassroomID, (Guid)educationMissionClassCheckView.EducationMissionClassID); educationMissionClassCheckView.EducationSchedulingWeekNumID = educationSchedulingWeekNumID; //查询数据库进行验证 var educationMissionClassCheckVerification = educationMissionClassCheckDAL.educationMissionClassCheckRepository .GetList(x => x.EducationMissionClassCheckID != educationMissionClassCheckView.EducationMissionClassCheckID && x.EducationSchedulingWeekNumID == educationMissionClassCheckView.EducationSchedulingWeekNumID) .SingleOrDefault(); if (educationMissionClassCheckVerification == null) { //数据有误验证 if (educationMissionClassCheckView.EducationMissionClassCheckID != Guid.Empty) { var educationMissionClassCheck = educationMissionClassCheckDAL.educationMissionClassCheckRepository .GetList(x => x.EducationMissionClassCheckID == educationMissionClassCheckView.EducationMissionClassCheckID, x => x.Sys_User) .SingleOrDefault(); if (educationMissionClassCheck == null) { throw new Exception("数据有误,请核查"); } else { educationMissionClassCheck.EducationSchedulingWeekNumID = educationMissionClassCheckView.EducationSchedulingWeekNumID; educationMissionClassCheck.StudentComment = educationMissionClassCheckView.StudentComment; educationMissionClassCheck.TeacherComment = educationMissionClassCheckView.TeacherComment; educationMissionClassCheck.DeviceComment = educationMissionClassCheckView.DeviceComment; educationMissionClassCheck.CheckWayID = educationMissionClassCheckView.CheckWayID; educationMissionClassCheck.OpinionID = educationMissionClassCheckView.OpinionID; educationMissionClassCheck.Remark = educationMissionClassCheckView.Remark; educationMissionClassCheck.Sys_User = new HashSet(); teacherList.ForEach(x => { Sys_User user = educationMissionClassCheckDAL.userRepository.GetSingle(y => y.UserID == x.UserID); //educationMissionClassCheck.Sys_User = new HashSet(); educationMissionClassCheck.Sys_User.Add(user); }); SetModifyStatus(educationMissionClassCheck); UnitOfWork.Update(educationMissionClassCheck); } } else { //表示新增 EM_EducationMissionClassCheck educationMissionClassCheck = new EM_EducationMissionClassCheck(); educationMissionClassCheck.EducationMissionClassCheckID = Guid.NewGuid(); educationMissionClassCheck.EducationSchedulingWeekNumID = educationMissionClassCheckView.EducationSchedulingWeekNumID; educationMissionClassCheck.StudentComment = educationMissionClassCheckView.StudentComment; educationMissionClassCheck.TeacherComment = educationMissionClassCheckView.TeacherComment; educationMissionClassCheck.DeviceComment = educationMissionClassCheckView.DeviceComment; educationMissionClassCheck.CheckWayID = educationMissionClassCheckView.CheckWayID; educationMissionClassCheck.OpinionID = educationMissionClassCheckView.OpinionID; educationMissionClassCheck.Remark = educationMissionClassCheckView.Remark; teacherList.ForEach(x => { Sys_User user = educationMissionClassCheckDAL.userRepository.GetSingle(y => y.UserID == x.UserID); educationMissionClassCheck.Sys_User.Add(user); }); SetNewStatus(educationMissionClassCheck); UnitOfWork.Add(educationMissionClassCheck); } } else { throw new Exception("已存在相同的教学检查,请核查"); } //事务提交 UnitOfWork.Commit(); } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 删除 /// /// /// public bool EducationMissionClassCheckDelete(List educationMissionClassCheckIDs) { try { List emccList = educationMissionClassCheckDAL.educationMissionClassCheckRepository.GetList(x => educationMissionClassCheckIDs.Contains(x.EducationMissionClassCheckID), (x => x.Sys_User)).ToList(); foreach (EM_EducationMissionClassCheck emcc in emccList) { emcc.Sys_User = new HashSet(); UnitOfWork.Remove(emcc); } //UnitOfWork.Delete(x => educationMissionClassCheckIDs.Contains(x.EducationMissionClassCheckID)); UnitOfWork.Commit(); return true; } catch (Exception ex) { throw ex; } } /// /// 根据任务班ID获取授课老师姓名 /// /// /// public string GetTeacherbyEducationMissionClass(Guid EducationMissionClassID) { try { var missionClassTeacherList = educationMissionClassCheckDAL.GetMissionClassTeacherQuery(x => x.EducationMissionClassID == EducationMissionClassID).ToList(); string TeacherNames = ""; foreach (MissionClassTeacherView mission in missionClassTeacherList) { TeacherNames = TeacherNames + mission.Name + ","; } TeacherNames = TeacherNames.Substring(0, TeacherNames.Length - 1); return TeacherNames; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 根据学年学期,周次,星期,节次,教室获取排课中的授课老师 /// /// /// public string GetTeacherByAll(ConfiguretView configuretView, Guid? schoolyearID, int? weekNum, int? weekDay, Guid? coursesTimeID, Guid? classroomID, Guid? educationClassID) { try { Expression> exp = x => true; Expression> eswnexp = x => true; if (schoolyearID.HasValue) { exp = exp.And(x => x.SchoolyearID == schoolyearID); } if (weekDay.HasValue) { exp = exp.And(x => x.Weekday == weekDay); } if (coursesTimeID.HasValue) { exp = exp.And(x => x.CoursesTimeID == coursesTimeID); } if (classroomID.HasValue) { exp = exp.And(x => x.ClassroomID == classroomID); } if (weekNum.HasValue) { eswnexp = eswnexp.And(x => x.WeekNum == weekNum); } var missionClassTeacherList = educationMissionClassCheckDAL.GetTeacherNameQuery(exp, eswnexp).ToList(); string TeacherNames = ""; foreach (MissionClassTeacherView mission in missionClassTeacherList) { TeacherNames = TeacherNames + mission.Name + ","; } TeacherNames = TeacherNames.Substring(0, TeacherNames.Length - 1); return TeacherNames; } catch (Exception ex) { throw new Exception(ex.Message); } } public List GetCheckTeacherViewListByCheckID(Guid EducationMissionClassCheckID) { return educationMissionClassCheckDAL.GetEducationMissionClassCheckTeacherListViewQueryble(EducationMissionClassCheckID).ToList(); } } }