105 lines
3.4 KiB
C#
105 lines
3.4 KiB
C#
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<Player>(Status202Accepted)]
|
|
[ProducesResponseType<string>(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);
|
|
}
|
|
}
|
|
|
|
[HttpDelete("Player/{steamId}")]
|
|
[ProducesResponseType<Player>(Status202Accepted)]
|
|
[ProducesResponseType<string>(Status500InternalServerError)]
|
|
public IActionResult DeletePlayer(ulong steamId)
|
|
{
|
|
if (databaseContext.Players.Find(steamId) is not { } player)
|
|
return NotFound();
|
|
try
|
|
{
|
|
databaseContext.Players.Remove(player);
|
|
databaseContext.SaveChanges();
|
|
return Accepted();
|
|
}
|
|
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();
|
|
}
|
|
} |