You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OptifitWebService/Server/Controller/v1/AlumnisController.cs

56 lines
2.0 KiB

using Microsoft.AspNetCore.Mvc;
using Server.Dto.Request;
using Server.Dto.Response;
using Asp.Versioning;
using Server.IServices;
using Shared.Criteria;
namespace Server.Controller.v1;
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class AlumnisController : ControllerBase
{
private readonly ILogger<AlumnisController> _logger;
private IAlumnisService _dataServices;
public AlumnisController(ILogger<AlumnisController> logger, IAlumnisService dataServices)
{
_logger = logger;
_dataServices = dataServices;
}
[HttpGet]
[ProducesResponseType(typeof(IEnumerable<ResponseAlumniDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[RequireHttps]
public IActionResult GetAlumni([FromQuery] string? lastname, [FromQuery] int page = 1, [FromQuery] int size = 5,
[FromQuery] AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None, [FromQuery] bool ascending = true)
{
var alumni = _dataServices.GetAlumnis(lastname, page, size, orderCriteria, ascending);
return alumni.Result.Count == 0 ? NoContent() : Ok(alumni.Result.Alumnis);
}
[HttpPost()]
[ProducesResponseType(typeof(ResponseAlumniDto), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[RequireHttps]
public IActionResult CreateAlumni([FromBody] RequestAlumniDto alumniDto)
{
var alumni = _dataServices.CreateAlumni(alumniDto);
return alumni.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateAlumni), alumni);
}
[HttpGet("{id}")]
[ProducesResponseType(typeof(ResponseAlumniDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[RequireHttps]
public IActionResult GetAlumniById(string id)
{
var alumni = _dataServices.GetAlumniById(id);
return alumni.Result == null ? NotFound() : Ok(alumni);
}
}