using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using EllieBot.VotesApi.Services;

namespace EllieBot.VotesApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class TopGgController : ControllerBase
    {
        private readonly ILogger<TopGgController> _logger;
        private readonly IVotesCache _cache;

        public TopGgController(ILogger<TopGgController> logger, IVotesCache cache)
        {
            _logger = logger;
            _cache = cache;
        }

        [HttpGet("new")]
        [Authorize(Policy = Policies.TopggAuth)]
        public async Task<IEnumerable<Vote>> New()
        {
            var votes = await _cache.GetNewTopGgVotesAsync();
            if (votes.Count > 0)
                _logger.LogInformation("Sending {NewTopggVotes} new topgg votes", votes.Count);

            return votes;
        }
    }
}