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

namespace AsbCloudApp.Data;

/// <summary>
/// Описание данных графика работ
/// </summary>
public class ScheduleDto : IId, IWellRelated, IValidatableObject
{
    /// <inheritdoc/>
    [Required]
    public int Id { get; set; }

    /// <inheritdoc/>
    [Required]
    public int IdWell { get; set; }

    /// <summary>
    /// Идентификатор бурильщика
    /// </summary>
    [Required]
    public int IdDriller { get; set; }

    /// <summary>
    /// Начало смены
    /// </summary>
    [Required]
    public TimeDto ShiftStart { get; set; } = null!;

    /// <summary>
    /// Конец смены
    /// </summary>
    [Required]
    public TimeDto ShiftEnd { get; set; } = null!;

    /// <summary>
    /// Начало бурения
    /// </summary>
    [Required]
    public DateTimeOffset DrillStart { get; set; }

    /// <summary>
    /// Конец бурения
    /// </summary>
    [Required]
    public DateTimeOffset DrillEnd { get; set; }

    /// <summary>
    /// Бурильщик
    /// </summary>
    public DrillerDto? Driller { get; set; }
    
    /// <inheritdoc/>
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if(DrillStart >= DrillEnd)
            yield return new ValidationResult($"DrillStart > DrillEnd");
    }
}