private void IsContainClass(IEnumerable <dynamic> coachTeachingSches, DateTime inClassStart, DateTime inClassOver, Sys.Models.TeachingSchedule info) { if (coachTeachingSches != null || coachTeachingSches.Count() > 0) { string timeStr = info.CurriculumBeginTime + "-" + info.CurriculumEndTime; foreach (var item in coachTeachingSches) { //已经添加的上课时间 DateTime classStart = Convert.ToDateTime("2008-08-08 " + item.CurriculumBeginTime); //已经添加的下课时间 DateTime classOver = Convert.ToDateTime("2008-08-08 " + item.CurriculumEndTime); if ((inClassStart >= classStart && inClassStart <= classStart) || (inClassStart >= classOver && inClassStart <= classOver)) { throw new Exception(info.CurriculumDate.Value.ToString("yyyy-MM-dd") + " " + timeStr + "已排课"); } } } }
private IList <Sys.Models.TeachingSchedule> BuildClass(bool isClass, DateTime startDate, string CurriculumTime, Models.RequestModel.TeachingScheduleRequest teachingschedule) { IList <Sys.Models.TeachingSchedule> entityList = new List <Sys.Models.TeachingSchedule>(); if (!isClass) { return(entityList); } string[] curriculumAMTimeArr = CurriculumTime.Split('-'); //上课开始时间 DateTime classStartTime = Convert.ToDateTime("2008-08-08 " + curriculumAMTimeArr[0]); //上课结束时间 DateTime classOverTime = Convert.ToDateTime("2008-08-08 " + curriculumAMTimeArr[1]); //检查是否有重复课程 IEnumerable <dynamic> coachTeachingSches = Services.CoachService.GetCoachTeachingScheByDay(teachingschedule.CoachID.Value, startDate.ToString("yyyy-MM-dd"), startDate.AddDays(1).ToString("yyyy-MM-dd")); bool classIsContain = true; while (classIsContain) { //单节课下课时间 DateTime singleClassOverTime = classStartTime.AddMinutes(teachingschedule.ClassLength); Sys.Models.TeachingSchedule info = new Sys.Models.TeachingSchedule() { AddTime = DateTime.Now, CurriculumDate = startDate, CurriculumBeginTime = classStartTime.ToString("HH:mm"), CurriculumEndTime = singleClassOverTime.ToString("HH:mm"), Info = teachingschedule.Info, CampusID = teachingschedule.CampusID, CoachID = teachingschedule.CoachID, CoachPrice = teachingschedule.CoachPrice, PKType = teachingschedule.PKType, Price = teachingschedule.Price, State = 0, Title = teachingschedule.Title, VenueID = teachingschedule.VenueID, PurchasePrice = teachingschedule.PurchasePrice }; //设置下一节课上课时间 if (singleClassOverTime >= classOverTime) { singleClassOverTime = classOverTime; info.CurriculumEndTime = classOverTime.ToString("HH:mm"); classIsContain = false; } //上课开始时间必须小于下课时间 if (classStartTime < singleClassOverTime) { IsContainClass(coachTeachingSches, classStartTime, singleClassOverTime, info); entityList.Add(info); classStartTime = classStartTime.AddMinutes(teachingschedule.ClassLength).AddMinutes(teachingschedule.RestLength); } } return(entityList); }