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");
    }
}