using System;
using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Requests;

/// <summary>
/// Параметры запроса телеметрии
/// </summary>
public class TelemetryDataRequest
{
    /// <summary>
    /// Максимально допустимое кол-во строк данных
    /// </summary>
    public const int MaxTake = 3072;

    /// <summary>
    /// greater or equal then Date
    /// </summary>
    public DateTimeOffset? GeDate { get; set; }

    /// <summary>
    /// less or equal then Date
    /// </summary>
    public DateTimeOffset? LeDate { get; set; }

    /// <summary>
    /// Делитель для прореживания выборки.
    /// <list type="bullet">
    /// <item>1 - без прореживания (default); </item>
    /// <item>2 - каждое 2-е значение; </item>
    /// <item>10 - каждое 10-е значение; </item>
    /// </list>
    /// </summary>
    [Range(0, 300)]
    public int Divider { get; set; } = 1;

    /// <summary>
    /// сортировка/выравнивание данных в запросе по дате
    /// <list type="bullet">
    /// <item>0 - более ранние данные вперед; </item>
    /// <item>1 - более поздние данные вперед; </item>
    /// </list>
    /// </summary>
    [Range(0, 1)]
    public int Order { get; set; } = 0;

    /// <summary>
    /// Пропустить с начала
    /// </summary>
    [Range(0, int.MaxValue)]
    public int Skip { get; set; } = 0;

    /// <summary>
    /// Кол-во возвращаемых, но не больше MaxTake
    /// </summary>
    [Range(1, MaxTake)]
    public int Take { get; set; } = 1024;

}