예제 #1
0
        public async Task <IActionResult> PridruziSeIgri(Boja boja, string accessCode)
        {
            string   email    = User.FindFirstValue("email");
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

            if (korisnik == null)
            {
                return(BadRequest());
            }
            Igra joinGame = await GameProvider.NadjiIgru(db, accessCode);

            if (joinGame == null)
            {
                return(NotFound());
            }
            if (joinGame.status != statusIgre.cekanjeIgraca)
            {
                return(BadRequest());
            }

            if (joinGame.slobodnaBoja(boja))
            {
                joinGame.dodajIgraca(boja, korisnik);
                if (joinGame.sviPrisutni())
                {
                    joinGame.status = statusIgre.uToku;
                }
                await GameProvider.AzurirajIgru(db, joinGame);

                return(Ok(new { token = JWTGenerator.GenerateGameToken(korisnik, joinGame, boja), username = korisnik.username, slika = korisnik.slika, igraciImena = joinGame.vratiIgrace(), igraciSlike = await GameProvider.slikeIgraca(db, joinGame) }));
            }
            else
            {
                return new ObjectResult(joinGame.zauzeteBoje())
                       {
                           StatusCode = 403
                       }
            };
        }
예제 #2
0
        public async Task <IActionResult> RejoinGame(string id)
        {
            string   email    = User.FindFirstValue("email");
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

            Igra game = await GameProvider.NadjiIgru(db, id);

            if (game.status != statusIgre.cekanjeIgracaPause && (game.crveniIgracId != korisnik.ID && game.zeleniIgracId != korisnik.ID && game.zutiIgracId != korisnik.ID && game.plaviIgracId != korisnik.ID))
            {
                return(Forbid());
            }
            Boja bojaKorisnika = Boja.crveni;

            foreach (Boja b in Enum.GetValues(typeof(Boja)))
            {
                if ((int)game.GetType().GetProperty(b.ToString() + "IgracId").GetValue(game) == korisnik.ID)
                {
                    bojaKorisnika = b;
                }
            }
            if (korisnik.ID == game.kreatorIgre.ID)
            {
                return(Ok(new { naPotezu = game.naPotezu.ToString(), boja = bojaKorisnika.ToString(), accessCode = game.accessCode, figure = game.figure, token = JWTGenerator.GenerateGameToken(korisnik, game, bojaKorisnika), username = korisnik.username, slika = korisnik.slika, igraciImena = game.vratiIgrace(), igraciSlike = await GameProvider.slikeIgraca(db, game) }));
            }
            else
            {
                return(Ok(new { naPotezu = game.naPotezu.ToString(), boja = bojaKorisnika.ToString(), figure = game.figure, token = JWTGenerator.GenerateGameToken(korisnik, game, bojaKorisnika), username = korisnik.username, slika = korisnik.slika, igraciImena = game.vratiIgrace(), igraciSlike = await GameProvider.slikeIgraca(db, game) }));
            }
        }