using AsbCloudDb.Model;
using System;
using System.Collections.Generic;

namespace AsbCloudInfrastructure.Services.WellOperationService
{
#nullable enable
    class Race
    {
        /// <summary>
        /// Дата начала рейса
        /// </summary>
        public DateTime StartDate { get; set; }

        /// <summary>
        /// Глубина начала рейса, м
        /// </summary>
        public double StartWellDepth { get; set; }

        /// <summary>
        /// Дата окончания рейса
        /// </summary>
        public DateTime EndDate { get; set; }

        /// <summary>
        /// Глубина окончания рейса, м
        /// </summary>
        public double EndWellDepth { get; set; }

        /// <summary>
        /// Время рейса, часы
        /// </summary>
        public double DrillingTime { get; set; }

        /// <summary>
        /// Время НПВ, часы
        /// </summary>
        public double NonProductiveHours { get; set; }

        /// <summary>
        /// Ремонт, часы
        /// </summary>
        public double RepairHours { get; set; }

        /// <summary>
        /// проходка за рейс, м
        /// </summary>
        public double DeltaDepth => EndWellDepth - StartWellDepth;

        /// <summary>
        /// Полное время рейса, часы
        /// </summary>
        public double DeltaHours => (EndDate - StartDate).TotalHours;

        /// <summary>
        /// Скорость за рейс, м/час
        /// </summary>
        public double Speed => DeltaDepth / (DeltaHours - NonProductiveHours - RepairHours + double.Epsilon);
        
        /// <summary>
        /// Список операций за рейс
        /// </summary>
        public List<WellOperation>? Operations { get; internal set; }
    }
#nullable disable
}