/// <summary>
 /// 获取座位预约的信息
 /// </summary>
 /// <param name="seatNo"></param>
 /// <param name="roomNo"></param>
 /// <param name="bespeakTime"></param>
 /// <param name="schoolNo"></param>
 /// <returns></returns>
 public AJM_SeatBespeakInfo GetSeatBespeakInfo(string seatNo, string roomNo, string bespeakTime, string schoolNo)
 {
     try
     {
         IMobileAppDataObtianProxy appService = new MobileAppDataObtainProxy(schoolNo);
         string           result    = appService.GetRandomSeat(roomNo);
         AJM_HandleResult ajmResult = JSONSerializer.Deserialize <AJM_HandleResult>(result);
         if (ajmResult == null)
         {
             throw new Exception("获取预约座位信息失败!");
         }
         if (!ajmResult.Result)
         {
             throw new Exception(ajmResult.Msg);
         }
         AJM_SeatBespeakInfo ajmSeat = JSONSerializer.Deserialize <AJM_SeatBespeakInfo>(ajmResult.Msg);
         return(ajmSeat);
     }
     catch (Exception ex)
     {
         WriteLog.Write(string.Format("获取预约座位信息失败:{0}", ex.Message));
         return(null);
     }
 }
Beispiel #2
0
        /// <summary>
        /// 获取座位的可预约信息
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="roomNo"></param>
        /// <param name="bespeakTime"></param>
        /// <returns></returns>
        public string GetSeatBespeakInfo(string seatNo, string roomNo, string bespeakTime)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(roomNo) || string.IsNullOrEmpty(bespeakTime))
                {
                    result.Result = false;
                    result.Msg    = "阅览室编号或预约时间不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                //如果预约日期是当天,获取当天可用座位(排除已被预约座位)
                DateTime bespeakDate;
                if (!DateTime.TryParse(bespeakTime, out bespeakDate))
                {
                    result.Result = false;
                    result.Msg    = "日期格式不正确!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date < DateTime.Now.Date)
                {
                    result.Result = false;
                    result.Msg    = "查询日期不能早于当天日期!";
                    return(JSONSerializer.Serialize(result));
                }
                List <ReadingRoomInfo> readingRoomInfos = seatManageDateService.GetReadingRoomInfo(new List <string> {
                    roomNo
                });
                if (readingRoomInfos.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "阅览室不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo))
                {
                    result.Result = false;
                    result.Msg    = "该座位不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended)
                {
                    result.Result = false;
                    result.Msg    = "该座位暂停使用!";
                    return(JSONSerializer.Serialize(result));
                }
                if (!readingRoomInfos[0].Setting.SeatBespeak.Used)
                {
                    result.Result = false;
                    result.Msg    = "当前阅览室不提供预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if ((bespeakDate.Date - DateTime.Now.Date).Days > readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays)
                {
                    result.Result = false;
                    result.Msg    = "您选择的日期尚未开放预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date == DateTime.Now.Date && !readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak)
                {
                    result.Result = false;
                    result.Msg    = "当前阅览室未开放当天预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date != DateTime.Now.Date && !readingRoomInfos[0].Setting.IsCanBespeakSeat(bespeakDate))
                {
                    result.Result = false;
                    result.Msg    = "当前时间暂未开放预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date == DateTime.Now.Date)
                {
                    Seat seat = seatManageDateService.GetSeatInfoBySeatNum(seatNo);
                    if (seat == null)
                    {
                        result.Result = false;
                        result.Msg    = "对不起,获取座位信息失败!";
                        return(JSONSerializer.Serialize(result));
                    }
                    if (seat.SeatUsedState != EnterOutLogType.Leave)
                    {
                        result.Result = false;
                        result.Msg    = "对不起此座位已被其他人使用!";
                        return(JSONSerializer.Serialize(result));
                    }
                }
                if (seatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, bespeakDate.Date).Count > 0)
                {
                    result.Result = false;
                    result.Msg    = "对不起此座位已被其他人预约!";
                    return(JSONSerializer.Serialize(result));
                }

                AJM_SeatBespeakInfo ajmseat = new AJM_SeatBespeakInfo();
                ajmseat.SeatNo          = seatNo;
                ajmseat.SeatShortNo     = readingRoomInfos[0].SeatList.Seats[seatNo].ShortSeatNo;
                ajmseat.RoomNo          = readingRoomInfos[0].No;
                ajmseat.RoomName        = readingRoomInfos[0].Name;
                ajmseat.BespeakDate     = bespeakDate.ToShortDateString();
                ajmseat.IsCanSelectTime = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak;
                ajmseat.IsUsedSpan      = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedTime;
                ajmseat.CheckKeepTime   = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime;
                ajmseat.CheckBeforeTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.BeginTime);
                ajmseat.CheckLastTime   = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.EndTime);


                DateTime bookstartTime = readingRoomInfos[0].Setting.DateOpenTime(bespeakDate);
                if (bookstartTime > DateTime.Now)
                {
                    ajmseat.IsCanNowBook    = false;
                    ajmseat.IsCanSelectTime = true;
                }

                if (readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak)
                {
                    List <DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(bespeakDate);
                    foreach (var time in timeSpans)
                    {
                        ajmseat.TimeList.Add(time.ToShortTimeString());
                    }
                }
                else
                {
                    ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(bespeakDate).ToShortTimeString());
                }


                //if (ajmseat.IsCanSelectTime)
                //{
                //    List<DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(besppeakDate);
                //    foreach (var time in timeSpans)
                //    {
                //        ajmseat.TimeList.Add(time.ToShortTimeString());
                //    }
                //}
                //else
                //{
                //    ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(besppeakDate).ToShortTimeString());
                //}

                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmseat);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取当前可预约座位列表遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取当前阅览室可预约座位执行越到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }