Ejemplo n.º 1
0
        public async Task <IActionResult> ContinueGame()
        {
            string   igraId     = User.FindFirstValue("sub");
            string   email      = User.FindFirstValue("email");
            Boja     bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Korisnik korisnik   = await KorisnikProvider.GetKorisnik(db, email);

            Igra game = await GameProvider.NadjiIgruId(db, igraId);

            if (game.kreatorIgre.ID != korisnik.ID)
            {
                return(BadRequest());
            }

            if (game.status != statusIgre.cekanjeIgracaPause)
            {
                return(Forbid());
            }
            game.status = statusIgre.uToku;
            await GameProvider.AzurirajIgru(db, game);

            await GameHubHelper.nastaviIgru(_gameHub, game.groupNameGUID);

            return(Ok());
        }
Ejemplo n.º 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) }));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> PauzirajIgru()
        {
            string   igraId     = User.FindFirstValue("sub");
            string   email      = User.FindFirstValue("email");
            Boja     bojaIgraca = Enum.Parse <Boja>(User.FindFirstValue("Boja"));
            Korisnik korisnik   = await KorisnikProvider.GetKorisnik(db, email);

            Igra game = await GameProvider.NadjiIgruId(db, igraId);

            if (game.kreatorIgre.ID != korisnik.ID)
            {
                return(BadRequest());
            }
            Potez poslednji = await GameProvider.getPoslednjiPotezIgre(db, game);

            if (game.status != statusIgre.uToku || !game.privateGame || (game.status == statusIgre.uToku && game.naPotezu == poslednji.potezOdigrao))
            {
                return(Forbid());
            }
            game.status = statusIgre.pauzirana;
            await GameProvider.AzurirajIgru(db, game);

            await GameHubHelper.pauzirajIgruNotifyAsync(_gameHub, game.groupNameGUID);

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task JoinGameGroup()
        {
            Korisnik kor = await KorisnikProvider.GetKorisnik(db, Context.User.FindFirstValue("email"));

            await Groups.AddToGroupAsync(Context.ConnectionId, Context.User.FindFirstValue("sub"));

            await Clients.GroupExcept(Context.User.FindFirstValue("sub"), Context.ConnectionId).SendAsync("userJoined", kor.username, Context.User.FindFirstValue("Boja"), kor.slika);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> IgreKorisnika()
        {
            //samo pauzirane igre
            string email = User.FindFirstValue("email");

            if (email == null)
            {
                return(BadRequest());
            }
            return(Ok(new { igre = await KorisnikProvider.GetKorisnikPauziraneIgre(db, email) }));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> PodaciKorisnika()
        {
            string email = User.FindFirstValue("email");

            if (email == null)
            {
                return(BadRequest());
            }
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

            return(Ok(new { korisnik = korisnik }));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Login(JsonElement korisnik)
        {
            Korisnik podaciKorisnika = JsonConvert.DeserializeObject <Korisnik>((korisnik).ToString());
            Korisnik loginKorisnik   = await KorisnikProvider.GetKorisnik(db, podaciKorisnika.email, podaciKorisnika.password);

            if (loginKorisnik == null)
            {
                return(NotFound());
            }

            var tokenStr = JWTGenerator.GenerateLoginToken(loginKorisnik);

            return(Ok(new { tokenStr = tokenStr }));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> AzurirajSliku(IFormFile slika)
        {
            string email = User.FindFirstValue("email");

            if (email == null)
            {
                return(BadRequest());
            }
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

            try
            {
                var file       = Request.Form.Files[0];
                var folderName = Path.Combine("Resources", "Images");
                var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);
                if (file.Length > 0)
                {
                    string fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                    fileName = fileName.Substring(fileName.LastIndexOf('.'));
                    fileName = Guid.NewGuid() + fileName;
                    string fullPath = Path.Combine(pathToSave, fileName);
                    using (var stream = new FileStream(fullPath, FileMode.Create))
                    {
                        file.CopyTo(stream);
                    }
                    if (korisnik.slika.CompareTo(new Korisnik().slika) != 0)
                    {
                        System.IO.FileInfo oldPic = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), korisnik.slika));
                        oldPic.Delete();
                    }


                    korisnik.slika = fileName;
                    await KorisnikProvider.SnimiKorisnika(db, korisnik);

                    return(Ok());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error: {ex}"));
            }
        }
Ejemplo n.º 9
0
        public async Task <IActionResult> ResumeRequest(string id)
        {
            string   email    = User.FindFirstValue("email");
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

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

            if (game.kreatorIgre.ID != korisnik.ID)
            {
                return(BadRequest());
            }
            if (game.status != statusIgre.pauzirana)
            {
                return(Forbid());
            }
            game.status = statusIgre.cekanjeIgracaPause;
            await GameProvider.AzurirajIgru(db, game);

            return(await this.RejoinGame(id));
        }
Ejemplo n.º 10
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
                       }
            };
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> NovaIgra(Boja boja, bool privateGame)
        {
            string   email    = User.FindFirstValue("email");
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, email);

            if (korisnik == null)
            {
                return(BadRequest());
            }
            Igra novaIgra = new Igra(korisnik);

            novaIgra.privateGame = privateGame;
            await GameProvider.dodajIgru(db, novaIgra);

            IActionResult res = (await this.PridruziSeIgri(boja, novaIgra.accessCode));

            if (res is OkObjectResult)
            {
                OkObjectResult result = (OkObjectResult)res;
                dynamic        val    = result.Value;
                return(Ok(new { token = val.token, accessCode = novaIgra.accessCode, username = korisnik.username, slika = korisnik.slika }));
            }
            return(BadRequest());
        }
Ejemplo n.º 12
0
        public async Task SendMessage(string message)
        {
            Korisnik korisnik = await KorisnikProvider.GetKorisnik(db, Context.User.FindFirstValue("email"));

            await Clients.GroupExcept(Context.User.FindFirstValue("sub"), Context.ConnectionId).SendAsync("userSentMessage", message, korisnik.username);
        }