public RTOnlineTicketDetail GetRedeemTicketAmountCage(RTOnlineTicketDetail TicketDetailEntity)
        {
            try
            {
                string LocalTicketorSiteCode;
                string sURL;
                ValidateSiteCode(TicketDetailEntity.TicketString, out LocalTicketorSiteCode, out sURL);

                if (sURL.IsNullOrEmpty() || sURL == "INVALID") //Invalid Site Code or No rights to access other Site
                {
                    TicketDetailEntity.TicketStatus = "Site Code Mismatch";
                    TicketDetailEntity.TicketStatusCode = -99;
                    TicketDetailEntity.ValidTicket = false;
                    return TicketDetailEntity;
                }
                else if (sURL.StartsWith("http")) // WebService Call in case of Different Site Code 
                {
                    EndpointAddress objEndpoint = new EndpointAddress(sURL);
                    TicketingServiceClient objClient = new TicketingServiceClient(objEndpoint, LocalTicketorSiteCode);
                    //EndpointAddress objEndpoint = new EndpointAddress("http://10.2.108.29/TicketingWCFService/TicketingService.svc"); //sURL
                    //TicketingServiceClient objClient = new TicketingServiceClient(objEndpoint, "1001"); //LocalTicketorSiteCode);

                    return objClient.GetRedeemTicketAmount(TicketDetailEntity);

                }
                //Local Site Code(default)
                return redeemTicketDB.GetRedeemTicketAmount(TicketDetailEntity);
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
                TicketDetail.TicketStatusCode = -234;//Exception Case
                return TicketDetail;
            }
        }
        public RTOnlineTicketDetail GetMultiRedeemTicketAmount(RTOnlineTicketDetail TicketDetailEntity)
        {
            try
            {
                string LocalTicketorSiteCode;
                string sURL;
                int Installation_No = 0;
                int ValidationLength = 0;
                bool isTISPrintedTicket = true; ;
                bool hasException = false;
                int PlayerCardValidation = 0;
                string PlayerCardID = string.Empty;
                int TicketType = -1;
                int CurrentTickStatus = 0;
                if (!isTISPrintedTicket)
                {
                    LinqDataAccessDataContext linqDBExchange = new LinqDataAccessDataContext(CommonDataAccess.ExchangeConnectionString);
                    IEnumerable<InstallationFromTicket> InstallationTicket = linqDBExchange.GetInstallationNumber(TicketDetailEntity.TicketString);
                    foreach (var item in InstallationTicket)
                    {
                        Installation_No = item.installation_no.Value;
                    }
                    DataTable InstallationDetails = (new CommonDataAccess()).GetInstallationDetails(0, Installation_No, false, false);
                    if (InstallationDetails.Rows.Count > 0)
                    {
                        try
                        {
                            int.TryParse(InstallationDetails.Rows[0]["Validation_length"].ToString(), out ValidationLength);
                            if (ValidationLength == 0) ValidationLength = CONST_DEFAULT_TICKET_LENGTH;
                        }
                        catch { ValidationLength = CONST_DEFAULT_TICKET_LENGTH; }
                    }
                    if (ValidationLength == CONST_DEFAULT_TICKET_LENGTH)
                    {
                        ValidateSiteCode(TicketDetailEntity.TicketString, out LocalTicketorSiteCode, out sURL);
                        if (sURL.IsNullOrEmpty() || sURL == "INVALID") //Invalid Site Code or No rights to access other Site
                        {
                            TicketDetailEntity.TicketStatus = "MessageID312";
                            TicketDetailEntity.TicketStatusCode = -99;
                            TicketDetailEntity.ValidTicket = false;
                            return TicketDetailEntity;
                        }
                        else if (sURL.StartsWith("http")) // WebService Call in case of Different Site Code 
                        {
                            EndpointAddress objEndpoint = new EndpointAddress(sURL);
                            TicketingServiceClient objClient = new TicketingServiceClient(objEndpoint, LocalTicketorSiteCode);
                            //EndpointAddress objEndpoint = new EndpointAddress("http://10.2.108.29/TicketingWCFService/TicketingService.svc"); //sURL
                            //TicketingServiceClient objClient = new TicketingServiceClient(objEndpoint, "1001"); //LocalTicketorSiteCode);

                            return objClient.GetRedeemTicketAmount(TicketDetailEntity);

                        }
                    }
                }
                else
                {
                    // if the tis printed ticket available in local db
                    bool isTISTicketAvailable = VoucherHelper.IsTISPrintedTicket(TicketDetailEntity.TicketString);
                    if (isTISTicketAvailable)
                    {
                        // Success case - ok proceed with redeeming
                    }
                    else
                    {
                        // wait worst case 10 secs to get the response from TIS
                        int count = 10;
                        string message = "Waiting for receiving data from TIS...";
                        WPFExtensions.ShowAsyncDialog(null, message, null, 1, count,
                            (o) =>
                            {
                                IAsyncProgress2 o2 = o as IAsyncProgress2;

                                // failure case - hit the tis communication interface and get the ticket
                                try
                                {
                                    o2.UpdateStatusProgress(5, message);
                                    var resp = VoucherHelper.SendTISRedeemTicketQuery(TicketDetailEntity.TicketString, TicketDetailEntity.AuthorizedUser_No);
                                    o2.UpdateStatusProgress(10, message);
                                    if (resp != null &&
                                        !resp.ErrorMessage.IsNullOrEmpty())
                                    {

                                        var resp2 = VoucherHelper.GetInquiryResponse(TicketDetailEntity.TicketString); 
                                        // TIS Command Service not found or any service error
                                        TicketDetail.TicketStatusCode = -990;
                                        TicketDetail.TicketErrorMessage = resp.ErrorMessage;
                                        TicketDetail.RedeemedAmount = resp2.Amount;                                       
                                        hasException = true;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    ExceptionManager.Publish(ex);
                                    TicketDetail.TicketStatusCode = -234;//Exception Case
                                    hasException = true;
                                }
                            });
                    }


                    TicketType = VoucherHelper.TicketType(TicketDetailEntity.TicketString);

                    CurrentTickStatus = VoucherHelper.CurrentTicketStatus(TicketDetailEntity.TicketString);
                    if (VoucherHelper.IsCardRequired(TicketDetailEntity.TicketString))
                    {
                        PlayerCardValidation = 2;



                    }

                    else if (VoucherHelper.IsSpecificCardRequired(TicketDetailEntity.TicketString))
                    {
                        PlayerCardValidation = 1;

                        PlayerCardID = VoucherHelper.PlayerCardNumber(TicketDetailEntity.TicketString);

                    }

                }

                if (!hasException)
                {
                    //Local Site Code(default)
                    TicketDetail = redeemTicketDB.GetRedeemTicketAmount(TicketDetailEntity);
                    TicketDetail.TicketType = TicketType;
                    TicketDetail.CurrentTicketStatus = CurrentTickStatus;

                    if (CurrentTickStatus == 1)
                    {
                        if (TicketType == 0)
                        {
                            if (PlayerCardValidation != 0)
                            {
                                TicketDetail.TicketStatusCode = 250;
                                TicketDetail.CardRequired = PlayerCardValidation;
                                if (PlayerCardValidation == 1)
                                    TicketDetail.PlayerCardNumber = PlayerCardID;

                            }
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
                TicketDetail.TicketStatusCode = -234;//Exception Case
            }

            return TicketDetail;
        }