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

namespace AsbCloudApp.Data;

/// <summary>
/// DTO статистики по операциям за скважину
/// </summary>
public class StatWellDto : IId
{
    /// <inheritdoc/>
    [Required]
    public int Id { get; set; }

    /// <summary>
    /// название 
    /// </summary>
    [Required]
    public string Caption { get; set; } = string.Empty;

    /// <summary>
    /// тип скважины
    /// </summary>
    [Required]
    public string WellType { get; set; } = string.Empty;

    /// <summary>
    /// ИД состояния скважины
    /// </summary>
    [Required]
    public int IdState { get; set; }

    /// <summary>
    /// текст состояния скважины
    /// </summary>
    [Required]
    public string State { get; set; } = string.Empty;

    /// <summary>
    /// дата прихода последней телеметрии
    /// </summary>
    [Required]
    public DateTimeOffset LastTelemetryDate { get; set; }

    /// <summary>
    /// Статистика по секциям
    /// </summary>
    [Required]
    public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>();

    /// <summary>
    /// статистика за всю скважину
    /// </summary>
    [Required]
    public PlanFactDto<StatOperationsDto> Total { get; set; } = new();

    /// <summary>
    /// компании участвующие в строительстве скважины
    /// </summary>
    [Required]
    public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();

    /// <summary>
    /// Отставание от ГГД, дни
    /// </summary>
    public double? TvdLagDays { get; set; }
    
    /// <summary>
    /// Кол-во дней бурения по ГГД
    /// </summary>
    public double? TvdDrillingDays { get; set; }
}