public async Task <JsonResult> GetLiveCasinoGrid(string tenantUid, string category = "", string subCategory = "", string provider = "", string keyword = "", string languageCode = "")
        {
            var origin = TenantHelper.GetCurrentTenantUrl(contentService, tenantUid);
            //var key = ApiKeyCache.GetByTenantUid(tenantUid);
            //var authorization = await new Authorization().GetAuthorizationAsync(key);
            var authorization = ApiAuthorizationCache.GetOrSetAuthorization(tenantUid);

            var response = await _gameService.GetGameDataAnonymousArrayAsync(tenantUid, origin, category, subCategory, provider, keyword, languageCode, authorization.AccessToken);

            CultureInfo newLanguage = new CultureInfo(languageCode);

            System.Threading.Thread.CurrentThread.CurrentCulture   = newLanguage;
            System.Threading.Thread.CurrentThread.CurrentUICulture = newLanguage;

            foreach (var gameDetail in response)
            {
                var name = "[GameGridProvider]" + gameDetail.GameProvider;
                gameDetail.GameProvider = Umbraco.GetDictionaryValue(name, gameDetail.GameProvider);
            }

            if (category == "lottery" || category == "casino")
            {
                foreach (var game in response)
                {
                    if (game.GameImages[0].Url == null || game.GameImages[0].Url == "")
                    {
                        game.GameImages[0].Url = "https://via.placeholder.com/150x150";
                    }
                }
            }

            if (category == "Live Casino")
            {
                foreach (var game in response)
                {
                    if (game.GameImages[1].Url == null || game.GameImages[1].Url == "")
                    {
                        game.GameImages[1].Url = "https://via.placeholder.com/432x243";
                    }

                    CasinoProLobbyData config = new CasinoProLobbyData();
                    foreach (var configuration in game.Configurations)
                    {
                        config = JsonConvert.DeserializeObject <CasinoProLobbyData>(configuration.Value.ToString());
                    }

                    if (!String.IsNullOrEmpty(config.gameType))
                    {
                        game.GameType = config.gameType;
                    }
                    if (config.dealer != null)
                    {
                        if (!String.IsNullOrEmpty(config.dealer.name))
                        {
                            game.DealerName = config.dealer.name;
                        }
                    }


                    if (!String.IsNullOrEmpty(config.symbol))
                    {
                        game.Currency_symbol = config.symbol;
                    }
                    if (config.minAmount < 1)
                    {
                        game.Limit_min = Math.Round(config.minAmount, 2, MidpointRounding.AwayFromZero).ToString(CultureInfo.InvariantCulture);
                    }
                    if (config.minAmount >= 1)
                    {
                        game.Limit_min = Math.Round(config.minAmount, 0, MidpointRounding.AwayFromZero).ToString(CultureInfo.InvariantCulture);
                    }
                    if (config.maxAmount >= 1)
                    {
                        game.Limit_max += Math.Round(config.maxAmount, 0, MidpointRounding.AwayFromZero).ToString("N0", CultureInfo.InvariantCulture);
                    }

                    if (config.road != null && config.gameType == "Baccarat")
                    {
                        var BaccaratResults = JsonConvert.DeserializeObject <List <CasinoProLobbyRoad> >(config.road.ToString());
                        var road            = new List <BaccaratResult>();
                        foreach (var res in BaccaratResults)
                        {
                            string color = "";
                            string X     = "";
                            string Y     = "";
                            if (res.color == "Red")
                            {
                                color = "#C52123";
                            }
                            if (res.color == "Blue")
                            {
                                color = "#185CC6";
                            }
                            foreach (var loc in res.location)
                            {
                                if (loc.Key == "column")
                                {
                                    X = loc.Value;
                                }
                                if (loc.Key == "row")
                                {
                                    Y = loc.Value;
                                }
                            }
                            road.Add(new BaccaratResult()
                            {
                                X     = X,
                                Y     = Y,
                                Color = color
                            });
                        }
                        game.Roads = road;
                    }

                    if (config.results != null && config.gameType == "Roulette")
                    {
                        var aa      = JsonConvert.DeserializeObject <List <string> >(config.results.ToString());
                        var results = new List <GameResult>();
                        int counter = 0;
                        foreach (var a in aa)
                        {
                            var   color  = "";
                            int   number = 0; Int32.TryParse(a, out number);
                            int[] reds   = { 1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36 };
                            int[] blacks = { 2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35 };
                            if (reds.Contains <int>(number))
                            {
                                color = "red";
                            }
                            if (blacks.Contains <int>(number))
                            {
                                color = "black";
                            }
                            if (number == 0)
                            {
                                color = "green";
                            }
                            if (counter == 0)
                            {
                                color += "-first";
                            }
                            counter++;

                            results.Add(new GameResult()
                            {
                                Value = a,
                                Color = color
                            });
                        }

                        game.Results = results;
                    }

                    if (config.gameType == "Blackjack" && config.seatsTaken != null)
                    {
                        var   seats      = new List <Seat>();
                        int[] seatsTaken = config.seatsTaken;
                        for (int i = 1; i <= config.seats; i++)
                        {
                            var Availability = "free";
                            if (seatsTaken.Contains <int>(i - 1))
                            {
                                Availability = "taken";
                            }
                            seats.Add(new Seat()
                            {
                                Number = i.ToString(),
                                Status = Availability
                            });
                        }
                        game.Seats = seats;
                    }
                }
            }

            return(Json(response, JsonRequestBehavior.DenyGet));
        }
Esempio n. 2
0
        public T Model <T>(T model, IPublishedContent CurrentPage, HttpRequestBase Request) where T : BasePageViewModel
        {
            #region Defaults
            model.ShowProvidersFilter   = true;
            model.ShowSeachFilter       = true;
            model.ShowSubCategoryFilter = true;
            #endregion

            model.Title = model.Content.Name;
            var gameUrl     = string.Empty;
            var category    = string.Empty;
            var subCategory = string.Empty;
            var gameType    = GamePageType.none;
            var origin      = TenantHelper.GetCurrentTenantUrl(contentService, model.TenantUid);
            //var key = ApiKeyCache.GetByTenantUid(model.TenantUid);
            //var authorization = GetAuthorization(key);
            var authorization = ApiAuthorizationCache.GetOrSetAuthorization(model.TenantUid);
            var returnUrl     = model.IsHomePage ? model.RootUrl : $"https://{model.Subdomain}.{model.Domain}";
            //var returnUrl = model.IsHomePage ? model.RootUrl : $"https://{model.Subdomain}.{model.Domain}{model.Content.Url}";

#if DEBUG
            returnUrl = model.IsHomePage ? $"https://{model.Subdomain}.{model.Domain}" : $"https://{model.Subdomain}.{model.Domain}{model.Content.Url}";
#endif
            model.ReturnUrl = returnUrl;

            var gameDetails = AssertGameType(model);
            category = gameDetails.Item1;
            gameType = gameDetails.Item3;

            var games = apiService.GetGameDataAnonymousArray(model.TenantUid, origin, category: category, languageCode: model.CurrentLanguage.TwoLetterISOLanguageName, authorization: authorization.AccessToken);

            if (games != null)
            {
                foreach (var game in games)
                {
                    if (model.Content.Descendant() != null)
                    {
                        game.GamePageUrl = model.Content.Descendants().SingleOrDefault(x => x.HasProperty("gameType") && x.Value <string>("gameType") == game.Category)?.Url;
                    }
                }
            }
            // make sure games is not null

            games = games ?? new List <GameDetails>();

            if (Request.QueryString["gameId"] != null)
            {
                var gameId       = int.Parse(Request.QueryString["gameId"].ToString());
                var gameFromList = games.SingleOrDefault(x => x.GameId == gameId);
                var game         = (GameByIdResponseContent)apiService.GetGameById(model.TenantUid, origin, gameId: gameId, gameIdentifier: gameFromList.GameIdentifier, authorization: authorization.AccessToken);
                if (game != null)
                {
                    model.HasDemoMode = game.DemoEnabled;
                    model.DemoUrl     = game.DemoUrl;
                    model.UrlType     = game.UrlTypeEnum;
                    model.GameMode    = GameMode.Choose;
                    model.GameId      = int.Parse(Request.QueryString["gameId"]);
                    model.GameImage   = game.GameImages.SingleOrDefault(x => x.ImageTypeEnum == ImageType.Full).Url;

                    switch (model.UrlType)
                    {
                    case UrlType.iFrame:
                        model.GameUrl         = $"{game.Url}?id={model.TenantUid}&langId={model.CurrentLanguage.TwoLetterISOLanguageName}&returnUrl={HttpUtility.UrlDecode(CurrentPage.UrlAbsolute())}";
                        model.OpenPopup       = false;
                        model.GameMode        = GameMode.Play;
                        model.GameLoadSuccess = true;
                        break;

                    case UrlType.Session:

                        if (game.DemoEnabled)
                        {
                            model.OpenPopup = true;
                            model.GameMode  = GameMode.Choose;
                        }
                        else
                        {
                            model.GameMode = GameMode.Play;
                        }

                        if (Request.QueryString["mode"] != null)
                        {
                            var mode = Request.QueryString["mode"];
                            if (mode == "demo")
                            {
                                model.GameMode = GameMode.Demo;
                            }
                            if (mode == "play")
                            {
                                model.GameMode = GameMode.Play;
                            }
                            model.OpenPopup = false;
                        }

                        if (game.Category == "Casino" && game.UrlType == 2 && Request.QueryString["mode"] != null)
                        {
                            game.Url     += "&ReturnUrl=" + HttpUtility.UrlDecode(CurrentPage.UrlAbsolute());
                            game.DemoUrl += "&ReturnUrl=" + HttpUtility.UrlDecode(CurrentPage.UrlAbsolute());
                        }
                        if (game.Category == "Casino" && Request.QueryString["mode"] == null)
                        {
                            game.Url     += "?ReturnUrl=" + HttpUtility.UrlDecode(CurrentPage.UrlAbsolute());
                            game.DemoUrl += "?ReturnUrl=" + HttpUtility.UrlDecode(CurrentPage.UrlAbsolute());
                        }

                        string sessionUrl  = game.Url;
                        var    gameModeUrl = game.Url;
                        gameModeUrl = model.GameMode == GameMode.Demo ? game.DemoUrl : game.Url;

                        switch (gameType)
                        {
                        case GamePageType.InPlay:
                            break;

                        case GamePageType.Casino:
                            var gameLobbyUrl = (GameLobbyResponseContent)apiService.GetGameLobby(gameModeUrl, model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            //var gameLobbyUrl = (GameLobbyResponseContent)apiService.GetGameLobby($"{gameModeUrl}&returnUrl={ContentHelper.EncodeUrl(returnUrl)}", model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            if (gameLobbyUrl.Success)
                            {
                                //if (game.GameIdentifier == "Zeppelin")
                                //{
                                //HttpContext.Current.Response.Redirect(gameLobbyUrl.Link);
                                //}
                                sessionUrl            = gameLobbyUrl.Link;
                                model.GameLoadSuccess = true;
                            }

                            break;

                        case GamePageType.LiveCasino:
                            var liveCasinoLobbyUrl = (GameLobbyResponseContent)apiService.GetGameLobby(gameModeUrl, model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            if (liveCasinoLobbyUrl.Success)
                            {
                                sessionUrl            = liveCasinoLobbyUrl.Link;
                                model.GameLoadSuccess = true;
                            }

                            break;

                        case GamePageType.Poker:
                            var pokerLobbyUrl = (PokerLobbyResponseContent)apiService.GetPokerLobby(model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            if (pokerLobbyUrl.Success)
                            {
                                sessionUrl            = pokerLobbyUrl.RedirectUrl;
                                model.ReturnUrl       = returnUrl;
                                model.GameLoadSuccess = true;
                            }
                            break;

                        case GamePageType.Lottery:
                            var lotteryLobbyUrl = (GameLobbyResponseContent)apiService.GetGameLobby(gameModeUrl, model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            if (lotteryLobbyUrl.Success)
                            {
                                sessionUrl            = lotteryLobbyUrl.Link;
                                model.GameLoadSuccess = true;
                            }

                            break;

                        case GamePageType.Vegas:
                            break;

                        case GamePageType.Sport:
                            break;

                        case GamePageType.Board:
                            var boardLobbyUrl = (GameLobbyResponseContent)apiService.GetGameLobby(gameModeUrl, model.TenantUid, origin, LoginSession.Token ?? authorization.AccessToken, model.CurrentLanguage.TwoLetterISOLanguageName, returnUrl);
                            if (boardLobbyUrl.Success)
                            {
                                sessionUrl            = boardLobbyUrl.Link;
                                model.GameLoadSuccess = true;
                            }

                            break;

                        default:
                            break;
                        }
                        model.GameUrl = sessionUrl;
                        break;

                    default:
                        model.GameUrl = string.Empty;
                        break;
                    }
                }
            }

            if (CurrentPage.HasProperty("gameSlider"))
            {
                model.Slider = CurrentPage.HasValue("gameSlider") ? CurrentPage.Value <IEnumerable <IPublishedElement> >("gameSlider")
                               .Select(x => new SliderItem
                {
                    Image       = x.HasValue("sliderItemImage") ? x.GetProperty("sliderItemImage").Value <IPublishedContent>().Url : string.Empty,
                    ButtonLabel = x.HasValue("sliderItemButtonLabel") ? x.GetProperty("sliderItemButtonLabel").GetValue().ToString() : string.Empty,
                    Title       = x.HasValue("sliderItemTitle") ? x.GetProperty("sliderItemTitle").GetValue().ToString() : string.Empty,
                    Subtitle    = x.HasValue("sliderItemSubtitle") ? x.GetProperty("sliderItemSubtitle").GetValue().ToString() : string.Empty,
                    Url         = x.HasValue("sliderItemUrl") ? x.GetProperty("sliderItemUrl").GetValue().ToString() : string.Empty,
                })?.ToList() : new List <SliderItem>();
            }

            if (CurrentPage.HasProperty("bannerSlider"))
            {
                model.Slider = CurrentPage.HasValue("bannerSlider") ? CurrentPage.Value <IEnumerable <IPublishedElement> >("bannerSlider")
                               .Select(x => new SliderItem
                {
                    Image       = x.Value("sliderItemImage") != null ? x.GetProperty("sliderItemImage").Value <IPublishedContent>().Url : string.Empty,
                    ButtonLabel = x.HasValue("sliderItemButtonLabel") ? x.GetProperty("sliderItemButtonLabel").GetValue().ToString() : string.Empty,
                    Title       = x.HasValue("sliderItemTitle") ? x.GetProperty("sliderItemTitle").GetValue().ToString() : string.Empty,
                    Subtitle    = x.HasValue("sliderItemSubtitle") ? x.GetProperty("sliderItemSubtitle").GetValue().ToString() : string.Empty,
                    Url         = x.HasValue("sliderItemUrl") ? x.GetProperty("sliderItemUrl").GetValue().ToString() : string.Empty,
                })?.ToList() : new List <SliderItem>();
            }

            var menuItems = CurrentPage.Children.Where(x => x.GetProperty("pageCustomSvg") != null && x.GetProperty("pageCustomSvg").HasValue())
                            .Select(z => new MenuItem
            {
                Label   = z.Name,
                SvgIcon = "/img/svg/" + z.GetProperty("pageCustomSvg").GetValue().ToString() + ".svg",
                Url     = z.Url
            });

            var orderedMenuIcons = new List <MenuItem>();
            int order            = 0;
            foreach (var item in model.TopMenu)
            {
                var orderedMenuItem = menuItems.SingleOrDefault(x => x.Url.Equals(item.Url));
                if (orderedMenuItem != null)
                {
                    orderedMenuItem.Order = order;
                    orderedMenuIcons.Add(orderedMenuItem);
                    order++;
                }
            }
            model.MenuItems = orderedMenuIcons?.OrderBy(x => x.Order).ToList();

            model.Games    = games;
            model.Category = category;

            var home = TenantHelper.GetCurrentTenantHome(contentService, model.TenantUid);

            model.PlayButtonText = home.GetValue <string>("playButtonText", model.CurrentLanguage.TwoLetterISOLanguageName) ?? string.Empty;
            model.DemoButtonText = home.GetValue <string>("demoButtonText", model.CurrentLanguage.TwoLetterISOLanguageName) ?? string.Empty;
            model.GameMessage    = home.GetValue <string>("gameMessage", model.CurrentLanguage.TwoLetterISOLanguageName) ?? string.Empty;
            model.GameAgreeText  = home.GetValue <string>("gameAgreeText", model.CurrentLanguage.TwoLetterISOLanguageName) ?? string.Empty;
            model.PageImages     = home.GetValue <IEnumerable <IPublishedElement> >("demoPageImages", model.CurrentLanguage.TwoLetterISOLanguageName) ?? Enumerable.Empty <IPublishedElement>();

            return(model);
        }