using System;
using System.Threading.Tasks;
using RestSharp;

namespace HorseRacingPredictor.Football.API
{
    internal class League : HorseRacingPredictor.Football.Manager.API
    {
        private const string Endpoint = "leagues";
        
        /// <summary>
        /// Ottiene informazioni sui campionati
        /// </summary>
        public new RestResponse GetLeagues()
        {
            try
            {
                return ExecuteRequest(Endpoint, ApiTypes.Leagues);
            }
            catch (Exception ex)
            {
                throw new Exception($"Errore durante il recupero delle leghe: {ex.Message}", ex);
            }
        }
        
        /// <summary>
        /// Versione asincrona di GetLeagues
        /// </summary>
        public new async Task<RestResponse> GetLeaguesAsync()
        {
            try
            {
                return await ExecuteRequestAsync(Endpoint);
            }
            catch (Exception ex)
            {
                throw new Exception($"Errore durante il recupero asincrono delle leghe: {ex.Message}", ex);
            }
        }
        
        /// <summary>
        /// Ottiene informazioni su una specifica stagione di una lega
        /// </summary>
        public new RestResponse GetLeagueBySeason(int leagueId, int season)
        {
            try
            {
                return ExecuteRequest($"{Endpoint}?id={leagueId}&season={season}", ApiTypes.Leagues);
            }
            catch (Exception ex)
            {
                throw new Exception($"Errore durante il recupero della lega {leagueId} per la stagione {season}: {ex.Message}", ex);
            }
        }
    }
}
