using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using QuotifyBE.Data; using Microsoft.AspNetCore.Cors; namespace QuotifyBE.Controllers; [ApiController] [EnableCors] [Route("api/v1/stats")] [Produces("application/json")] public class StatisticsController : ControllerBase { private readonly ApplicationDbContext _db; public StatisticsController( ApplicationDbContext db) { _db = db; } // GET /api/v1/stats /// /// Return server statistics /// /// /// Provides, info on last commit # and date, branch name, /// sitewide stats (number of draws) and available endpoints /// (machine-friendly json). ///
/// Has CORS set. ///
/// Dummy json // /// Returned on request with valid credentials // /// Returned on request with invalid JWT [HttpGet] [EnableCors] [ProducesResponseType(200)] // [ProducesResponseType(401)] public IActionResult GetStats() { return Ok(new { version = new { lastCommit = ThisAssembly.Git.Commit, lastUpdatedAt = ThisAssembly.Git.CommitDate, currentBranch = ThisAssembly.Git.Branch }, endpointDiscovery = "/swagger/v1/swagger.json", sitewideStats = new { numberOfDraws = _db.Statistics.First(s => s.Label == "number_of_draws").IValue } }); } }