using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using CodePlay.Core.Services; using CodePlay.Core.Models; namespace CodePlay.WebAPI.Controllers; [ApiController] [Route("api/[controller]")] [Authorize] public class ReportController : ControllerBase { private readonly IReportStorageService _storageService; public ReportController(IReportStorageService storageService) { _storageService = storageService; } [HttpGet] public async Task>> GetAllReports() { var reports = await _storageService.GetAllReportsAsync(); return Ok(reports); } [HttpGet("{reportId}")] public async Task> GetReport(string reportId) { var report = await _storageService.GetReportAsync(reportId); if (report == null) return NotFound(); return Ok(report); } [HttpGet("project/{projectId}")] public async Task>> GetReportsByProject(string projectId) { var reports = await _storageService.GetReportsByProjectAsync(projectId); return Ok(reports); } [HttpDelete("{reportId}")] public async Task DeleteReport(string reportId) { await _storageService.DeleteReportAsync(reportId); return NoContent(); } [HttpGet("stats")] public async Task> GetStatistics() { var stats = await _storageService.GetStatisticsAsync(); return Ok(stats); } }