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()); }
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) })); } }
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()); }
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); }
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) })); }
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 })); }
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 })); }
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}")); } }
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)); }
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 } }; }
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()); }
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); }