using Microsoft.AspNetCore.Mvc; using SQLiteEF; using static Microsoft.AspNetCore.Http.StatusCodes; namespace API.Controllers; [ApiController] [Route("[controller]")] public class ActionsController(Context databaseContext) : ApiController(typeof(ActionsController)) { [HttpPut("Player/{steamId}")] [ProducesResponseType(Status202Accepted)] [ProducesResponseType(Status500InternalServerError)] public IActionResult AddPlayerToTrack(Tracker tracker, ulong steamId) { Player nPlayer = new (steamId, "", "", ""); try { databaseContext.Players.Add(nPlayer); databaseContext.SaveChanges(); tracker.ForceLoop(); return Accepted(nPlayer); } catch (Exception e) { Log.Error(e); return StatusCode(Status500InternalServerError); } } [HttpPost("Update/Player/{steamId}/All")] [ProducesResponseType(Status200OK)] [ProducesResponseType(Status404NotFound)] public IActionResult UpdatePlayer(Tracker tracker, ulong steamId) { if (databaseContext.Players.Find(steamId) is not { } player) return NotFound(); tracker.UpdatePlayer(databaseContext, player); tracker.UpdateOwnedGamesPlayer(databaseContext, player); tracker.UpdateGameTimesPlayer(databaseContext, player); return Ok(); } [HttpPost("Update/Player/{steamId}/Info")] [ProducesResponseType(Status200OK)] [ProducesResponseType(Status404NotFound)] public IActionResult UpdatePlayerInfo(Tracker tracker, ulong steamId) { if (databaseContext.Players.Find(steamId) is not { } player) return NotFound(); tracker.UpdatePlayer(databaseContext, player); return Ok(); } [HttpPost("Update/Player/{steamId}/OwnedGames")] [ProducesResponseType(Status200OK)] [ProducesResponseType(Status404NotFound)] public IActionResult UpdatePlayerOwnedGames(Tracker tracker, ulong steamId) { if (databaseContext.Players.Find(steamId) is not { } player) return NotFound(); tracker.UpdateOwnedGamesPlayer(databaseContext, player); return Ok(); } [HttpPost("Update/Player/{steamId}/TimeTracked")] [ProducesResponseType(Status200OK)] [ProducesResponseType(Status404NotFound)] public IActionResult UpdatePlayerTimeTracked(Tracker tracker, ulong steamId) { if (databaseContext.Players.Find(steamId) is not { } player) return NotFound(); tracker.UpdateGameTimesPlayer(databaseContext, player); return Ok(); } [HttpPost("Update/All")] [ProducesResponseType(Status202Accepted)] public IActionResult Update(Tracker tracker) { tracker.ForceLoop(); return Accepted(); } }