using Microsoft.AspNetCore.Mvc; using server.Models; using server.Persistence.Repositories; namespace server.Controllers.v1 { [ApiController] [ApiVersion("1.0")] [Route("/api/quotes")] [Produces("application/json")] public class QuotesController : ControllerBase { private readonly IQuoteRepository _quoteRepository; public QuotesController(IQuoteRepository quoteRepository) { _quoteRepository = quoteRepository; } /// /// Gets a collection of quotes. /// /// Filter parameters passed from query string. /// Returns the collection of quotes requested. /// Not a valid request. /// Failed to get quotes. /// Returns a collection of quotes. [MapToApiVersion("1.0")] [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status500InternalServerError)] public async Task>> GetQuotesAsync([FromQuery] QuoteFilter? filter) { try { var quotes = await _quoteRepository.GetQuotesAsync(filter); return Ok(quotes); } catch (Exception e) { Console.WriteLine(e); return Problem(detail: "Failed to get quote", statusCode: 500); } } // TODO: Implement getquotesbyid [MapToApiVersion("1.0")] [HttpGet("{id:int}")] public Task> GetQuoteByIdAsync(int id) { throw new NotImplementedException(); } } }