public string SubmitNowDayBespeakInfo(AMS.Model.AMS_School school, ClassModel.BespeakLogInfo bespeakInfo)
 {
     SeatManage.IPocketBespeakBllService.IPocketBespeakBllService pocketBespeak = BespeakServiceConnProxy.BespeakServiceConnProxy.CreateChannelPocketBespeakBllService(school.ConnectionString);
     try
     {
         return(pocketBespeak.SubmitNowDayBespeakInfo(bespeakInfo));
     }
     catch (Exception ex)
     {
         throw new RemoteServiceLinkFailed(ex.Message);
     }
     finally
     {
         ICommunicationObject ICommObjectService = pocketBespeak as ICommunicationObject;
         try
         {
             if (ICommObjectService.State == CommunicationState.Faulted)
             {
                 ICommObjectService.Abort();
             }
             else
             {
                 ICommObjectService.Close();
             }
         }
         catch
         {
             ICommObjectService.Abort();
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 提交预约信息
        /// </summary>
        /// <param name="bespeakInfo"></param>
        /// <returns></returns>
        public string SubmitBespeakInfo(ClassModel.BespeakLogInfo bespeakInfo)
        {
            string returnValue                 = "";
            List <BespeakLogInfo>  bespeak     = seatManage.GetBespeakLogInfo(bespeakInfo.CardNo, bespeakInfo.BsepeakTime);
            List <BespeakLogInfo>  seatbespeak = seatManage.GetBespeakLogInfoBySeatNo(bespeakInfo.SeatNo, bespeakInfo.BsepeakTime);
            List <ReadingRoomInfo> rooms       = seatManage.GetReadingRooms(new List <string>()
            {
                bespeakInfo.ReadingRoomNo
            }, null, null);

            if (rooms.Count == 0)
            {
                throw new SeatBespeakException.BespeakSeatFailed("获取阅览室信息失败。");
            }
            if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime)
            {
                if (bespeak.Count >= rooms[0].Setting.SeatBespeak.BespeakSeatCount)
                {
                    throw new SeatBespeakException.BespeakSeatFailed("对不起,您一天最多预约" + rooms[0].Setting.SeatBespeak.BespeakSeatCount + "个座位。");
                }

                foreach (BespeakLogInfo b in bespeak)
                {
                    if (b.BsepeakTime == bespeakInfo.BsepeakTime && b.BsepeakState == BookingStatus.Waiting)
                    {
                        throw new SeatBespeakException.BespeakSeatFailed("对不起,同一时间段只能预约一个座位。");
                    }
                }
                foreach (BespeakLogInfo b in seatbespeak)
                {
                    if (b.BsepeakTime == bespeakInfo.BsepeakTime)
                    {
                        throw new SeatBespeakException.BespeakSeatFailed("对不起,此时间段已被预约。");
                    }
                }
            }
            else
            {
                if (bespeak.Count > 0)
                {
                    throw new SeatBespeakException.BespeakSeatFailed("对不起,当前日期您已有等待签到的座位。");
                }
                foreach (BespeakLogInfo b in seatbespeak)
                {
                    if (b.BsepeakState == EnumType.BookingStatus.Waiting)
                    {
                        throw new Exception("所选座位已经被预约。");
                    }
                }
            }
            List <BlackListInfo> blackLog = seatManage.GetBlacklistInfo(bespeakInfo.CardNo);

            if (blackLog.Count > 0)
            {
                throw new SeatBespeakException.BespeakSeatFailed("你已被记录黑名单,无法预约座位。");
            }
            if (rooms[0].Setting.SeatBespeak.BespeakArea.BespeakType == BespeakAreaType.Percentage)
            {
                List <BespeakLogInfo> bespeaklogs = seatManage.GetBespeakLogInfoByRoomsNum(new List <string>()
                {
                    bespeakInfo.ReadingRoomNo
                }, bespeakInfo.BsepeakTime);
                int canbookCount = (int)((rooms[0].SeatList.Seats.Count - rooms[0].SeatList.Seats.Where(u => u.Value.IsSuspended).ToArray().Count()) * rooms[0].Setting.SeatBespeak.BespeakArea.Scale);
                if (bespeaklogs.Count >= canbookCount)
                {
                    throw new SeatBespeakException.BespeakSeatFailed("对不起当前阅览室已经没有可预约的座位。");
                }
            }
            if (rooms.Count > 0)
            {
                ReadingRoomInfo r = rooms[0];
                if (r.Setting.IsCanBespeakSeat(bespeakInfo.BsepeakTime))
                {
                    throw new SeatBespeakException.BespeakSeatFailed("对不起当前时间不开放预约。");
                }
                if (dateBespeak(r.Setting.SeatBespeak, bespeakInfo.BsepeakTime, DateTime.Now))//验证日期是否合法。
                {
                    EnumType.HandleResult result = seatManage.AddBespeakLogInfo(bespeakInfo);
                    if (result == EnumType.HandleResult.Successed)
                    {
                        string beginTime = bespeakInfo.BsepeakTime.AddMinutes(-double.Parse(r.Setting.SeatBespeak.ConfirmTime.BeginTime)).ToShortTimeString();
                        string endTime   = bespeakInfo.BsepeakTime.AddMinutes(double.Parse(r.Setting.SeatBespeak.ConfirmTime.EndTime)).ToShortTimeString();
                        returnValue = string.Format("座位预约成功,请在{0}至{1}到图书馆刷卡确认", beginTime, endTime);
                    }
                    else
                    {
                        throw new SeatBespeakException.BespeakSeatFailed("所选座位已经被预约。");
                    }
                }
                else
                {
                    throw new SeatBespeakException.BespeakSeatFailed("选择的日期不允许预约。");
                }
            }
            return(returnValue);
        }