using AsbCloudApp.Data.SAUB;
using System;

namespace AsbCloudApp.Data
{
    /// <summary>
    /// Инфо о скважине для отображения на карте последними данными телеметрии
    /// </summary>
    public class WellMapInfoWithTelemetryStat : WellMapInfoDto
    {
        /// <summary>
        /// Последние полученные данные от АПД
        /// </summary>
        public TelemetryDataSaubDto? LastDataSaub { get; set; }

        /// <summary>
        /// Последние полученные данные от Осцилляции
        /// </summary>
        public TelemetryDataSpinDto? LastDataSpin { get; set; }

        /// <summary>
        /// Дата полседнего получения данных от ННБ
        /// </summary>
        public DateTime? LastDataDdsDate { get; set; }

        /// <summary>
        /// Дата полседнего получения данных от ГТИ
        /// </summary>
        public DateTime? LastDataGtrDate { get; set; }

        /// <summary>
        /// Дата полседнего получения данных от СКПБ
        /// </summary>
        public DateTime? LastDataDpcsDate { get; set; }

        /// <summary>
        /// Дата полседнего получения данных от станции контроля параметров цементирования (СКЦ)
        /// </summary>
        public DateTime? LastDataCpmsDate { get; set; }
    }

    /// <summary>
    /// Инфо о скважине для отображения на карте
    /// </summary>
    public class WellMapInfoDto: MapPointBaseDto
    {
        /// <summary>
        /// 0 - неизвестно,
        /// 1 - в работе,
        /// 2 - завершена
        /// </summary>
        public int IdState { get; set; }

        /// <summary>
        /// Коэф-т использования автоподачи долота (суммарный ротор + слайд)
        /// </summary>
        public double SaubUsage { get; set; }

        /// <summary>
        /// Коэф-т использования осциллятора
        /// </summary>
        public double SpinUsage { get; set; }

        /// <summary>
        /// Коэф-т использования демпфера
        /// </summary>
        public double TorqueKUsage { get; set; }

        /// <summary>
        /// <para>Дата начала первой фактической операции</para>
        /// <para>Используется как дата начала бурения</para>
        /// </summary>
        public DateTime? FirstFactOperationDateStart { get; set; }

        /// <summary>
        /// <para>Дата окончания последней прогнозируемой операции</para>
        /// <para>Если скважина завершена, то дата окончания последней фактической операции</para>
        /// <para>Используется как прогноз окончания бурения</para>
        /// </summary>
        public DateTime? LastPredictOperationDateEnd { get; set; }

        /// <summary>
        /// Рейсовая скорость проходки, последнего рейса
        /// </summary>
        public PlanFactDto<double?> RaceSpeed { get; set; } = null!;

        /// <summary>
        /// Механическая скорость проходки, последней операции бурения
        /// </summary>
        public PlanFactDto<double?> ROP { get; set; } = null!;

        /// <summary>
        /// Плановая и текущая глубина
        /// </summary>
        public PlanFactDto<double?> WellDepth { get; set; } = null!;

        /// <summary>
        /// Отставание от ГГД, дни
        /// </summary>
        public double TvdLagDays { get; set; }

    }
}