ticket-system/source/ticketAPI/api/Controllers/SeasonController.cs
2024-12-19 15:58:37 -05:00

96 lines
2.1 KiB
C#

using api.Interfaces;
using Microsoft.AspNetCore.Mvc;
using models.Core;
using models.Request;
namespace api.Controllers;
/// <summary>
/// Endpoints for Season Management
/// </summary>
/// <param name="seasonManager">Event Manager Service</param>
[ApiController]
[Route("api/[controller]")]
public class SeasonController(ISeasonManager seasonManager) : ControllerBase
{
/// <summary>
/// Adds a season to the database
/// </summary>
/// <param name="request">Season to add</param>
/// <returns></returns>
[HttpPost]
public IActionResult Post([FromBody] AddSeason request)
{
//TODO: Protect Endpoint
try
{
seasonManager.AddSeason(request);
return Ok();
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
/// <summary>
/// Gets all seasons
/// </summary>
/// <returns>List of Seasons</returns>
[HttpGet]
public ActionResult<List<Season>> Get()
{
//TODO: Protect Endpoint
try
{
return Ok(seasonManager.GetSeasons());
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
/// <summary>
/// Updates a season
/// </summary>
/// <param name="request">Updated season information</param>
/// <returns></returns>
[HttpPatch]
public IActionResult Patch(PatchSeason request)
{
//TODO: Protect Endpoint
try
{
seasonManager.PatchSeason(request);
return Ok();
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
/// <summary>
/// Deletes a season
/// </summary>
/// <param name="seasonId">SeasonId to delete</param>
/// <returns></returns>
[HttpDelete]
public IActionResult Delete(Guid seasonId)
{
//TODO: Protect Endpoint
try
{
seasonManager.DeleteSeason(seasonId);
return Ok();
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
}