using PARR.Domain.DTOs.RobotSnapshotDTO;

namespace PARR.Core.Services.RobotSnapshotServices
{
    public interface IRobotSnapshotService
    {
        /// <summary>
        /// Получить статистику
        /// </summary>
        /// <param name="queryDto"></param>
        /// <returns></returns>
        Task<List<RobotSnapshotItemDto>> GetAsync(RobotSnapshotQuery queryDto);

        /// <summary>
        /// Записать статистику
        /// </summary>
        /// <param name="robotSnapshot"></param>
        /// <returns></returns>
        Task<RobotSnapshotItemDto> CreateAsync(CreateRobotSnapshot robotSnapshot);

        /// <summary>
        /// Получить аналитику за период с группировкой по ip серверов. Разбивка по часам. 
        /// Максимальная одновременная работа роботов. Среднее кол-во роботов в час. Максимально возможное кол-во роботов.
        /// </summary>
        /// <param name="queryDto"></param>
        /// <returns></returns>
        Task<List<ServerHourlyAnalyticsDto>> GetHourlyAnalyticsAsync(RobotAnalyticsQuery queryDto);

        /// <summary>
        /// Получить аналитику за период по типу робота. Разбивка по часам.
        /// Среднее кол-во роботов в час.
        /// </summary>
        /// <param name="queryDto"></param>
        /// <returns></returns>
        Task<List<HourlyRobotTypeAnalyticsDto>> GetHourlyAnalyticsByRobotTypeAsync(RobotAnalyticsRobotTypeQuery queryDto);
    }
}
