using ChessDotNet; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NLog; using TURN.Services.Chess.DBModel; namespace TURN.Services.Chess.Controllers { [Authorize(AuthenticationSchemes = AuthSchemes, Roles = "admin")] [Route("/[controller]")] [ApiController] public class TurnController : ControllerBase { public const string AuthSchemes = JwtBearerDefaults.AuthenticationScheme; private readonly ModelBaseContext _db; private readonly Logger _logger; public TurnController(ModelBaseContext db, Logger logger) { _db = db; _logger = logger; } /// /// Тестовый гет. /// [HttpGet("test/{param}")] public ActionResult Get(string param) { try { ChessGame game = new(); return Ok(param); } catch (Exception ex) { _logger.Error(ex); return StatusCode(500, $"Internal server error: {ex.Message}"); } } /// /// Создать игру. /// [HttpGet("startgame/{blackUser}/{whiteUser}")] public ActionResult StartGame(string blackUser, string whiteUser) { try { ChessGame game = new(); Game obj = new() { BlackUserName = blackUser, WhiteUserName = whiteUser, StartDate = DateTimeOffset.Now.ToUnixTimeSeconds().ToString() }; _ = _db.Add(obj); _ = _db.SaveChanges(); string mes = $"Game {obj.GameId} started."; _logger.Info(mes); return Ok(mes); } catch (Exception ex) { _logger.Error(ex); return StatusCode(500, $"Internal server error: {ex.Message}"); } } } }