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.
90 lines
3.3 KiB
90 lines
3.3 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 ExperiencesController : ControllerBase
|
|
{
|
|
private readonly ILogger<ExperiencesController> _logger;
|
|
private readonly IExperiencesService _dataServices;
|
|
|
|
public ExperiencesController(ILogger<ExperiencesController> logger, IExperiencesService dataServices)
|
|
{
|
|
_logger = logger;
|
|
_dataServices = dataServices;
|
|
}
|
|
|
|
[HttpGet]
|
|
[ProducesResponseType(typeof(IEnumerable<ResponseExperienceDto>), StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[RequireHttps]
|
|
public async Task<IActionResult> GetExperiences([FromQuery] string? title, [FromQuery] int page = 1, [FromQuery] int size = 5,
|
|
[FromQuery] ExperienceOrderCriteria criteria = ExperienceOrderCriteria.StartDate, [FromQuery] bool ascending = true)
|
|
{
|
|
|
|
var result = await _dataServices.GetExperiences(title, page, size, criteria, ascending);
|
|
if (result.Count == 0) return NoContent();
|
|
return Ok(result.Experiences);
|
|
}
|
|
|
|
[HttpGet("{id}")]
|
|
[ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[RequireHttps]
|
|
public IActionResult GetExperienceById(string id)
|
|
{
|
|
var experience = _dataServices.GetExperienceById(id);
|
|
return experience.Result == null ? NotFound() : Ok(experience.Result);
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status201Created)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[RequireHttps]
|
|
public IActionResult CreateExperience([FromBody] RequestExperienceDto experienceDto)
|
|
{
|
|
var experience = _dataServices.CreateExperience(experienceDto);
|
|
return experience.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateExperience), experience.Result);
|
|
|
|
}
|
|
|
|
|
|
[HttpPut("{id}")]
|
|
[ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[RequireHttps]
|
|
public IActionResult UpdateExperience(string id, [FromBody] RequestExperienceDto experience)
|
|
{
|
|
var experienceSelected = _dataServices.UpdateExperience(id, experience);
|
|
return experienceSelected.Result == null ? BadRequest() : Ok(experienceSelected.Result);
|
|
|
|
}
|
|
|
|
[HttpDelete("{id}")]
|
|
[ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[RequireHttps]
|
|
public IActionResult DeleteExperience(string id)
|
|
{
|
|
return _dataServices.DeleteExperience(id).Result ? Ok() : NotFound();
|
|
}
|
|
|
|
[HttpGet("Alica/{id}")]
|
|
[ProducesResponseType(typeof(IEnumerable<ResponseExperienceDto>), 200)]
|
|
[RequireHttps]
|
|
public IActionResult GetExperiencesByAlumniId(string id)
|
|
{
|
|
//var experience = _dataServices.GetData();
|
|
//var experienceSelected = experience.Result.Where(x => x.AlicaId == id).ToList();
|
|
//return experienceSelected.Count() == 0 ? NoContent() : Ok(experienceSelected);
|
|
return Ok();
|
|
}
|
|
} |