Exemple #1
0
        public Response Execute(User currentUser, string request)
        {
            var    req = JsonConvert.DeserializeObject <Request <CoachCourse> >(request);
            var    obj = req.FirstEntity();
            string errorMsg;

            #region 默认参数设置
            if (obj.Type == CoachDic.BigCourse)
            {
                obj.BigCourseId = obj.CourseNameId;
            }
            if (obj.Type == CoachDic.PrivateCourse)
            {
                obj.CoachId = obj.CourseNameId;
            }
            #endregion 默认参数设置

            //私教判断是否和请求冲突
            if (obj.Type == CoachDic.PrivateCourse)
            {
                bool isRepeat = IsRepeatTimeInCoachLeave(obj);
                if (isRepeat)
                {
                    return(ResultHelper.Fail("教练这个时间段请假了不能约课"));
                }
            }

            //大课随机分配空闲教练
            if (obj.Type == CoachDic.BigCourse)
            {
                obj.CourseGrade = 1;
                var randomCoachId = GetRandomFreeCoach(obj);//随机空闲教练Id
                if (string.IsNullOrEmpty(randomCoachId))
                {
                    return(ResultHelper.Fail("现在没有空闲的教练来上课, 请换个时间段预约"));
                }
                obj.CoachId = randomCoachId;
            }

            #region 判断是否有余额
            if (obj.Type == CoachDic.BigCourse)//判断大课是否有余额
            {
                if (HaveBalanceInBigCourse(obj.CourseNameId, obj.ReservedPersonId) == false)
                {
                    return(ResultHelper.Fail("余额次数不足, 请购买课程"));
                }
            }
            if (obj.Type == CoachDic.PrivateCourse)//判断私教是否有余额
            {
                if (HaveBalanceInPrivateCourse(obj.CourseNameId, obj.ReservedPersonId) == false)
                {
                    return(ResultHelper.Fail("余额次数不足, 请购买课程"));
                }
            }

            #endregion 判断是否有余额

            //判断时间是否有效
            errorMsg = CoachHelper.Instance.CheckTimeValid(obj.BeginTime, obj.EndTime);
            if (errorMsg != "")
            {
                return(ResultHelper.Fail(errorMsg));
            }

            //私教判断课程时间范围是否和已有的重合
            if (!string.IsNullOrEmpty(obj.CoachId))//有教练Id时
            {
                if (IsRepeatPeriodInPrivateCoach(obj))
                {
                    return(ResultHelper.Fail("教练这个时间段有课, 请修改时间范围再约 "));
                }
            }

            #region 设置要添加的数据
            List <EntityBase> entites = new List <EntityBase>();
            entites.Add(obj);

            if (obj.RowState == RowState.Added)
            {
                if (string.IsNullOrEmpty(obj.CoachId))
                {
                    obj.CoachId = "";
                }

                obj.State = CoachDic.CourseNotStart;
                string venueCityId = GetVenueCityId(obj.VenueId);
                if (!string.IsNullOrEmpty(venueCityId))
                {
                    obj.CityId = venueCityId;
                }

                obj.CoachBootcampCourseId = "";
                obj.CreatorId             = currentUser.Id;
                obj.TrySetNewEntity();
            }
            #endregion 设置要添加的数据

            //获取将要保存的图片列表
            obj.GetWillSaveFileList(entites);
            var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));
            if (result.IsSuccess == true)
            {
                //保存个人信息
                result = SaveCoursePersonInfoList(obj);
            }

            //扣除余额
            if (result.IsSuccess == true)
            {
                foreach (var item in obj.CoursePersonInfoList)
                {
                    //有好多人头就扣除好多次
                    result = CoachHelper.Instance.SubOne(obj);
                    if (result.IsSuccess == false)
                    {
                        break;
                    }
                }
            }

            if (result.IsSuccess == true)
            {
                //极光推送
                SendJG(obj.ReservedPersonId, obj.CoachId, obj.Id);
                //发送短信
                qcloudsms_csharp.SmsSingleSenderResult smsResult  = SmsHelper.SendCourseSms(currentUser, obj, CoursePersonType.Coacher, CourseSmsType.Save); //发给教练
                qcloudsms_csharp.SmsSingleSenderResult smsResult1 = SmsHelper.SendCourseSms(currentUser, obj, CoursePersonType.Student, CourseSmsType.Save); //发给学生
            }

            return(result);
        }
        public Response Execute(User currentUser, string request)
        {
            var req         = JsonConvert.DeserializeObject <Request <CoachCourse> >(request);
            var obj         = req.FirstEntity();
            var coachCourse = CoachHelper.Instance.GetCoachCourseById(obj.Id);

            if (coachCourse.BeginTime == null)
            {
                return(ResultHelper.Fail("没有找到可以取消的课程"));
            }
            //距离上课时间小于四个小时,不能修改
            var beginTime = (DateTime)coachCourse.BeginTime;

            if (beginTime > DateTime.Now)
            {
                var legalTime = DateTime.Now.AddHours(4);

                //TimeSpan timeSpan = ((DateTime)coachCourse.BeginTime).Subtract(DateTime.Now);
                if (legalTime >= beginTime)
                {
                    return(ResultHelper.Fail("距离上课时间小于四个小时,不能取消"));
                }
            }

            //课程进行中或已完成, 不能取消预约
            if (coachCourse.State != CoachDic.CourseNotStart)
            {
                return(ResultHelper.Fail("课程进行中或已完成, 不能取消预约!"));
            }
            var list = GetPersonInfoListByCourseId(obj.Id);//提前获取到数据不然删除了就没有了
            var sql  = @"
 DELETE FROM dbo.CoachCourse WHERE Id=@Id
 DELETE FROM dbo.CoachCoursePersonInfo WHERE CourseId=@Id
";
            var cmd  = CommandHelper.CreateText <ClubUser>(FetchType.Execute, sql);

            cmd.Params.Add("@Id", obj.Id);

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

            //返回余额
            if (result.IsSuccess == true)
            {
                foreach (var item in list)
                {
                    //有多少个人头就返回多少次
                    result = CoachHelper.Instance.AddOne(obj);
                    if (result.IsSuccess == false)
                    {
                        break;
                    }
                }
            }

            if (result.IsSuccess == true)
            {
                //极光推送
                SendJG(coachCourse.ReservedPersonId, coachCourse.CoachId, currentUser.Id);
                //发送短信
                qcloudsms_csharp.SmsSingleSenderResult smsResult  = SmsHelper.SendCourseSms(currentUser, obj, CoursePersonType.Coacher, CourseSmsType.Cancel); //发给教练
                qcloudsms_csharp.SmsSingleSenderResult smsResult1 = SmsHelper.SendCourseSms(currentUser, obj, CoursePersonType.Student, CourseSmsType.Cancel); //发给学生
            }
            return(result);
        }