public InstallationDetailsForMSMQ GetInstallationFromCache(string key, int installationNo)
        {
            using (ILogMethod method = Log.LogMethod(this.DYN_MODULE_NAME, "GetInstallationFromCache"))
            {
                InstallationDetailsForMSMQ data = null;

                try
                {
                    var  cache = this.InstallationDetailsCache;
                    bool force = (key.IsEmpty() ||
                                  !cache.ContainsKey(key) ||
                                  _configStore.ForceInstallations.ContainsKey(key));

                    data = (force ?
                            cache.AddOrUpdate2(key, ExCommsDataContext.Current.GetInstallationDetailsByDatapak(installationNo)) :
                            cache.GetIfExists(key));
                }
                catch (Exception ex)
                {
                    method.Exception(ex);
                }

                return(data);
            }
        }
Exemple #2
0
        private PCIntervalRatings GetIntervalRatingEntity(MonMsg_G2H request)
        {
            InstallationDetailsForMSMQ   installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);
            MeterDeltaForPCSessionResult meterdelta          = ExCommsDataContext.Current.GetMeterDeltaForPCSession(request.InstallationNo, request.CardNumber, "IR");
            string   asset   = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime endDate = DateTime.Now;

            PCIntervalRatings pgStatusRequest = new PCIntervalRatings()
            {
                CardNo      = request.CardNumber,
                CardLength  = request.CardNumber.Length,
                SlotNo      = asset,
                Stand       = installationDetails.Bar_Pos_Name,
                StartDate   = meterdelta.SessionStartDate.GetValueOrDefault().ToString("yyyyMMdd"),
                StartTime   = meterdelta.SessionStartDate.GetValueOrDefault().ToString("HHmmss"),
                EndDate     = endDate.Date.ToString("yyyyMMdd"),
                EndTime     = endDate.ToString("HHmmss"),
                CoinsBet    = Convert.ToInt64(meterdelta.CoinsIn),
                CoinsWon    = Convert.ToInt64(meterdelta.CoinsOut),
                GamesPlayed = Convert.ToInt64(meterdelta.GamesPlayed),
                BarPosition = installationDetails.Bar_Pos_Name,
                Asset       = asset,
                SiteCode    = request.SiteCode,
                RatingBasis = HandlerHelper.Current.PCRatingBasis
            };

            return(pgStatusRequest);
        }
Exemple #3
0
        private bool DoDepositComplete(MonMsg_G2H request, MonTgt_G2H_EFT_DepositComplete monDepositRequest)
        {
            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);

            HandlerHelper.Current.SaveSDTRequest(monDepositRequest.CardNumber, request.InstallationNo);
            Log.Info("TransactionID used in Deposit Request " + installationDetails.TransactionID.ToString());

            string   asset     = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime transDate = DateTime.Now;

            //Authentication - To do
            DepositRequest depositRequest = new DepositRequest
            {
                //AccountType = monDepositRequest.ac,
                CashableFunds    = Convert.ToInt32((monDepositRequest.CashableAmount * 100)),
                NonCashableFunds = Convert.ToInt32((monDepositRequest.NonCashableAmount * 100)),
                //Authentication =
                BarPosition     = installationDetails.Bar_Pos_Name,
                CardNo          = monDepositRequest.CardNumber,
                InstallationNo  = request.InstallationNo,
                SlotIndex       = installationDetails.Bar_Pos_Name,
                SlotNumber      = asset,
                Stand           = installationDetails.Bar_Pos_Name,
                TransactionDate = transDate.ToString("yyyyMMdd").PadLeft(8, '0'),
                TransactionID   = installationDetails.TransactionID.ToString().PadLeft(3, '0').Substring(0, 3),
                TransactionTime = transDate.ToString("HHmmss").PadLeft(6, '0'),
                SiteCode        = request.SiteCode
            };

            HandlerHelper.PlayerGatewayInstance.DepositComplete(depositRequest, this.DepositCompleteResp);
            return(true);
        }
        private PCEnrollParamorStatusRequest GetStatusRequestEntity(MonMsg_G2H request, MonTgt_G2H_PC_StatusRequest statusRequest)
        {
            string   encryptedPin = HandlerHelper.Current.GetEncryptedPIN(Crypto.Crypto.AsciiToHex(statusRequest.PlayerPIN, HandlerHelper.Current.Encode));
            string   asset        = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime transDate    = DateTime.Now;

            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);

            Log.Info("Encrypted Pin " + encryptedPin);

            PCEnrollParamorStatusRequest pgStatusRequest = new PCEnrollParamorStatusRequest()
            {
                CardNo       = request.CardNumber,
                CardLength   = request.CardNumber.Length,
                EncryptedPin = encryptedPin,
                EventDate    = transDate.Date.ToString("yyyyMMdd"),
                EventTime    = transDate.Date.ToString("HHmmss"),
                SlotNo       = asset,
                Stand        = installationDetails.Bar_Pos_Name,
                BarPosition  = installationDetails.Bar_Pos_Name,
                Asset        = asset
            };

            return(pgStatusRequest);
        }
Exemple #5
0
        private bool ProcessBalanceRequest(MonMsg_G2H request)
        {
            try
            {
                ModuleProc PROC = new ModuleProc("EPIHandler", "ProcessBalanceRequest");

                MonTgt_G2H_EFT_BalanceRequest balnceRequest = request.Targets[0] as MonTgt_G2H_EFT_BalanceRequest;
                if (balnceRequest == null)
                {
                    return(false);
                }

                string _pin          = Crypto.Crypto.AsciiToHex(balnceRequest.Pin, _handlerInstance.IsASCIIEncoding() ? Encoding.ASCII : ASCIIEncoding.Default);
                string _encryptedPin = Crypto.Crypto.EncryptHexString(_handlerInstance.EncryptionKey, _pin, _handlerInstance.IsASCIIEncoding() ? Encoding.ASCII : ASCIIEncoding.Default);
                Log.Info("Encrypted Pin " + _encryptedPin);

                InstallationDetailsForMSMQ installationDetails = EFT_DataAccess.GetInstance().GetInstallationDetailsByDatapak(request.InstallationNo);


                return(false);
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
                return(false);
            }
        }
        protected override bool OnExecuteInternal(MonitorExecutionContext context, MonitorEntity_MsgTgt target)
        {
            bool       status  = default(bool);
            MonMsg_G2H request = context.G2HMessage;

            try
            {
                InstallationDetailsForMSMQ dbData = request.Extra as InstallationDetailsForMSMQ;
                int             installationNo    = Convert.ToInt32(request.InstallationNo);
                System.DateTime dDate             = request.FaultDate;

                if (ExCommsDataContext.Current.CreateDoorEvent(installationNo, target.FaultType, true, dDate))
                {
                    status = true;
                }

                // modify the floor status..
                if (ExCommsDataContext.Current.UpdateFloorStatus(installationNo, dDate, target.FaultType))
                {
                    status = true;
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
            return(status);
        }
        protected override bool OnExecuteInternal(MonitorExecutionContext context, MonitorEntity_MsgTgt target)
        {
            using (ILogMethod method = Log.LogMethod(this.DYN_MODULE_NAME, "OnExecuteInternal"))
            {
                bool       result  = default(bool);
                MonMsg_G2H request = context.G2HMessage;
                MonTgt_G2H_Status_NovoTicketCreate tgtSrc = target as MonTgt_G2H_Status_NovoTicketCreate;

                try
                {
                    InstallationDetailsForMSMQ dbData = request.Extra as InstallationDetailsForMSMQ;
                    int installationNo = request.InstallationNo;

                    method.InfoV("Creating novo ticket for {0:D} Ticket value {1:D} Ticket Number {2:D}", installationNo, tgtSrc.TicketAmount, tgtSrc.TicketNumber);
                    result = ExCommsDataContext.Current.InsertTicket(installationNo, dbData.Machine_No,
                                                                     installationNo, tgtSrc.TicketAmount, tgtSrc.TicketNumber, tgtSrc.PrintDate);
                }
                catch (Exception ex)
                {
                    method.Exception(ex);
                }

                return(result);
            }
        }
        protected override bool OnExecuteInternal(MonitorExecutionContext context, MonitorEntity_MsgTgt target)
        {
            InstallationDetailsForMSMQ dbData = null;
            string     sText  = null;
            string     CardID = null;
            DateTime   dDate;
            int        installationNo = default(int);
            bool       status         = default(bool);
            MonMsg_G2H request        = context.G2HMessage;

            try
            {
                long lFaultSource = 0;
                long lFaultType   = 0;

                dbData         = request.Extra as InstallationDetailsForMSMQ;
                installationNo = request.InstallationNo;
                dDate          = default(System.DateTime);

                dDate = request.FaultDate;
                sText = "";

                if (request.FaultSource == 21 & request.FaultType == 21)
                {
                    lFaultSource = 200;
                    lFaultType   = request.FaultType;
                }
                else
                {
                    lFaultSource = request.FaultSource;
                    lFaultType   = request.FaultType;
                }

                try
                {
                    CardID = dbData.EmployeeCardNumber;
                }
                catch (Exception ex)
                {
                    CardID = string.Empty;
                }

                if (ExCommsDataContext.Current.CreateFaultEvent(installationNo, (int)lFaultSource, (int)lFaultType, sText, true, dDate, CardID))
                {
                    status = true;
                }
            }
            catch (Exception ex)
            {
                status = false;
            }
            return(status);
        }
 private void FillRequestValues(MonMsg_G2H request)
 {
     using (ILogMethod method = Log.LogMethod(this.DYN_MODULE_NAME, "FillRequestValues"))
     {
         try
         {
             InstallationDetailsForMSMQ data = ModuleHelper.Current.GetInstallationFromCache(request.FaultSourceTypeKey, request.InstallationNo);
             request.Extra    = data;
             request.SiteCode = data.SiteCode;
             request.Asset    = data.Stock_No;
         }
         catch (Exception ex)
         {
             method.Exception(ex);
         }
     }
 }
        private PCEnrollmentRequest GetPCPlayerEnrollmentRequestEntity(MonMsg_G2H request, MonTgt_G2H_PC_PlayerEnrollmentRequest playerEnrollmentReq)
        {
            string   asset     = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime transDate = DateTime.Now;
            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);

            PCEnrollmentRequest pgEnrollParamStatReq = new PCEnrollmentRequest()
            {
                CardNo      = request.CardNumber,
                CardLength  = request.CardNumber.Length,
                SlotNo      = installationDetails.Bar_Pos_Name,
                Stand       = asset,
                BarPosition = installationDetails.Bar_Pos_Name,
                EventDate   = transDate.Date.ToString("yyyyMMdd"),
                EventTime   = transDate.Date.ToString("HHmmss"),

                IsDayTimeBasis = playerEnrollmentReq.IsDayTimeBasis,
                DayTargetTime  = playerEnrollmentReq.DayDefaultTime.ToString(),

                IsWeekTimeBasis = playerEnrollmentReq.IsWeekTimeBasis,
                WeekTargetTime  = playerEnrollmentReq.WeekTargetTime.ToString(),

                IsMonthTimeBasis = playerEnrollmentReq.IsMonthTimeBasis,
                MonthTargetTime  = playerEnrollmentReq.MonthTargetTime.ToString(),

                IsDayLossBasis = playerEnrollmentReq.IsDayLossBasis,
                DayTargetLoss  = Convert.ToInt32((playerEnrollmentReq.DayTargetLossValue * 100)),

                IsWeekLossBasis = playerEnrollmentReq.IsWeekLossBasis,
                WeekTargetLoss  = Convert.ToInt32((playerEnrollmentReq.WeekTargetLossValue * 100)),

                IsMonthLossBasis = playerEnrollmentReq.IsMonthLossBasis,
                MonthTargetLoss  = Convert.ToInt32((playerEnrollmentReq.MonthTargetLossValue * 100)),

                IsDayWagerBasis = playerEnrollmentReq.IsDayWagerBasis,
                DayTargetWagers = Convert.ToInt32((playerEnrollmentReq.DayTargetWager * 100)),

                IsWeekWagerBasis = playerEnrollmentReq.IsWeekWagerBasis,
                WeekTargetWagers = Convert.ToInt32((playerEnrollmentReq.WeekTargetWager * 100)),

                IsMonthWagerBasis = playerEnrollmentReq.IsMonthWagerBasis,
                MonthTargetWagers = Convert.ToInt32((playerEnrollmentReq.MonthTargetWager * 100))
            };

            return(pgEnrollParamStatReq);
        }
Exemple #11
0
        private PCNotificationResponse GetNotificationResponseEntity(MonMsg_G2H request, MonTgt_G2H_PC_NotificationResponse notificationResponse)
        {
            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);
            string   asset     = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime transDate = DateTime.Now;

            PCNotificationResponse pgnotificationResponse = new PCNotificationResponse()
            {
                CardNo      = request.CardNumber,
                CardLength  = request.CardNumber.Length,
                SlotNo      = request.Asset,
                Stand       = installationDetails.Bar_Pos_Name,
                EventDate   = transDate.Date,
                EventTime   = transDate.Date.TimeOfDay,
                SiteCode    = request.SiteCode,
                BarPosition = request.Asset,
                Asset       = asset
            };

            return(pgnotificationResponse);
        }
Exemple #12
0
        private bool DoDepositRequest(MonMsg_G2H request, MonTgt_G2H_EFT_DepositRequest monDepositRequest)
        {
            Log.Info("Started Deposit Request");
            Log.Info("Card Value : " + monDepositRequest.CardNumber);
            //Log.Info("Encrypted Pin XXXXXXXXXXXXXXXX");
            Log.Info("Started DepositRequest " + monDepositRequest.CardNumber);

            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(request.InstallationNo);

            HandlerHelper.Current.SaveSDTRequest(monDepositRequest.CardNumber, request.InstallationNo);
            //HandlerHelper.Current.SaveSDTAccountType(monDepositRequest.CardNumber, );

            string   asset     = HandlerHelper.Current.GetAssetByStockPrefix(request.Asset);
            DateTime transDate = DateTime.Now;

            //Authentication  - To do
            DepositRequest depositRequest = new DepositRequest
            {
                //AccountType = monDepositRequest.ac,
                CashableFunds    = Convert.ToInt32((monDepositRequest.CashableAmount * 100)),
                NonCashableFunds = Convert.ToInt32((monDepositRequest.NonCashableAmount * 100)),
                //Authentication =
                BarPosition = installationDetails.Bar_Pos_Name,
                CardNo      = monDepositRequest.CardNumber,
                //EncryptedPin =
                InstallationNo  = request.InstallationNo,
                SlotIndex       = installationDetails.Bar_Pos_Name,
                SlotNumber      = asset,
                Stand           = installationDetails.Bar_Pos_Name,
                TransactionDate = transDate.ToString("yyyyMMdd").PadLeft(8, '0'),
                TransactionID   = installationDetails.TransactionID.ToString(),
                TransactionTime = transDate.ToString("HHmmss").PadLeft(6, '0'),
                SiteCode        = request.SiteCode
            };

            HandlerHelper.PlayerGatewayInstance.DepositRequest(depositRequest, this.DepositRequestResp);
            Log.Info("Time taken to send message to Gateway " + DateTime.Now.TimeOfDay.ToString());
            return(true);
        }
        private void AuthenticatePinNumber(string siteCode, int installationNo, string asset, string playerCardNumber, string encryptedPin, bool IsGameUnCapping)
        {
            InstallationDetailsForMSMQ installationDetails = ExCommsDataContext.Current.GetInstallationDetailsByDatapak(installationNo);

            HandlerHelper.Current.SaveSDTRequest(playerCardNumber, installationNo);

            asset = HandlerHelper.Current.GetAssetByStockPrefix(asset);
            DateTime transDate = DateTime.Now;

            GameCapAuthenticationRequest pinAuthenticationRequest = new GameCapAuthenticationRequest
            {
                TransactionID   = HandlerHelper.Current.NextPTRequestID().ToString(),
                TransactionDate = transDate.ToString("yyyyMMdd").PadLeft(8, '0'),
                TransactionTime = transDate.ToString("HHmmss").PadLeft(6, '0'),

                InstallationNo = installationNo,
                BarPosition    = installationDetails.Bar_Pos_Name,
                SlotNumber     = installationDetails.Bar_Pos_Name.PadLeft(8, '0'),
                SlotIndex      = installationDetails.Bar_Pos_Name.PadLeft(6, '0'),
                Stand          = asset,

                CardNo       = playerCardNumber,
                EncryptedPin = encryptedPin.PadLeft(16, '0'),
                SiteCode     = siteCode,
                //Authentication =
            };

            if (IsGameUnCapping)
            {
                HandlerHelper.PlayerGatewayInstance.GameCapPINAuthentication(pinAuthenticationRequest, this.UnCapAuthenticatePinNumberResponse);
            }
            else
            {
                HandlerHelper.PlayerGatewayInstance.GameCapPINAuthentication(pinAuthenticationRequest, this.CapAuthenticatePinNumberResponse);
            }
        }
        protected override void OnCreateTicketException(MonMsg_G2H request, MonitorEntity_MsgTgt target)
        {
            InstallationDetailsForMSMQ dbData = request.Extra as InstallationDetailsForMSMQ;

            ExCommsDataContext.Current.CreateTickeException_Handpay(request.InstallationNo, 0, dbData.Bar_Pos_Name, true, "MYSTERY", request.FaultDate);
        }
Exemple #15
0
        protected override bool ProcessG2HMessageInternal(MonMsg_G2H request)
        {
            bool         retVal   = true;
            const string msg_type = "Card Out";
            InstallationDetailsForMSMQ installationDetails = null;

            // add the card detail
            var cardDetail = EPIManager.Current.AddOrUpdateCardInDetail(request.InstallationNo, request.CardNumber);

            using (ILogMethod method = Log.LogMethod("MonitorHandler_EPI_22_38", "ProcessG2HMessageInternal"))
            {
                try
                {
                    method.Info("Started Employee Card Out for " + request.CardNumber);

                    if (HandlerHelper.Current.IsEmployeeCardTrackingEnabled)
                    {
                        ExCommsDataContext.Current.UpdateFloorStatus(request.InstallationNo, DateTime.Now, null, null, null, null,
                                                                     null, null, null, null, "", request.FaultDate.ToString(), null);

                        EPIManager.Current.CreateProcess(request.InstallationNo);
                        method.Info("Insert Employee card Session Details");
                        ExCommsDataContext.Current.UpdateEmployeeCardSessions(request.CardNumber, request.FaultDate, request.InstallationNo, msg_type);
                        installationDetails = request.Extra as InstallationDetailsForMSMQ;
                        ExCommsDataContext.Current.SendEmployeeSTMALert(installationDetails.Bar_Pos_No.ToString(), request.FaultDate, msg_type, request.CardNumber);

                        try
                        {
                            Audit.Transport.Audit_History m_AuditInfo = new Audit.Transport.Audit_History();
                            m_AuditInfo.AuditModuleName    = ModuleName.MSMQ;
                            m_AuditInfo.Audit_Date         = DateTime.Now.Date;
                            m_AuditInfo.Audit_User_ID      = 0;
                            m_AuditInfo.Audit_User_Name    = "System";
                            m_AuditInfo.Audit_Screen_Name  = "Employee card";
                            m_AuditInfo.Audit_Desc         = "Employee Card Out";
                            m_AuditInfo.AuditOperationType = OperationType.ADD;
                            m_AuditInfo.Audit_Field        = "EmployeecardNumber";
                            m_AuditInfo.Audit_New_Vl       = request.CardNumber;
                            m_AuditInfo.Audit_Slot         = request.Asset;
                            Log.Info(method.PROC, "Insert Auditing info for Employee card out Event");
                            AuditViewerBusiness.InsertAuditData(m_AuditInfo);
                        }
                        catch (Exception ex)
                        {
                            Log.Exception(ex);
                        }

                        try
                        {
                            if (SDTMessages.Instance.ProcessEmployeeCardOut(request))
                            {
                                EPIManager.Current.CreateInactivityTimeout(request.InstallationNo);
                                EPIManager.Current.CreateIntervalRatingTimer(request.InstallationNo);
                            }
                        }
                        finally { }
                    }
                }
                catch (Exception ex)
                {
                    retVal = false;
                    // TODO: EPIMsgProcessor.SendCommand
                    if (installationDetails != null)
                    {
                        CurrentEPIMsgProcessor.DisplayBallyWelcomeMsg(request.InstallationNo, installationDetails.Bar_Pos_Name, DateTime.Now);
                    }
                    if (cardDetail != null)
                    {
                        cardDetail.Clear();
                    }
                    Log.Exception(ex);
                }
                finally
                {
                    method.Info("Employee Card Out completed for : " + request.CardNumber);
                }
            }
            return(retVal);
        }
Exemple #16
0
        protected override bool ProcessG2HMessageInternal(MonMsg_G2H request)
        {
            bool         retVal   = true;
            const string msg_type = "Card In";
            InstallationDetailsForMSMQ installationDetails = null;

            // add the card detail
            var cardDetail = EPIManager.Current.AddOrUpdateCardInDetail(request.InstallationNo, request.CardNumber);

            using (ILogMethod method = Log.LogMethod("MonitorHandler_EPI_22_37", "ProcessG2HMessageInternal"))
            {
                try
                {
                    method.Info("Started Employee Card In for " + request.CardNumber);
                    EPIManager.Current.CreateProcess(request.InstallationNo);

                    if (HandlerHelper.Current.IsEmployeeCardTrackingEnabled)
                    {
                        method.Info("Insert Employee card Session Details");
                        ExCommsDataContext.Current.UpdateEmployeeCardSessions(request.CardNumber, request.FaultDate, request.InstallationNo, msg_type);
                        installationDetails = request.Extra as InstallationDetailsForMSMQ;
                        ExCommsDataContext.Current.SendEmployeeSTMALert(installationDetails.Bar_Pos_No.ToString(), request.FaultDate, msg_type, request.CardNumber);

                        try
                        {
                            Audit.Transport.Audit_History m_AuditInfo = new Audit.Transport.Audit_History();
                            m_AuditInfo.AuditModuleName    = ModuleName.MSMQ;
                            m_AuditInfo.Audit_Date         = DateTime.Now.Date;
                            m_AuditInfo.Audit_User_ID      = 0;
                            m_AuditInfo.Audit_User_Name    = "System";
                            m_AuditInfo.Audit_Screen_Name  = "Employee card";
                            m_AuditInfo.Audit_Desc         = "Employee Card In";
                            m_AuditInfo.AuditOperationType = OperationType.ADD;
                            m_AuditInfo.Audit_Field        = "EmployeecardNumber";
                            m_AuditInfo.Audit_New_Vl       = request.CardNumber;
                            m_AuditInfo.Audit_Slot         = request.Asset;
                            Log.Info(method.PROC, "Insert Auditing info for Employee card In Event");
                            AuditViewerBusiness.InsertAuditData(m_AuditInfo);
                        }
                        catch (Exception ex)
                        {
                            Log.Exception(ex);
                        }

                        string empflags = ExCommsDataContext.Current.GetEmployeeFlags(request.CardNumber);
                        if (!String.IsNullOrEmpty(empflags))
                        {
                            method.Info("Flags " + empflags);
                            empflags = empflags.Substring(2);
                            List <byte> enumver = Enumerable.Range(0, empflags.Length)
                                                  .Where((x) => x % 2 == 0)
                                                  .Select((x) => Convert.ToByte(empflags.Substring(x, 2), 16))
                                                  .ToList();
                            List <byte> cardno = Enumerable.Range(0, request.CardNumber.PadLeft(10, '0').Length)
                                                 .Where((x) => x % 2 == 0)
                                                 .Select((x) => Convert.ToByte(request.CardNumber.PadLeft(10, '0').Substring(x, 2), 16))
                                                 .ToList();
                            enumver.Insert(0, Convert.ToByte(empflags[0]));
                            enumver.Insert(1, Convert.ToByte(empflags[1]));
                            enumver.InsertRange(0, cardno);

                            // TODO: EPIMsgProcessor.SendCommand
                        }
                    }

                    ExCommsDataContext.Current.UpdateFloorStatus(request.InstallationNo, DateTime.Now, null, null, null, null,
                                                                 null, null, null, null, request.CardNumber, request.FaultDate.ToString(), null);
                    ExCommsDataContext.Current.UpdateGameCappingDetails(request.CardNumber, 1, false);
                    try
                    {
                        if (SDTMessages.Instance.ProcessEmployeeCardIn(request))
                        {
                            EPIManager.Current.CreateInactivityTimeout(request.InstallationNo);
                            EPIManager.Current.CreateIntervalRatingTimer(request.InstallationNo);
                        }
                    }
                    finally { }
                }
                catch (Exception ex)
                {
                    retVal = false;
                    // TODO: EPIMsgProcessor.SendCommand
                    if (installationDetails != null)
                    {
                        CurrentEPIMsgProcessor.DisplayBallyWelcomeMsg(request.InstallationNo, installationDetails.Bar_Pos_Name, DateTime.Now);
                    }
                    if (cardDetail != null)
                    {
                        cardDetail.Clear();
                    }
                    Log.Exception(ex);
                }
                finally
                {
                    method.Info("Employee Card In completed for : " + request.CardNumber);
                }
            }
            return(retVal);
        }