using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Requests;

/// <summary>
/// Параметры для создания отчёта и получения прогнозируемого количества страниц будущего отчета
/// </summary>
public class ReportParametersRequest: IValidatableObject
{
    /// <summary>
    /// Шаг интервала
    /// </summary>
    [Range(1, 86400)]
    public int StepSeconds { get; set; }
   
   /// <summary>
   /// формат отчета (0-PDF, 1-LAS)
   /// </summary>
   [Range(0, 1)]
   public int Format { get; set; }

   /// <summary>
   /// Дата начала интервала
   /// </summary>
   public DateTimeOffset Begin { get; set; } = default;

    /// <summary>
    /// Дата окончания интервала
    /// </summary>
    public DateTimeOffset End { get; set; } = default;

   /// <inheritdoc/>
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
      if (End < Begin)
         yield return new("End mast be less then begin");

        if (Begin < new DateTimeOffset(2000, 1, 1, 0, 0, 0, TimeSpan.Zero))
            yield return new("Begin mast be > 2000-1-1");
    }
}