using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using TarninaHub.Application.Abstractions; using TarninaHub.Application.Dtos; using TarninaHub.Application.Security; namespace TarninaHub.Controllers; [ApiController] [ApiVersion("1.0")] [Route("api/trends")] [Authorize(Policy = Policies.OperatorOrAdmin)] public class TrendsController : ControllerBase { private readonly ITrendService _trends; public TrendsController(ITrendService trends) { _trends = trends; } [HttpGet] public async Task> Get( [FromQuery] string? challengeId, [FromQuery] DateTimeOffset? from, [FromQuery] DateTimeOffset? to, CancellationToken cancellationToken) { var rangeEnd = to ?? DateTimeOffset.UtcNow; var rangeStart = from ?? rangeEnd.AddDays(-30); var trends = await _trends.GetAsync(challengeId, rangeStart, rangeEnd, cancellationToken); return Ok(trends); } }