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

namespace AsbCloudApp.Requests;

/// <summary>
/// Параметры запроса на удаление куска телеметрии
/// </summary>
public class TelemetryPartDeleteRequest : IValidatableObject
{
    /// <summary>
    /// ключ телеметрии
    /// </summary>
    public int IdTelemetry { get; set; }

    /// <summary>
    /// greater or equal then Date. Must be set one of GeDate or LeDate
    /// </summary>
    public DateTimeOffset? GeDate { get; set; }

    /// <summary>
    /// less or equal then Date. Must be set one of GeDate or LeDate
    /// </summary>
    public DateTimeOffset? LeDate { get; set; }

    /// <summary>
    /// Валидация входящих данных
    /// </summary>
    /// <param name="validationContext"></param>
    /// <returns></returns>
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (IdTelemetry == 0)
            yield return new ValidationResult($"IdTelemetry must be defined");
        if (!GeDate.HasValue && !LeDate.HasValue)
            yield return new ValidationResult($"GeDate or LeDate must be defined");
    }
}