Beispiel #1
0
        private void SendTurnOnKMU(List <ClientParm> clientParm, OperationInfo opInfo)
        {
            foreach (ClientParm cp in clientParm)
            {
                InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.ClientID == cp.ClientID).FirstOrDefault();

                if (iClientStatus != null)
                {
                    ConnectionInfo connInfo = _targetClientDaemonConnection.Where(x => ((IPEndPoint)x.RemoteEndPoint).Address.MapToIPv4().ToString() == iClientStatus.ClientIP).FirstOrDefault();

                    if (connInfo != null)
                    {
                        VRCommand vrc = new VRCommand(VRGameSelectorDTO.Enums.ControlMessage.TURN_ON_KMU);

                        SendCommandToPeer(connInfo, vrc);

                        CreateManageLog(opInfo.SourceType, VRGameSelectorServerDTO.Enums.OperationType.TURN_ON_KMU,
                                        ((IPEndPoint)opInfo.ConnectionInfo.RemoteEndPoint).Address.MapToIPv4().ToString(),
                                        (opInfo.ClientID != null) ? opInfo.ClientID : cp.ClientID, null, opInfo.TicketGUID, "");
                    }
                }
            }
        }
        private void HandleIncomingCommandManagingSystem(PacketHeader packetHeader, Connection connection, VRCommandServer vrCommandServer)
        {
            OperationInfo opInfo = new OperationInfo()
            {
                SourceType = Enums.SourceType.MANAGEMENT_SYSTEM, ConnectionInfo = connection.ConnectionInfo
            };

            switch (vrCommandServer.ControlMessage)
            {
            case VRGameSelectorServerDTO.Enums.ControlMessage.NONE:
                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_SYSCONFIG:

                GetSysConfig(connection.ConnectionInfo, vrCommandServer.SystemConfig);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.SET_SYSCONFIG:

                SetSysConfig(vrCommandServer.SystemConfig);
                UpdateAllClientDaemonSystemConfig();

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_CONFIGED_CLIENT_LIST:

                GetConfiguredClientList(connection.ConnectionInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.MODIFY_CLIENT_CONFIG:

                ModifyClientConfig(connection.ConnectionInfo, vrCommandServer.Client);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.ADD_CLIENT_CONFIG:

                AddClientConfig(connection.ConnectionInfo, vrCommandServer.Client);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.DELETE_CLIENT_CONFIG:

                DeleteClientConfig(connection.ConnectionInfo, vrCommandServer.Client);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_CONFIG_SET_LIST:

                GetConfigSetList(connection.ConnectionInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.MODIFY_CONFIG_SET:

                ModifyConfigSetList(connection.ConnectionInfo, vrCommandServer.ConfigSet);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.ADD_CONFIG_SET:

                AddConfigSetList(connection.ConnectionInfo, vrCommandServer.ConfigSet);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.DELETE_CONFIG_SET:

                DeleteConfigSetList(connection.ConnectionInfo, vrCommandServer.ConfigSet);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_TILE_CONFIG:

                GetTileConfigList(connection.ConnectionInfo, vrCommandServer.TileConfig.TileConfigSetID);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.MODIFY_TILE_CONFIG:

                ModifyTileConfig(connection.ConnectionInfo, vrCommandServer.TileConfig);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.ADD_TILE_CONFIG:

                AddTileConfig(connection.ConnectionInfo, vrCommandServer.TileConfig);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.DELETE_TILE_CONFIG:

                DeleteTileConfig(connection.ConnectionInfo, vrCommandServer.TileConfig);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.REORDER_UP_TILE_CONFIG:

                ReorderUpTileConfig(connection.ConnectionInfo, vrCommandServer.TileConfig);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.REORDER_DOWN_TILE_CONFIG:

                ReorderDownTileConfig(connection.ConnectionInfo, vrCommandServer.TileConfig);

                break;

            case Enums.ControlMessage.SYNC_TILE_CONFIG:

                UpdateAllClientDaemonTileConfig();

                break;

            case Enums.ControlMessage.REINIT_CLIENT_SETTING:

                BuildInternalClientStatus();

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_LIVE_SYSTEM_INFO:

                SendLiveSystemInfoToManagingSystem(connection.ConnectionInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.START_TIMING:

                SendStartTiming(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.START_NOW:

                SendStartNow(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.END_NOW:

                SendEndNow(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.REBOOT:

                SendReboot(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.TURN_OFF:

                SendTurnOff(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.TURN_OFF_KMU:

                SendTurnOffKMU(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.TURN_ON_KMU:

                SendTurnOnKMU(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.HELP_PROVIDED:

                ResetHelpRequestStatus(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.CLEANING_PROVIDED:

                ResetCleaningStatus(vrCommandServer.ClientParm, opInfo);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GET_GAME_PLAY_HISTORY:

                GetGamePlayHistory(connection.ConnectionInfo, vrCommandServer.ClientParm);

                break;

            case VRGameSelectorServerDTO.Enums.ControlMessage.GENERATE_BARCODE:

                GenerateBarcode(connection.ConnectionInfo, vrCommandServer.BarcodeInfo);

                break;

            case Enums.ControlMessage.GET_KEY:

                GetKey(connection.ConnectionInfo);

                break;

            case Enums.ControlMessage.DELETE_KEY:

                DeleteKey(connection.ConnectionInfo, vrCommandServer.ListKeyInfo);

                break;

            case Enums.ControlMessage.ADD_KEY:

                AddKey(connection.ConnectionInfo, vrCommandServer.ListKeyInfo);

                break;

            case Enums.ControlMessage.GET_KEY_TYPE:

                GetKeyType(connection.ConnectionInfo);

                break;

            case Enums.ControlMessage.GET_PENDING_WAIVER:

                GetPendingWaiverList(connection.ConnectionInfo);

                break;

            case Enums.ControlMessage.GET_BOOKING_REF_SETTING:

                GetBookingReferenceSetting(connection.ConnectionInfo, vrCommandServer.BookingReference);

                break;

            case Enums.ControlMessage.DELETE_PENDING_WAIVER:

                DeletePendingWaiver(connection.ConnectionInfo, vrCommandServer.ListWaiverInfo);

                break;

            case Enums.ControlMessage.MARK_WAIVER_RECEIVED:

                MarkWaiverReceived(connection.ConnectionInfo, vrCommandServer.ListWaiverInfo);

                break;

            default:
                break;
            }
        }
        public void ProcessBarcode(string ipAdd, string barcode)
        {
            try
            {
                logger.Debug("BARCODE IN  " + barcode);
                logger.Debug("From dashboard: " + ipAdd);

                InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.DashboardModuleIP == ipAdd).FirstOrDefault();

                Ascii85 a85 = new Ascii85();
                //Guid guid = new Guid(Convert.FromBase64String(barcode.BarcodeReadout + "=="));

                Guid guid = new Guid(a85.Decode(barcode));

                logger.Debug(guid.ToString());

                if (iClientStatus != null && guid != null && guid != Guid.Empty)
                {
                    logger.Debug("P1");
                    using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
                    {
                        VRTicket vrt = m.VRTickets.Where(x => x.GUID == guid.ToString() && !x.IsDeleted).FirstOrDefault();

                        if (vrt != null && vrt.VRTicketType != null)
                        {
                            logger.Debug("P2");
                            List <ClientParm> clientParm = new List <ClientParm>();
                            IPAddress         ipa        = null;
                            if (!IPAddress.TryParse(ipAdd, out ipa))
                            {
                                ipa = IPAddress.Parse("0.0.0.0");
                            }

                            OperationInfo opInfo = new OperationInfo()
                            {
                                ConnectionInfo = new ConnectionInfo(new IPEndPoint(ipa, 0)),
                                TicketGUID     = vrt.GUID,
                                SourceType     = VRGameSelectorServerDTO.Enums.SourceType.LCD_BARCODE_MODULE,
                                ClientID       = iClientStatus.ClientID
                            };

                            if (vrt.VRTicketType.Type == "TICKET" && iClientStatus.ClientStatus == VRGameSelectorServerDTO.Enums.LiveClientStatus.CLEANING_DONE)
                            {
                                if (Math.Abs(DateTime.Now.Subtract(vrt.TimeStampCreate).TotalMinutes) <= 60)
                                {
                                    logger.Debug("P3");
                                    VRClient vrc = m.VRClients.Where(x => x.ID == iClientStatus.ClientID).FirstOrDefault();

                                    if (vrt.Minutes == 0)
                                    {
                                        // non-timing
                                        clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                        SendStartNow(clientParm, opInfo);
                                        logger.Debug("NON-TIMING");
                                    }
                                    else
                                    {
                                        // timing
                                        Dictionary <string, string> dict = new Dictionary <string, string>()
                                        {
                                            { "Duration", vrt.Minutes.ToString() }
                                        };

                                        clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                        SendStartTiming(clientParm, opInfo);
                                        logger.Debug("TIMING:" + vrt.Minutes.ToString());
                                    }

                                    vrt.IsDeleted       = true;
                                    vrt.TimeStampDelete = DateTime.Now;
                                    vrt.VRClientID      = (vrc != null) ? (int?)vrc.ID : null;

                                    m.SaveChanges();
                                }
                                else
                                {
                                    logger.Debug("P4");
                                }
                            }
                            else if (vrt.VRTicketType.Type == "KEY-START-NON-TIMING")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendStartNow(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-START-TIMING")
                            {
                                Dictionary <string, string> dict = new Dictionary <string, string>()
                                {
                                    { "Duration", vrt.Minutes.ToString() }
                                };

                                clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                SendStartTiming(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-END-GAME")
                            {
                                Dictionary <string, string> dict = new Dictionary <string, string>()
                                {
                                    { "EndMode", "Manual" }
                                };

                                clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                SendEndNow(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-REBOOT")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendReboot(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-TURNOFF")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOff(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-KMU-ON")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOnKMU(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-KMU-OFF")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOffKMU(clientParm, opInfo);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Debug("Barcode Decoding Error: " + ex.Message);
            }
        }
Beispiel #4
0
        private void HandleIncomingCommandClientDaemon(PacketHeader packetHeader, Connection connection, VRCommand vrCommand)
        {
            switch (vrCommand.ControlMessage)
            {
            case VRGameSelectorDTO.Enums.ControlMessage.NONE:

                HandleClientDaemonPing(connection.ConnectionInfo);

                break;

            case VRGameSelectorDTO.Enums.ControlMessage.GET_ALL_SYSCONFIG:

                ClientSetAllSysConfig(connection.ConnectionInfo);

                break;

            case VRGameSelectorDTO.Enums.ControlMessage.GET_ALL_TILE_CONFIG:

                if (CheckAbleToSendAllTileConfig(connection.ConnectionInfo))
                {
                    ClientSetAllTileConfig(connection.ConnectionInfo);
                }

                break;

            case Enums.ControlMessage.GET_ALL_TILE_CONFIG_WITH_IMAGE:

                if (CheckAbleToSendAllTileConfig(connection.ConnectionInfo))
                {
                    ClientSetAllTileConfigWithImage(connection.ConnectionInfo);
                }

                break;

            case VRGameSelectorDTO.Enums.ControlMessage.START_TIMING:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.START_NOW:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.END_NOW:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.TURN_OFF:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.STATUS:

                ClientSetRunningMode(connection.ConnectionInfo);

                break;

            case VRGameSelectorDTO.Enums.ControlMessage.LOAD_CONFIG:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.PLAY_LOG:

                ProcessPlayLog(connection.ConnectionInfo, vrCommand.PlayLog);

                break;

            case VRGameSelectorDTO.Enums.ControlMessage.CLIENT_UI_READY:
                break;

            case VRGameSelectorDTO.Enums.ControlMessage.REQUEST_HELP:

                OperationInfo opInfo = new OperationInfo()
                {
                    SourceType = VRGameSelectorServerDTO.Enums.SourceType.CLIENT, ConnectionInfo = connection.ConnectionInfo
                };
                SetHelpRequestStatus(connection.ConnectionInfo, opInfo);

                break;

            default:
                break;
            }

            IPEndPoint ep = (IPEndPoint)connection.ConnectionInfo.RemoteEndPoint;

            string ipAdd       = ep.Address.MapToIPv4().ToString();
            string machineName = (vrCommand.MachineName != null) ? vrCommand.MachineName : "";

            InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.ClientIP == ipAdd).FirstOrDefault();

            if (iClientStatus != null && (iClientStatus.ClientName != machineName || iClientStatus.ClientStatus != (VRGameSelectorServerDTO.Enums.LiveClientStatus)vrCommand.LiveClientStatus))
            {
                UpdateInternalClientStatus(ipAdd, machineName, vrCommand.LiveClientStatus, vrCommand.AdditionalInfo);
                isManageSystemPushRequired = true;
            }
        }