Exemplo n.º 1
0
        /// <summary>
        /// 获取技师某一天的json格式值班状态
        /// </summary>
        /// <param name="monday"></param>
        /// <returns></returns>
        public WorkTimeState GetDayState(string daystr)
        {
            WorkTimeState result = new WorkTimeState();

            if (daystr.Contains("1"))
            {
                result.morning = true;
            }
            if (daystr.Contains("2"))
            {
                result.noon = true;
            }
            if (daystr.Contains("3"))
            {
                result.evening = true;
            }
            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 根据技师json格式值班状态得出存入数据表的值班状态字符串
        /// </summary>
        /// <param name="rotaInfo"></param>
        public string GetDayStr(WorkTimeState workTime)
        {
            string result = string.Empty;

            if (workTime == null)
            {
                return(result);
            }
            if (workTime.morning)
            {
                result += "1,";
            }
            if (workTime.noon)
            {
                result += "2,";
            }
            if (workTime.evening)
            {
                result += "3,";
            }
            result = result.TrimEnd(',');
            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取预订技师时间列表
        /// </summary>
        /// <param name="shopTime"></param>
        /// <param name="timeInterval"></param>
        /// <param name="dates"></param>
        /// <returns></returns>
        public object GetTimeTable(SwitchModel switchModel, int days, int appId, int storeId, int tid)
        {
            DateTime date         = DateTime.Now.AddDays(days);
            bool     isSingleWeek = IsSingleWeek(date);
            string   sqlwhere     = $"aid={appId} and state>=0 and tid={tid}";

            if (isSingleWeek)
            {
                sqlwhere += " and daytype=0";
            }
            else
            {
                sqlwhere += " and daytype=1";
            }
            //获取技师当天排班情况
            Rota rota = RotaBLL.SingleModel.GetModel(sqlwhere);

            if (rota == null)
            {
                return(null);
            }
            List <object> TimeTable   = new List <object>();
            string        worktimeStr = string.Empty;

            switch (Convert.ToInt32(date.DayOfWeek))
            {
            //周日
            case 0:
                if (!switchModel.Sunday)    //店铺周日没有营业
                {
                    return(null);
                }
                worktimeStr = rota.sunday;
                break;

            //周一
            case 1:
                if (!switchModel.Monday)    //店铺周一没有营业
                {
                    return(null);
                }
                worktimeStr = rota.monday;
                break;

            //周二
            case 2:
                if (!switchModel.Tuesday)    //店铺周二没有营业
                {
                    return(null);
                }
                worktimeStr = rota.tuesday;
                break;

            //周三
            case 3:
                if (!switchModel.Wensday)    //店铺周三没有营业
                {
                    return(null);
                }
                worktimeStr = rota.wensday;
                break;

            //周四
            case 4:
                if (!switchModel.Thursday)    //店铺周四没有营业
                {
                    return(null);
                }
                worktimeStr = rota.thursday;
                break;

            //周五
            case 5:
                if (!switchModel.Friday)    //店铺周五没有营业
                {
                    return(null);
                }
                worktimeStr = rota.friday;
                break;

            //周六
            case 6:
                if (!switchModel.Saturday)    //店铺周六没有营业
                {
                    return(null);
                }
                worktimeStr = rota.saturday;
                break;
            }
            WorkTimeState workState = RotaBLL.SingleModel.GetDayState(worktimeStr);
            List <string> timeList  = new List <string>();

            //早班
            if (workState.morning)
            {
                string   startTime = switchModel.morningShift.Split('-')[0];
                DateTime start     = Convert.ToDateTime(startTime);
                string   endTime   = switchModel.morningShift.Split('-')[1];
                DateTime end       = Convert.ToDateTime(endTime);
                while (DateTime.Compare(end, start) > 0)
                {
                    timeList.Add(start.ToString("HH:mm"));
                    start = start.AddMinutes(switchModel.TimeInterval);
                    //TimeTable.Add(new { time = start.ToString("HH:mm"), state = false });
                }
            }
            //中班
            if (workState.noon)
            {
                string   startTime = switchModel.noonShift.Split('-')[0];
                DateTime start     = Convert.ToDateTime(startTime);
                string   endTime   = switchModel.noonShift.Split('-')[1];
                DateTime end       = Convert.ToDateTime(endTime);
                while (DateTime.Compare(end, start) > 0)
                {
                    timeList.Add(start.ToString("HH:mm"));
                    start = start.AddMinutes(switchModel.TimeInterval);
                }
            }
            //晚班
            if (workState.evening)
            {
                string   startTime = switchModel.eveningShift.Split('-')[0];
                DateTime start     = Convert.ToDateTime(startTime);
                string   endTime   = switchModel.eveningShift.Split('-')[1];
                DateTime end       = Convert.ToDateTime(endTime);
                while (DateTime.Compare(end, start) > 0)
                {
                    timeList.Add(start.ToString("HH:mm"));
                    start = start.AddMinutes(switchModel.TimeInterval);
                }
            }
            //去除已被选定的服务时间
            ServiceTime dates = GetModel($"aid={appId} and storeid={storeId} and tid={tid} and date='{DateTime.Now.AddDays(days).ToShortDateString()}'");

            if (dates != null)
            {
                List <string> list = dates.time.Split(',').ToList();;
                timeList = timeList.Except(list).ToList();
            }
            foreach (var timestr in timeList)
            {
                DateTime time = Convert.ToDateTime(timestr);
                //如果是今天,要去掉今天已经过去的时间
                if (DateTime.Compare(time, DateTime.Now) > 0 || days > 0)
                {
                    var obj = new
                    {
                        time  = timestr,
                        state = false
                    };
                    TimeTable.Add(obj);
                }
            }
            return(TimeTable);
        }