Example #1
0
        /// <summary>
        /// 根据课程类型返回正在操作的课程名称
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static string GetCourseName(CoachCourse obj)
        {
            string courseName = string.Empty;

            if (obj.Type == CoachDic.BigCourse)
            {
                string sql = "";
                sql = @"SELECT * FROM dbo.CoachBigCourseInfo WHERE id=@bigCourseId";
                var cmd = CommandHelper.CreateText <CoachBigCourseInfo>(FetchType.Fetch, sql);
                cmd.Params.Add("@bigCourseId", obj.BigCourseId);
                var result = DbContext.GetInstance().Execute(cmd);
                var data   = result.Entities.FirstOrDefault() as CoachBigCourseInfo;
                if (data != null)
                {
                    courseName = data.Name;
                }
            }
            else if (obj.Type == CoachDic.PrivateCourse)
            {
                User user = UserHelper.GetUserById(obj.CoachId);
                if (user != null)
                {
                    courseName = user.PetName + "(私教)的课程";
                }
                else
                {
                    courseName = "私教的课程";
                }
            }
            return(courseName);
        }
Example #2
0
        public Response SaveCoursePersonInfoList(CoachCourse obj)
        {
            Response          rsp     = new Response();
            List <EntityBase> entites = new List <EntityBase>();

            foreach (CoachCoursePersonInfo item in obj.CoursePersonInfoList)
            {
                item.CourseId = obj.Id;
                item.IsSignIn = false;
                //检测此学员是否有悦动力账户
                if (!string.IsNullOrEmpty(item.StudentMobile))
                {
                    var ydlUser = UserHelper.GetUserByMobile(item.StudentMobile);//通过手机号反查悦动力账户
                    if (ydlUser != null)
                    {
                        item.YdlUserId = ydlUser.Id;//此学员在悦动力有账户, 保存其id , 方便后续关联
                    }
                }
                item.RowState = RowState.Added;
                item.TrySetNewEntity();
                entites.Add(item);
            }
            if (entites.Count > 0)
            {
                rsp = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));
            }
            return(rsp);
        }
        /// <summary>
        /// 返还或者扣除次数
        /// 业务逻辑: 根据以前的人头数和这次修改的人头数做比较,
        ///     然后得到差值(比如2次), 通过差值(比如2次)返还2次或者扣除2次
        /// </summary>
        /// <param name="oldCoachCourse"></param>
        /// <param name="updateObj"></param>
        /// <returns></returns>
        public Response AddOrSubAmount(Response response, CoachCourse oldCoachCourse, CoachCourse updateObj)
        {
            var personInfoList = CoachHelper.Instance.GetCoachCoursePersonInfoList(oldCoachCourse.Id);
            int oldCount       = personInfoList.Count;//之前的人数
            int newCount       = updateObj.CoursePersonInfoList.Count;
            int subValue       = oldCount - newCount;

            if (subValue == 0)
            {
                //不做任何操作
                return(response);
            }
            else if (subValue > 0)
            {
                //返还次数
                for (int i = 0; i < subValue; i++)
                {
                    response = CoachHelper.Instance.AddOne(oldCoachCourse);
                }
            }
            else if (subValue < 0)
            {
                subValue = Math.Abs(subValue);
                //扣除次数
                for (int i = 0; i < subValue; i++)
                {
                    response = CoachHelper.Instance.SubOne(oldCoachCourse);
                }
            }
            return(response);
        }
Example #4
0
        /// <summary>
        /// 判断课程时间范围是否和请假重合
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool IsRepeatTimeInCoachLeave(CoachCourse obj)
        {
            //此算法来源于 SO 的牛b算法, 当时本人写了几百行代码都没解决, SO 大神一句就搞定了, 膜拜
            //http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods

            var sql = @"
SELECT 
    COUNT(*) 
FROM dbo.CoachLeave 
WHERE   @BeginTime < EndTime AND BeginTime < @EndTime
        AND CoachId=@CoachId AND State='010002'
";

            var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql);

            cmdVal.Params.Add("@BeginTime", obj.BeginTime);
            cmdVal.Params.Add("@EndTime", obj.EndTime);
            cmdVal.Params.Add("@CoachId", obj.CoachId);
            var result = DbContext.GetInstance().Execute(cmdVal);

            if ((int)result.Tag == 1)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #5
0
        /// <summary>
        /// 获取对应课程SMS 接收人电话(分教练或学员)
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="personType"></param>
        /// <returns></returns>
        private static string GetTelNo(User current, CoachCourse obj, CoursePersonType personType)
        {
            string userid = "";
            string telno  = string.Empty;

            switch (personType)
            {
            case CoursePersonType.Student:
                if (string.IsNullOrEmpty(current.Id))
                {
                    userid = obj.CreatorId;
                }
                else
                {
                    userid = current.Id;
                }
                break;

            case CoursePersonType.Coacher:
                userid = obj.CoachId;
                break;
            }
            User user = UserHelper.GetUserById(userid);

            if (user != null)
            {
                telno = user.Mobile;
            }
            return(telno);
        }
Example #6
0
        public bool IsRepeatInPrivateCoach(CoachCourse obj)
        {
            var sql = @"
SELECT 
    COUNT(*) 
FROM dbo.CoachCourse 
WHERE      (EndTime = @EndTime OR BeginTime = @BeginTime)
        AND CoachId=@CoachId AND State!=@State
";
            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("@CoachId", obj.CoachId);
            cmdVal.Params.Add("@State", CoachDic.CourseFinished);

            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;
            }

        }
 public void GetBalance(CoachCourse coachCourse, CoachCoursePersonInfo item)
 {
     if (coachCourse.Type == CoachDic.BigCourse)
     {
         var money = CoachHelper.Instance.GetBigCourseBalance(item.YdlUserId, coachCourse.BigCourseId);
         if (money != null)
         {
             item.Amount          = money.Amount;
             item.ThenTotalAmount = money.ThenTotalAmount;
         }
     }
     else if (coachCourse.Type == CoachDic.PrivateCourse)
     {
         var money = CoachHelper.Instance.GetPrivateCourseBalance(item.YdlUserId, coachCourse.CoachId);
         if (money != null)
         {
             item.Amount          = money.Amount;
             item.ThenTotalAmount = money.ThenTotalAmount;
         }
     }
     else if (coachCourse.Type == CoachDic.BootcampCourse)
     {
         var money = CoachHelper.Instance.GetBootcampBalance(item.YdlUserId, coachCourse.CoachBootcampId);
         if (money != null)
         {
             item.Amount          = money.Amount;
             item.ThenTotalAmount = money.ThenTotalAmount;
         }
     }
 }
 public void GetMyBalance(CoachCourse coachCourse, string currentUserid)
 {
     if (coachCourse.Type == CoachDic.BigCourse)
     {
         var money = CoachHelper.Instance.GetBigCourseBalance(currentUserid, coachCourse.BigCourseId);
         if (money != null)
         {
             coachCourse.Amount = money.Amount;
         }
     }
     else if (coachCourse.Type == CoachDic.PrivateCourse)
     {
         var money = CoachHelper.Instance.GetPrivateCourseBalance(currentUserid, coachCourse.CoachId);
         if (money != null)
         {
             coachCourse.Amount = money.Amount;
         }
     }
     else if (coachCourse.Type == CoachDic.BootcampCourse)
     {
         var money = CoachHelper.Instance.GetBootcampBalance(currentUserid, coachCourse.CoachBootcampId);
         if (money != null)
         {
             coachCourse.Amount = money.Amount;
             if (money.Amount < 0)
             {
                 coachCourse.Amount = 0;
             }
         }
     }
 }
        public Response Execute(User currentUser, string request)
        {
            var    req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request);
            string sql = @"
SELECT 
    a.*,
    b.Name AS VenueName,
	c.Name AS CourseGoalName,
    c.Code AS CourseGoalCode,
	CoachName = dbo.fn_GetUserName(d.Id),
	BigCourseName = e.Name,
	e.Price AS BigCourseUnitPrice,
	f.Grade AS CoachGrade,
    d.Code AS CoachCode,
    b.Lng  AS VenueLng ,
    b.Lat  AS VenueLat ,
    b.Address AS VenueAddress,
    e.CourseContent AS CourseContentDetail,
    Score=(SELECT AVG(Score) FROM dbo.CoachComment WHERE CourseId=a.Id ),
	MyScore=(SELECT ISNULL(Score,0) FROM dbo.CoachComment WHERE CommentatorId=@CurrentUserId AND CourseId=a.Id )
FROM dbo.CoachCourse a
LEFT JOIN dbo.Venue b ON a.VenueId = b.Id
LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!=''
LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id
LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId
LEFT JOIN dbo.Coach f ON a.CoachId=f.Id
 
WHERE
     a.Id = @Id
               
";

            var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@Id", req.Filter.CourseId);
            cmd.Params.Add("@CurrentUserId", req.Filter.CurrentUserId);

            var         result      = DbContext.GetInstance().Execute(cmd);
            CoachCourse coachCourse = result.FirstEntity <CoachCourse>();

            if (coachCourse != null)
            {
                //获取个人信息列表
                GetPersonInfoList(coachCourse);
                //CourseName 计算赋值
                SetCourseName(coachCourse);
                //获取我的余额(界面最外层用)
                GetMyBalance(coachCourse, req.Filter.CurrentUserId);
                //获取教练或大课的单价
                GetUnitPrice(coachCourse);
                //计算课程状态
                CoachHelper.Instance.CountCourseState(coachCourse);
                //返回附件
                coachCourse.TryGetFiles();
                CoachHelper.Instance.SetCourseAvgScore(coachCourse);
            }
            return(result);
        }
        public Response Execute(User currentUser, string request)
        {
            var    req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request);
            string sql = @"
SELECT 
    a.*,
    b.Name AS VenueName,
	c.Name AS CourseGoalName,
	CoachName = dbo.fn_GetUserName(d.Id),
	BigCourseName = e.Name,
	f.Name AS TypeName,
	b.Address AS VenueAddress,
    e.CourseContent AS CourseContentDetail
FROM dbo.CoachCourse a
LEFT JOIN dbo.Venue b ON a.VenueId = b.Id
LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!=''
LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id
LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId
LEFT JOIN dbo.BaseData f ON a.Type=f.Id
WHERE
     a.Id = @Id
               
";
            var    cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@Id", req.Filter.CourseId);
            var result = DbContext.GetInstance().Execute(cmd);

            CoachCourse coachCourse = result.FirstEntity <CoachCourse>();

            if (coachCourse != null)
            {
                //个人信息列表
                GetPersonInfoList(coachCourse);
                //CourseName 计算赋值
                if (coachCourse.Type == CoachDic.BigCourse)
                {
                    coachCourse.CourseName = coachCourse.BigCourseName;
                }
                else if (coachCourse.Type == CoachDic.PrivateCourse)
                {
                    coachCourse.CourseName = coachCourse.CoachName;
                }

                //计算上下课打卡按钮状态
                CountStartEndCard(coachCourse);
                //获取附件
                coachCourse.TryGetFiles();
            }

            return(result);
        }
Example #11
0
        /// <summary>
        /// 获取一个空闲的教练
        /// </summary>
        /// <returns></returns>
        public string GetRandomFreeCoach(CoachCourse obj)
        {
            string coachId = "";

            //先从此教学点 常驻教练中抽取, 这样距离更近
            coachId = GetFreeCoachByVenue(obj);
            if (string.IsNullOrEmpty(coachId))
            {
                //如果此教学点, 没有常驻教练, 就从教练池中抽取
                coachId = GetFreeCoachInPool(obj);
            }
            return(coachId);
        }
        public Response DeleteCoursePersonInfo(CoachCourse obj)
        {
            var sql = @"
DELETE FROM dbo.CoachCoursePersonInfo  WHERE CourseId=@CourseId
";

            var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql);

            cmdVal.Params.Add("@CourseId", obj.Id);
            var result = DbContext.GetInstance().Execute(cmdVal);

            return(result);
        }
Example #13
0
        /// <summary>
        /// 根据约课时间段返回待定上课日期(单天)
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static string GetCourseSmsDate(CoachCourse obj)
        {
            System.Text.StringBuilder dateStr = new System.Text.StringBuilder();
            DateTime?dt = obj.BeginTime;

            if (dt != null)
            {
                dateStr.Append(dt.Value.ToString("yyyy年MM月dd日 "));
                dateStr.Append(GetDayOfWeek(dt.Value.DayOfWeek));
                dateStr.Append(dt.Value.ToString(" HH:mm"));
            }

            return(dateStr.ToString());
        }
Example #14
0
        /*
         * private static string EnCode = "C50067";
         * private static string EnPass = "******";
         * private static string UrlFormat = "http://www3.mob800.com/interface/Send.aspx?enCode={0}&enPass={1}&userName=sys&mob={2}&msg={3}";
         * private static string Prefix = "【悦动力】";
         *
         * public static string SendSms(string mobiles, string msg)
         * {
         *  string strRet = null;
         *  try
         *  {
         *      string url = string.Format(UrlFormat, EnCode, EnPass, mobiles, HttpUtility.UrlEncode(Prefix + msg, Encoding.GetEncoding("gb2312")));
         *      if (url == null || url.Trim().ToString() == "")
         *      {
         *          return strRet;
         *      }
         *      string targeturl = url.Trim().ToString();
         *      HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
         *      hr.UserAgent = "Mozilla/4.0  (compatible; MSIE 6.0; Windows NT 5.1)";
         *      hr.Method = "GET";
         *      hr.Timeout = 60 * 1000;
         *      hr.Headers.Add("content", "text/html; charset=gb2312");
         *      WebResponse hs = hr.GetResponse();
         *      Stream sr = hs.GetResponseStream();
         *      StreamReader ser = new StreamReader(sr, Encoding.Default);
         *      strRet = ser.ReadToEnd();
         *  }
         *  catch (Exception ex)
         *  {
         *      strRet = ex.Message;
         *  }
         *  return strRet;
         *
         * }
         * */
        /// <summary>
        /// 课程序预约、修改预约时间,取消预约 SMS短信发送
        /// </summary>
        /// <param name="obj">课程预约对象</param>
        /// <returns></returns>
        public static SmsSingleSenderResult SendCourseSms(User current, CoachCourse obj, CoursePersonType personType, CourseSmsType smsType)
        {
            string telNO  = GetTelNo(current, obj, personType);             //移动电话号码
            string param1 = GetCourseOrderPerson(current, obj, personType); //约课人
            string param2 = GetCourseSmsType(smsType);                      //约课动作  增加,修改,取消
            string param3 = GetCourseName(obj);                             //课程类型,大课名称或私教课(教练)
            string param4 = GetCourseSmsDate(obj);                          //上课时间 格式:yyyy年MM月dd日 周  HH:mm


            SmsSingleSenderResult result;

            string[] param = new string[] { param1, param2, param3, param4 };
            result = SingleSend(telNO, courseSmsTemplateId, param);

            return(result);
        }
Example #15
0
        public Response AddOne(CoachCourse obj)
        {
            var cmd = CommandHelper.CreateProcedure <CoacherApply>(text: "sp_ReserveCourseAddSubOne");

            cmd.Params.Add(CommandHelper.CreateParam("@StudentUserId", obj.ReservedPersonId));
            cmd.Params.Add(CommandHelper.CreateParam("@CoachId", obj.CourseNameId));
            cmd.Params.Add(CommandHelper.CreateParam("@BigCourseId", obj.CourseNameId));
            cmd.Params.Add(CommandHelper.CreateParam("@CourseTypeId ", obj.Type));
            cmd.Params.Add(CommandHelper.CreateParam("@CityId", "75"));
            cmd.Params.Add(CommandHelper.CreateParam("@Type", "Add"));
            cmd.CreateParamMsg();

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

            return(result);
        }
Example #16
0
        /// <summary>
        /// 删除之前的学员列表并返还次数
        /// </summary>
        /// <param name="coachCourse"></param>
        public void DeleteOldStudentList(CoachCourse coachCourse)
        {
            List <CoachCoursePersonInfo> list = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id);

            foreach (var item in list)
            {
                //返还此学员的集训课余额 一次
                CoachHelper.Instance.AddBootcampBalanceOne(item.YdlUserId, coachCourse.CoachBootcampId);
                //然后再删除
                List <EntityBase> entites = new List <EntityBase>();
                entites.Add(item);
                item.RowState = RowState.Deleted;
                var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));
                SystemHelper.CheckResponseIfError(result);
            }
        }
Example #17
0
        /// <summary>
        /// 提前一个小时提醒教练和学员去上课
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            //获取合法的记录, 即距离当前时间一个小时后要上课的记录
            var sql = @"
SELECT * FROM (
	SELECT
		Id,
		CoachId,
		ReservedPersonId,  
		differenceMinute= DATEDIFF(MINUTE, @currentTime, BeginTime) 
	FROM dbo.CoachCourse
	WHERE BeginTime>@currentTime 
        AND State !='Finished'
 ) a
 WHERE  a.differenceMinute=60
";
            var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@currentTime", DateTime.Now);
            var result = DbContext.GetInstance().Execute(cmd);

            foreach (var item in result.Entities)
            {
                CoachCourse obj = item as CoachCourse;
                try
                {
                    //发给教练
                    string message = string.Format("注意: 一个小时后你有课要上, 点击查看");
                    Dictionary <string, object> extrasToCoach = new Dictionary <string, object>();
                    extrasToCoach.Add("Type", SystemMessageType.CoachReservedCourseDetail);
                    extrasToCoach.Add("BusinessId", obj.Id);
                    extrasToCoach.Add("Message", message);
                    JPushHelper.SendCourseSystemMessage(extrasToCoach, obj.CoachId);
                    //发给学员
                    Dictionary <string, object> extrasToStudent = new Dictionary <string, object>();
                    extrasToStudent.Add("Type", SystemMessageType.StudentReservedCourseDetail);
                    extrasToStudent.Add("BusinessId", obj.Id);
                    extrasToStudent.Add("Message", message);
                    JPushHelper.SendCourseSystemMessage(extrasToStudent, obj.ReservedPersonId);
                }
                catch (Exception)
                {
                }
            }
        }
Example #18
0
        /// <summary>
        /// 设置课程的评分(平均分)
        /// </summary>
        /// <param name="coachCourse"></param>
        public void SetCourseAvgScore(CoachCourse coachCourse)
        {
            var sql = @"
SELECT 
    ISNULL(AVG(Score),0) AS Score 
FROM dbo.CoachComment 
WHERE 
    CourseId=@CourseId 

";
            var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@CourseId", coachCourse.Id);
            var result = DbContext.GetInstance().Execute(cmd);
            var obj    = result.FirstEntity <CoachCourse>();

            coachCourse.Score = Helper.GetRoundOffByChina(obj.Score, 2);
        }
Example #19
0
        /// <summary>
        /// 如果不存在就添加此课程
        /// </summary>
        public CoachCourse CreateActualCoachCourse(CoachCourse obj)
        {
            var bootcamp = CoachHelper.Instance.GetCoachBootcampById(obj.CoachBootcampId);

            obj.VenueId  = bootcamp.VenueId;
            obj.Type     = CoachDic.BootcampCourse;
            obj.State    = CoachDic.CourseNotStart;
            obj.RowState = RowState.Added;
            obj.CityId   = CoachDic.DefaultCityId;
            obj.TrySetNewEntity();
            List <EntityBase> entites = new List <EntityBase>();

            entites.Add(obj);
            var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));

            SystemHelper.CheckResponseIfError(result);
            return(obj);
        }
        public Response SaveCoursePersonInfoList(CoachCourse obj)
        {
            Response          rsp     = new Response();
            List <EntityBase> entites = new List <EntityBase>();

            foreach (var item in obj.CoursePersonInfoList)
            {
                item.CourseId = obj.Id;
                item.RowState = RowState.Added;
                item.TrySetNewEntity();
                entites.Add(item);
            }
            if (entites.Count > 0)
            {
                rsp = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));
            }
            return(rsp);
        }
Example #21
0
 /// <summary>
 /// 计算课程的状态
 /// </summary>
 /// <param name="coachCourse"></param>
 public void CountCourseState(CoachCourse coachCourse)
 {
     if (coachCourse.State == CoachDic.CourseFinished)
     {
         if (coachCourse.MyScore == 0)
         {
             coachCourse.CourseState = "NotScore";//未评分
         }
         else if (coachCourse.MyScore > 0)
         {
             coachCourse.CourseState = "HasScore";//已评分
         }
     }
     else if (coachCourse.State == CoachDic.CourseNotStart || coachCourse.State == CoachDic.CourseProcessing)
     {
         coachCourse.CourseState = "NotStart";//已预约
     }
 }
 /// <summary>
 /// 计算上下课打卡按钮状态
 /// </summary>
 public void CountStartEndCard(CoachCourse coachCourse)
 {
     if (coachCourse.State == CoachDic.CourseNotStart)
     {
         coachCourse.IsStartCard = false;
         coachCourse.IsEndCard   = false;
     }
     else if (coachCourse.State == CoachDic.CourseProcessing)
     {
         coachCourse.IsStartCard = true;
         coachCourse.IsEndCard   = false;
     }
     else if (coachCourse.State == CoachDic.CourseFinished)
     {
         coachCourse.IsStartCard = true;
         coachCourse.IsEndCard   = true;
     }
 }
        public void GetPersonInfoList(CoachCourse coachCourse)
        {
            //个人信息列表
            var list = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id);

            foreach (CoachCoursePersonInfo item in list)
            {
                item.CourseContent = coachCourse.CourseContentDetails;
                //获取教练对学员的评价信息
                item.CoachCommentStudentInfo
                    = CoachHelper.Instance.GetStudentCommentDetail(item.Id);
                if (!string.IsNullOrEmpty(item.YdlUserId))
                {
                    SetPersonInfo(item, coachCourse);
                }

                coachCourse.CoursePersonInfoList.Add(item);
            }
        }
Example #24
0
        /// <summary>
        /// 删除此课程
        /// </summary>
        /// <param name="obj"></param>
        public Response DeleteCoachCourse(CoachCourse obj)
        {
            string sql = @"
  
 DELETE FROM dbo.CoachCourse
 WHERE CoachBootcampId=@CoachBootcampId
		AND BeginTime=@BeginTime 
		AND EndTime=@EndTime
	"    ;
            var    cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Execute, sql);

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

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

            return(result);
        }
 public void SetCourseName(CoachCourse coachCourse)
 {
     if (coachCourse.Type == CoachDic.BigCourse)
     {
         coachCourse.CourseName = coachCourse.BigCourseName;
     }
     else if (coachCourse.Type == CoachDic.PrivateCourse)
     {
         coachCourse.CourseName = coachCourse.CoachName;
     }
     else if (coachCourse.Type == CoachDic.BootcampCourse)
     {
         var bootcamp = CoachHelper.Instance.GetCoachBootcampById(coachCourse.CoachBootcampId);
         if (bootcamp != null)
         {
             coachCourse.CourseName = bootcamp.Name;
         }
     }
 }
Example #26
0
        /// <summary>
        /// 从空闲的教练池中随机抽取一个空闲教练上大课
        /// </summary>
        /// <returns></returns>
        public string GetFreeCoachInPool(CoachCourse obj)
        {
            var sql = @"

 SELECT 
	a.Id 
FROM dbo.Coach a
WHERE 1=1
	AND a.Id NOT IN(
--获取没空的教练列表
--具体逻辑: 根据学员期望上课的时间段(比如9点到10点)来获取和已有排课有冲突的记录, 从而得到(9点到10点)没有空的教练列表
SELECT 
    CoachId
FROM dbo.CoachCourse 
WHERE   @BeginTime < EndTime AND BeginTime < @EndTime
         AND State!=@State
UNION ALL
SELECT 
    CoachId
FROM dbo.CoachLeave 
WHERE   @BeginTime < EndTime AND BeginTime < @EndTime
        AND  State='010002'

)
";
            var cmd = CommandHelper.CreateText <Coach>(FetchType.Fetch, sql);

            cmd.Params.Add("@BeginTime", obj.BeginTime);
            cmd.Params.Add("@EndTime", obj.EndTime);
            cmd.Params.Add("@State", CoachDic.CourseFinished);
            var result = DbContext.GetInstance().Execute(cmd);

            if (result.Entities.Count > 0)
            {
                var    list         = result.Entities.ToList <EntityBase, Coach>(); //空闲教练列表
                Random random       = new Random();
                int    randomNumber = random.Next(list.Count);                      //随机抽取一个
                return(list[randomNumber].Id);
            }

            return("");
        }
Example #27
0
        private Response SaveCoachIncome(CoachCourse coachCourse)
        {
            //获取教练的收入
            var     coach = CoachHelper.Instance.GetCoach(coachCourse.CoachId);
            decimal coachOriginalIncome = 0;
            decimal coachRealIncome     = 0;

            if (coachCourse.Type == CoachDic.PrivateCourse)
            {
                var coachUnitPrice = CoachHelper.Instance.GetCoachUnitPrice(CoachDic.DefaultCityId, coach.Grade);
                coachOriginalIncome = coachUnitPrice * 1;
                coachRealIncome     = coachUnitPrice * 1 * (coach.CommissionPercentage / 100);
            }
            else if (coachCourse.Type == CoachDic.BigCourse)
            {
                var bigUnitPrice = CoachHelper.Instance.GetBigCourseInfo(coachCourse.BigCourseId);
                if (bigUnitPrice != null)
                {
                    var studentNumber = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id).Count;
                    coachOriginalIncome = bigUnitPrice.Price * studentNumber;
                    coachRealIncome     = bigUnitPrice.Price * studentNumber * (coach.CommissionPercentage / 100);
                }
            }
            //构造实体保持教练收入
            CoachIncome obj = new CoachIncome();

            obj.CoachId                   = coachCourse.CoachId;
            obj.CourseId                  = coachCourse.Id;
            obj.CourseType                = coachCourse.Type;
            obj.OriginalMoney             = coachOriginalIncome;
            obj.CoachCommissionPercentage = coach.CommissionPercentage;
            obj.CoachRealIncome           = coachRealIncome;
            obj.RowState                  = RowState.Added;
            List <EntityBase> entites = new List <EntityBase>();

            entites.Add(obj);
            obj.TrySetNewEntity();

            var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));

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

            var sql = @"
SELECT 
    COUNT(*) 
FROM dbo.CoachCourse 
WHERE   @BeginTime < EndTime AND BeginTime < @EndTime
        AND CoachId=@CoachId AND State!=@State
";

            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("@CoachId", obj.CoachId);
            cmdVal.Params.Add("@State", CoachDic.CourseFinished);

            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);
            }
        }
Example #29
0
        /// <summary>
        /// 获取此教练课程信息, 如果不存在就创建此课程
        /// </summary>
        /// <param name="obj"></param>
        public CoachCourse GetCoachCourse(CoachCourse obj)
        {
            string sql = @"
 SELECT * 
 FROM dbo.CoachCourse
 WHERE CoachBootcampId=@CoachBootcampId
		AND BeginTime=@BeginTime 
		AND EndTime=@EndTime
        AND CoachId=@CoachId
	"    ;
            var    cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

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


            var result   = DbContext.GetInstance().Execute(cmd);
            var dbCourse = result.FirstEntity <CoachCourse>();

            return(dbCourse);
        }
        /// <summary>
        /// 如果此用户是ydl用户 就设置相关余额等信息
        /// </summary>
        public void SetPersonInfo(CoachCoursePersonInfo item, CoachCourse coachCourse)
        {
            //获取基本信息
            var user = UserHelper.GetUserById(item.YdlUserId);

            if (user != null)
            {
                item.HeadUrl = user.HeadUrl;
                item.Sex     = user.Sex;
                //item.StudentName = UserHelper.GetUserName(user);
            }
            //获取余额信息
            GetBalance(coachCourse, item);
            //如果私教有训练计划的话就赋私教的训练计划内容
            if (coachCourse.Type == CoachDic.PrivateCourse)
            {
                var plan = CoachHelper.Instance.GetTrainingPlan(coachCourse.CoachId, item.YdlUserId);
                if (plan != null && !string.IsNullOrEmpty(plan.TrainingPlanContent))
                {
                    item.CourseContent = plan.TrainingPlanContent;
                }
            }
        }