public Response Delete(CoachBootcampCourse obj)
        {
            List <EntityBase> entites = new List <EntityBase>();

            entites.Add(obj);
            return(DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)));
        }
示例#2
0
        /// <summary>
        /// 计算课程和学员教练相关的各种状态
        /// </summary>
        public Response ComputeState(Response result, string CoachBootcampId, string CurrentUserId)
        {
            //学员如果没有报名(没有买集训课)
            if (!CoachHelper.Instance.IsJoinedCoachBootcamp(CoachBootcampId, CurrentUserId))
            {
                foreach (var item in result.Entities)
                {
                    CoachBootcampCourse obj = item as CoachBootcampCourse;
                    obj.State = "NotBuy";
                }
            }
            else //有买集训课, 计算其他状态
            {
                foreach (var item in result.Entities)
                {//遍历每节课
                    CoachBootcampCourse obj = item as CoachBootcampCourse;
                    if (CoachHelper.Instance.IsHaveCourse(CurrentUserId, obj.Id))
                    {
                        //有课
                        obj.State = "HaveCourse";
                    }
                    else //没有课, 判断其他状态
                    {
                        if (IsAppointmentBootcampCourse(obj.Id, CurrentUserId))
                        {
                            //预约成功
                            obj.State = "Joined";
                        }
                        else
                        {
                            //未预约
                            obj.State = "NotJoin";
                        }
                    }
                } //遍历每节课
            }     //有买集训课, 计算其他状态


            return(result);
        }
        /// <summary>
        /// 判断课程时间范围是否重合
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool IsRepeatPeriodInPrivateCoach(CoachBootcampCourse obj)
        {
            //此算法来源于 SO 的牛b算法, 当时本人写了几百行代码都没解决, SO 大神一句就搞定了, 膜拜
            //http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods

            var sql = @"
SELECT 
    COUNT(*) 
FROM dbo.CoachBootcampCourse 
WHERE   @BeginTime < EndTime AND BeginTime < @EndTime
        AND CoachBootcampId=@CoachBootcampId 
";

            if (obj.RowState == RowState.Modified)
            {
                sql += " AND Id!=@Id ";  //如果是修改操作, 把自己剔除掉判断 . 如果是添加操作, 所有记录参与判断
            }
            var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql);

            cmdVal.Params.Add("@BeginTime", obj.BeginTime);
            cmdVal.Params.Add("@EndTime", obj.EndTime);
            cmdVal.Params.Add("@CoachBootcampId", obj.CoachBootcampId);

            if (obj.RowState == RowState.Modified)
            {
                cmdVal.Params.Add("@Id", obj.Id);
            }

            var result = DbContext.GetInstance().Execute(cmdVal);

            if ((int)result.Tag == 1)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#4
0
        public Response Execute(User currentUser, string request)
        {
            var req = JsonConvert.DeserializeObject <Request <GetSystemManageRelatedFilter> >(request);
            var cmd = CommandHelper.CreateProcedure <CoachBootcampCourse>(text: "sp_GetCoachBootcampCourseList");

            cmd.Params.Add(CommandHelper.CreateParam("@CoachBootcampId", req.Filter.CoachBootcampId));
            cmd.Params.Add(CommandHelper.CreateParam("@CurrentUserId", req.Filter.CurrentUserId));
            if (req.Filter.BootcampCourseBeginTime != DateTime.MinValue && req.Filter.BootcampCourseEndTime != DateTime.MinValue)
            {
                //前端传了用前端的时间
                cmd.Params.Add(CommandHelper.CreateParam("@BeginTime", req.Filter.BootcampCourseBeginTime));
                cmd.Params.Add(CommandHelper.CreateParam("@EndTime", req.Filter.BootcampCourseEndTime.AddDays(1).AddMinutes(-1)));
            }
            else //没传走以下逻辑
            {
                //如果当前时间在 课程表时间范围内, 课程表列表从当前时间开始查询
                SetBeginEndTime(cmd, req.Filter.CoachBootcampId);
            }


            cmd.CreateParamPager(req.Filter);

            var result = DbContext.GetInstance().Execute(cmd);

            result.SetRowCount();
            result = ComputeState(result, req.Filter.CoachBootcampId, req.Filter.CurrentUserId);
            foreach (var item in result.Entities)
            {
                CoachBootcampCourse obj = item as CoachBootcampCourse;
                obj.AppointmentCount = GetAppointmentCount(obj.Id);
            }
            List <CoachBootcampSyllabus> listSyllabus = new List <CoachBootcampSyllabus>();
            //先得到日期列表
            var             listCourse = result.Entities.ToList <EntityBase, CoachBootcampCourse>();
            List <DateTime> listDate   = listCourse
                                         .GroupBy(e => ((DateTime)e.BeginTime).Date)
                                         .Select(g => (DateTime)g.First().BeginTime)
                                         .ToList();
            //再根据日期得到每个节点数据
            List <CoachBootcampCourse> coachBootcampCourseList = new List <CoachBootcampCourse>();

            foreach (var item in listDate)
            {
                var listCourseSecond = listCourse.Where(e =>
                                                        ((DateTime)e.BeginTime).ToShortDateString() == item.ToShortDateString()
                                                        );
                CoachBootcampSyllabus syllabus = new CoachBootcampSyllabus();
                syllabus.Date      = item;
                syllabus.DayOfWeek = Helper.GetDayOfWeekChinese(item.DayOfWeek.ToString());
                foreach (var second in listCourseSecond)
                {
                    //syllabus.CourseList.Add(second);
                    coachBootcampCourseList.Add(second);
                }

                //listSyllabus.Add(syllabus);
            }

            result.Entities.Clear();
            result.Entities.AddRange(coachBootcampCourseList);
            return(result);
        }