public async Task <IActionResult> CatchProcesser()
        {
            string userName = HttpContext.Session.GetString("Username");

            if (UserNameErrorCheck(userName))
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            string serializedPokemon = HttpContext.Session.GetString("PokemonData");

            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }

            var pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);
            var getPokemon  = pokemonContext.Pokemons
                              .Where(p => p.Name == pokemonData.Name).FirstOrDefault();

            int luckyNumber = random.Next(0, 2);

            if (luckyNumber == 1)          //50% dat de pokemon is gevangen.
            {
                pokemonData.Caught = true; /*om cheaten te vermijden*/
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);

                var me = pokemonContext.Users
                         .Where(u => u.Username == userName).FirstOrDefault();
                try
                {
                    var alreadyCaught = pokemonContext.PokemonUsers
                                        .Where(pu => pu.UserId == me.Id && pu.PokemonId == getPokemon.Id).FirstOrDefault(); //user heeft resp pokemon al gevangen
                    alreadyCaught.Catches++;
                }
                catch (NullReferenceException)
                {//als de user nog geen pokemon van dit type heeft
                    PokemonUser pokemonUser = new PokemonUser()
                    {
                        PokemonId = getPokemon.Id,
                        UserId    = me.Id,
                        Catches   = 1
                    };
                    pokemonContext.PokemonUsers.Add(pokemonUser);
                }
                await pokemonContext.SaveChangesAsync();

                return(new RedirectToActionResult("Gotcha", "Explore", null));
            }
            else
            {
                pokemonData.CheatingWarning = null;
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);
                return(new RedirectToActionResult("TryAgain", "Explore", null));
                //om een refresh bij CatchProcesser te voorkomen word je weggestuurd
            }
        }
        public async Task <IActionResult> Pokemon(short ndex)
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string  uri      = $"{baseuri}/Pokemons/GetByNdex/{ndex}";
            Pokemon thisPoke = await WebApiHelper.GetApiResult <Pokemon>(uri);

            uri = $"{baseuri}/PokemonUsers/GetById/{thisPoke.Id}/{user.Id}";
            PokemonUser pokemonUser = await WebApiHelper.GetApiResult <PokemonUser>(uri);

            short numberOfCatches = 0;

            if (pokemonUser != null)
            {
                numberOfCatches = pokemonUser.Catches;
            }

            StringBuilder sb     = new StringBuilder();
            var           colors = new string[2];

            colors[0] = thisPoke.PokemonTypes.FirstOrDefault().Type.Colour;
            colors[1] = (thisPoke.PokemonTypes.Count < 2) ? colors[0] : thisPoke.PokemonTypes.ElementAtOrDefault(1).Type.Colour;
            foreach (var t in thisPoke.PokemonTypes)
            {
                sb.Append($"{t.Type.Name} ");
            }

            PokedexPokemonVM vm = new PokedexPokemonVM
            {
                SelectedPokemon = thisPoke,
                Catches         = numberOfCatches,
                Colors          = colors,
                Sb      = sb,
                BaseUri = baseuriClient
            };

            return(View(vm));
        }
Esempio n. 3
0
        public async Task <IActionResult> CatchProcesser()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string serializedPokemon = HttpContext.Session.GetString("PokemonData");

            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }

            var pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);

            string  uri      = $"{baseuri}/Pokemons/GetById/{pokemonData.Id}";
            Pokemon template = await WebApiHelper.GetApiResult <Pokemon>(uri);

            PokemonCatch appearedPokemon = GetPokemonCatchObject(pokemonData.Id, userId, pokemonData.HP, pokemonData.CP,
                                                                 pokemonData.Height, pokemonData.Weight, pokemonData.Gender,
                                                                 pokemonData.IsShiny, pokemonData.IsAlolan, pokemonData.MoveCatches);

            appearedPokemon.Pokemon = template;
            appearedPokemon.AppType = "Webbrowser";

            int luckyNumber = random.Next(0, 2);

            if (luckyNumber == 1)          //50% dat de pokemon is gevangen.
            {
                pokemonData.Caught = true; /*om cheaten te vermijden*/
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);

                uri = $"{baseuri}/PokemonCatches/Add";
                //var AddedPokemonId = await WebApiHelper.PostCallAPI<Guid, PokemonCatch>(uri, appearedPokemon);
                var AddedPokemonId = await WebApiHelperPost.PostAsyncGuid(uri, appearedPokemon);

                uri = $"{baseuri}/PokemonMoveCatches/Add";
                foreach (var el in appearedPokemon.PokemonMoveCatches)
                {
                    el.PokemonId = AddedPokemonId;
                    //await WebApiHelper.PostCallAPI<PokemonMoveCatch, PokemonMoveCatch>(uri, el);
                    await WebApiHelperPost.PostAsync(uri, el);
                }

                uri = $"{baseuri}/PokemonUsers/GetById/{pokemonData.Id}/{userId}";
                PokemonUser alreadyCaught = await WebApiHelper.GetApiResult <PokemonUser>(uri);//user heeft resp pokemon al gevangen

                if (alreadyCaught == null)
                {
                    PokemonUser pokemonUser = new PokemonUser()
                    {
                        PokemonId = pokemonData.Id,
                        UserId    = userId,
                        Catches   = 1
                    };

                    uri = $"{baseuri}/PokemonUsers/Add";
                    //await WebApiHelper.PostCallAPI<PokemonUser, PokemonUser>(uri, pokemonUser);
                    await WebApiHelperPost.PostAsync(uri, pokemonUser);
                }
                else
                {
                    uri = $"{baseuri}/PokemonUsers/UpdateAdd";
                    //await WebApiHelper.PutCallAPI<PokemonUser, PokemonUser>(uri, alreadyCaught);
                    await WebApiHelperPost.PutAsync(uri, alreadyCaught);
                }
                return(new RedirectToActionResult("Gotcha", "Explore", null));
            }
            else
            {
                pokemonData.CheatingWarning = null;
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);
                return(new RedirectToActionResult("TryAgain", "Explore", null));
                //om een refresh bij CatchProcesser te voorkomen word je weggestuurd
            }
        }