示例#1
0
 /// <summary>
 /// 选座座位
 /// </summary>
 /// <param name="seatBtn"></param>
 /// <returns></returns>
 public bool SelectSeat(SeatButton seatBtn)
 {
     SeatManage.EnumType.SeatLockState lockseat = T_SM_Seat.LockSeat(seatBtn.SeatNo);
     if (lockseat == SeatManage.EnumType.SeatLockState.Locked)//座位成功加锁
     {
         clientObject.EnterOutLogData.EnterOutlog.ShortSeatNo     = seatBtn.ShortSeatNo;
         clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = _ReadingRoomName;
         clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = _ReadingRoomNo;
         MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.SelectSeatConfirm);
         CountDown.Pause();
         popWindow.ShowDialog();
         CountDown.Start();
         if (popWindow.viewModel.OperateResule == SeatManage.EnumType.HandleResult.Successed)
         {
             clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = _ReadingRoomName;
             clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = _ReadingRoomNo;
             clientObject.EnterOutLogData.EnterOutlog.SeatNo          = seatBtn.SeatNo;
             clientObject.EnterOutLogData.EnterOutlog.ShortSeatNo     = seatBtn.ShortSeatNo;
             clientObject.EnterOutLogData.EnterOutlog.TerminalNum     = clientObject.ClientSetting.ClientNo;
             clientObject.EnterOutLogData.FlowControl        = SeatManage.EnumType.ClientOperation.SelectSeat; //操作为选择座位
             clientObject.EnterOutLogData.EnterOutlog.Remark = string.Format("在终端{0}手动选择,{1},{2}号座位", clientObject.ClientSetting.ClientNo, clientObject.EnterOutLogData.Student.AtReadingRoom.Name, seatBtn.ShortSeatNo);
             RoomSelectSeatMethod = SeatManage.EnumType.SelectSeatMode.ManualMode;
             return(true);
         }
         else
         {
             T_SM_Seat.UnLockSeat(seatBtn.SeatNo);//确认窗口点击取消或者自动关闭,则解锁。
         }
     }
     else if (lockseat == SeatManage.EnumType.SeatLockState.UnLock)//没有成功加锁
     {
         MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.SeatIsLocked);
         CountDown.Pause();
         popWindow.ShowDialog();
         CountDown.Start();
     }
     else if (lockseat == SeatManage.EnumType.SeatLockState.NotExists)
     {
         MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.SeatNotExist);
         CountDown.Pause();
         popWindow.ShowDialog();
         CountDown.Start();
     }
     return(false);
 }
        /// <summary>
        /// 进入阅览室前判断
        /// </summary>
        /// <param name="roomNo"></param>
        public void EnterReadingRoom(ReadingRoomBtn_ViewModel vm_Room)
        {
            try
            {
                this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = vm_Room.ReadingRoomNo;
                ReadingRoomInfo roomInfo = SeatManage.Bll.T_SM_ReadingRoom.GetSingleRoomInfo(vm_Room.ReadingRoomNo);
                if (vm_Room.Status == SeatManage.EnumType.ReadingRoomStatus.Close || vm_Room.Status == SeatManage.EnumType.ReadingRoomStatus.BeforeClose)
                {
                    clientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo;
                    MessageWindow fullWindow = new MessageWindow(SeatManage.EnumType.MessageType.RoomNotOpen);
                    fullWindow.ShowDialog();
                    clientObject.EnterOutLogData.Student.AtReadingRoom = null;
                    return;
                }
                if (vm_Room.Usage == SeatManage.EnumType.ReadingRoomUsingStatus.Full && (!roomInfo.Setting.NoManagement.Used))
                {
                    MessageWindow fullWindow = new MessageWindow(SeatManage.EnumType.MessageType.RoomFull);
                    fullWindow.ShowDialog();
                    return;
                }
                clientObject.EnterOutLogData.Student.AtReadingRoom = roomInfo;//给读者所在的阅览室赋值。

                //验证读者身份是否允许选择该阅览室。
                if (!Code.SelectSeatProven.ProvenReaderType(clientObject.EnterOutLogData.Student, roomInfo.Setting))
                {
                    MessageWindow popWindow = new MessageWindow(SeatManage.EnumType.MessageType.RoomNotReaderType);
                    popWindow.ShowDialog();
                    return;
                }
                //验证读者黑名单,选座次数。
                if (Code.SelectSeatProven.ProvenReaderState(clientObject.EnterOutLogData.Student, roomInfo, clientObject.RegulationRulesSet.BlacklistSet, clientObject.ClientSetting.DeviceSetting))
                {
                    this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo = "";
                    return;
                }
                //TODO:验证终端选座方式
                if (vm_Room.Usage == SeatManage.EnumType.ReadingRoomUsingStatus.Full && roomInfo.Setting.NoManagement.Used)
                {
                    this.clientObject.EnterOutLogData.FlowControl = SeatManage.EnumType.ClientOperation.SelectSeat;
                    this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = roomInfo.No;
                    this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name;
                    RoomSeatWindow roomSeatWindow = new RoomSeatWindow();
                    roomSeatWindow.ShowDialog();
                    return;
                }
                else
                {
                    SeatManage.EnumType.SelectSeatMode selectSeatMethod = SeatClientV3.Code.SelectSeatProven.ProvenSelectSeatMethod(clientObject.ClientSetting.DeviceSetting, roomInfo.Setting.SeatChooseMethod);

                    if (selectSeatMethod == SeatManage.EnumType.SelectSeatMode.OptionalMode || selectSeatMethod == SeatManage.EnumType.SelectSeatMode.ManualMode)
                    {
                        this.clientObject.EnterOutLogData.FlowControl = SeatManage.EnumType.ClientOperation.SelectSeat;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = roomInfo.No;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name;
                        RoomSeatWindow roomSeatWindow = new RoomSeatWindow();
                        roomSeatWindow.ShowDialog();
                        return;
                    }
                    else
                    {
                        this.clientObject.EnterOutLogData.FlowControl = SeatManage.EnumType.ClientOperation.RandonSelect;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomNo   = roomInfo.No;
                        this.clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = roomInfo.Name;
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write("加载阅览室遇到异常" + ex.Message);
                MessageWindow errorWindow = new MessageWindow(SeatManage.EnumType.MessageType.Exception);
                errorWindow.ShowDialog();
            }
        }
        /// <summary>
        /// 选择预约的座位
        /// </summary>
        /// <param name="seatBtn"></param>
        /// <returns></returns>
        public bool SelectBookingSeat(SeatButton seatBtn)
        {
            DateTime datetimeNow = SeatManage.Bll.ServiceDateTime.Now;
            List <SeatManage.ClassModel.BespeakLogInfo> bespeakLogList = SeatManage.Bll.T_SM_SeatBespeak.GetBespeakLogInfoBySeatNo(seatBtn.SeatNo, datetimeNow.Date);

            if (bespeakLogList.Count > 0)
            {
                if (bespeakLogList[0].BsepeakTime.AddMinutes(-double.Parse(clientObject.EnterOutLogData.Student.AtReadingRoom.Setting.SeatBespeak.ConfirmTime.BeginTime)) <= datetimeNow)
                {
                    PopupWindow popWindow = new PopupWindow(SeatManage.EnumType.TipType.IsBookingSeat);
                    CountDown.Pause();
                    popWindow.ShowDialog();
                    CountDown.Start();
                    return(false);
                }
                else
                {
                    clientObject.EnterOutLogData.BespeakLogInfo = bespeakLogList[0];
                    PopupWindow popWindow = new PopupWindow(SeatManage.EnumType.TipType.SelectBookingSeatWarn);
                    CountDown.Pause();
                    popWindow.ShowDialog();
                    CountDown.Start();
                    if (popWindow.viewModel.OperateResule == SeatManage.EnumType.HandleResult.Failed)
                    {
                        clientObject.EnterOutLogData.BespeakLogInfo = null;
                        return(false);
                    }
                }
            }
            else
            {
                SeatManage.EnumType.SeatLockState lockseat = T_SM_Seat.LockSeat(seatBtn.SeatNo);
                if (lockseat == SeatManage.EnumType.SeatLockState.Locked)//座位成功加锁
                {
                    clientObject.EnterOutLogData.EnterOutlog.ShortSeatNo     = seatBtn.ShortSeatNo;
                    clientObject.EnterOutLogData.EnterOutlog.ReadingRoomName = _ReadingRoomName;
                    PopupWindow popWindow = new PopupWindow(SeatManage.EnumType.TipType.SelectSeatConfinmed);
                    CountDown.Pause();
                    popWindow.ShowDialog();
                    CountDown.Start();

                    if (popWindow.viewModel.OperateResule == SeatManage.EnumType.HandleResult.Failed)
                    {
                        T_SM_Seat.UnLockSeat(seatBtn.SeatNo);//确认窗口点击取消或者自动关闭,则解锁。
                        return(false);
                    }
                }
                else if (lockseat == SeatManage.EnumType.SeatLockState.UnLock)//没有成功加锁
                {
                    PopupWindow popWindow = new PopupWindow(SeatManage.EnumType.TipType.SeatLocking);
                    CountDown.Pause();
                    popWindow.ShowDialog();
                    CountDown.Start();
                    return(false);
                }
                else if (lockseat == SeatManage.EnumType.SeatLockState.NotExists)
                {
                    PopupWindow popWindow = new PopupWindow(SeatManage.EnumType.TipType.SeatNotExists);
                    CountDown.Pause();
                    popWindow.ShowDialog();
                    CountDown.Start();
                    return(false);
                }
            }
            clientObject.EnterOutLogData.EnterOutlog.SeatNo      = seatBtn.SeatNo;
            clientObject.EnterOutLogData.EnterOutlog.ShortSeatNo = seatBtn.ShortSeatNo;
            clientObject.EnterOutLogData.EnterOutlog.TerminalNum = clientObject.ClientSetting.ClientNo;
            clientObject.EnterOutLogData.FlowControl             = SeatManage.EnumType.ClientOperation.SelectSeat; //操作为选择座位
            clientObject.EnterOutLogData.EnterOutlog.Remark      = string.Format("在终端{0}手动选择,{1},{2}号座位", clientObject.ClientSetting.ClientNo, clientObject.EnterOutLogData.Student.AtReadingRoom.Name, seatBtn.ShortSeatNo);
            RoomSelectSeatMethod = SeatManage.EnumType.SelectSeatMode.ManualMode;
            return(true);
        }