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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }