Пример #1
0
        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);
        }
Пример #2
0
        public IHttpActionResult Create(Models.RequestModel.TeachingScheduleRequest teachingschedule)
        {
            logs.Info(Newtonsoft.Json.JsonConvert.SerializeObject(teachingschedule));

            if (!ModelState.IsValid)
            {
                return(Ok(Comm.ResponseModel.ResponseModelBase.GetRes(ValidationMsg)));
            }

            try
            {
                //上课周期
                string[] curriculumDateArr = teachingschedule.CurriculumDateStr
                                             .Split("to".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

                DateTime startDate = Convert.ToDateTime(curriculumDateArr[0]);
                DateTime endDate   = Convert.ToDateTime(curriculumDateArr[1]);

                List <Sys.Models.TeachingSchedule> entityList = new List <Sys.Models.TeachingSchedule>();

                bool isContain = true;
                while (isContain)
                {
                    try
                    {
                        //上午上课
                        entityList.AddRange(BuildClass(teachingschedule.TimepickerAMCheckd, startDate, teachingschedule.CurriculumAMTime, teachingschedule));
                        //下午上课
                        entityList.AddRange(BuildClass(teachingschedule.TimepickerPMCheckd, startDate, teachingschedule.CurriculumPMTime, teachingschedule));
                    }
                    catch (Exception ex)
                    {
                        logs.Error("排课失败", ex);
                        return(Ok(Comm.ResponseModel.ResponseModelBase.GetRes(ex.Message)));
                    }
                    startDate = startDate.AddDays(1);
                    if (startDate > endDate)
                    {
                        isContain = false;
                    }
                }

                bool isOk = false;

                var campusInfo = DapperHelper.Instance.Get <Campus>(teachingschedule.CampusID);
                System.Data.IDbConnection connection = Comm.Helper.DapperHelper.Instance;
                using (connection)
                {
                    connection.Open();
                    System.Data.IDbTransaction transaction = connection.BeginTransaction();
                    try
                    {
                        TeachingScheduleMaster tcm = TConvertHelper.Mapper <TeachingScheduleMaster, TeachingScheduleRequest>(teachingschedule);
                        tcm.AddTime             = DateTime.Now;
                        tcm.CurriculumBeginDate = Convert.ToDateTime(curriculumDateArr[0]);
                        tcm.CurriculumEndDate   = Convert.ToDateTime(curriculumDateArr[1]);
                        tcm.TotalClassHour      = entityList.Count;
                        tcm.Latitude            = campusInfo.Latitude;
                        tcm.Longitude           = campusInfo.Longitude;
                        connection.Insert <TeachingScheduleMaster>(tcm, transaction);

                        connection.Insert <Sys.Models.TeachingSchedule>(entityList, transaction);
                        transaction.Commit();
                        isOk = true;
                    }
                    catch (Exception ex)
                    {
                        logs.Error("排课失败", ex);
                        transaction.Rollback();
                        return(BadRequest());
                    }
                }

                return(isOk ? Ok(Comm.ResponseModel.ResponseModelBase.Success()) : Ok(Comm.ResponseModel.ResponseModelBase.SysError()));
            }
            catch (Exception ex)
            {
                logs.Error("排课失败", ex);
                return(BadRequest());
            }
        }