using PARR.Domain.DTOs.User;

namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
    /// <summary>
    /// Аналитика по снапшотам роботов с группировкой по IP робота
    /// </summary>
    public record ServerHourlyAnalyticsDto
    {
        public UserBaseDto Robot { get; init; } = null!;

        /// <summary>
        /// Почасовая статистика для гарфиков
        /// </summary>
        public List<RobotHourlyPointDto> Snapshots { get; set; } = new();
    }

    /// <summary>
    /// Почасовая статистика по снапшотам роботов
    /// </summary>
    public record RobotHourlyPointDto
    {
        public DateTimeOffset Hour { get; set; }

        public int MaxAllowedRobots { get; set; }

        /// <summary>
        /// Максимальное кол-во роботов работающих одновременно по шаблонам
        /// </summary>
        public int MaxTemplateRobots { get; set; }

        /// <summary>
        /// Сколько роботов в среднем, работало в течении часа
        /// </summary>
        public double AvgTemplateRobots { get; set; }

        /// <summary>
        /// Максимальное кол-во роботов работающих одновременно по расписаниям
        /// </summary>
        public int MaxScheduleRobots { get; set; }

        /// <summary>
        /// Сколько роботов в среднем, работало в течении часа
        /// </summary>
        public double AvgScheduleRobots { get; set; }
    }
}
