DD.WellWorkover.Cloud/AsbCloudDb/Model/LimitingParameter.cs

58 lines
1.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
namespace AsbCloudDb.Model
{
#nullable disable
[Table("t_limiting_parameter"), Comment("Ограничения по параметрам телеметрии")]
public class LimitingParameter : IId
{
[Column("id"), Key]
public int Id { get; set; }
[Column("id_telemetry")]
public int IdTelemetry { get; set; }
[Column("date_start")]
public DateTimeOffset? DateStart { get; set; }
[Column("date_end")]
public DateTimeOffset? DateEnd { get; set; }
[Column("depth_start")]
public float? DepthStart { get; set; }
[Column("depth_end")]
public float? DepthEnd { get; set; }
[Column("id_feed_regulator")]
public short IdFeedRegulator { get; set; }
[JsonIgnore]
[ForeignKey(nameof(IdTelemetry))]
public virtual Telemetry Telemetry { get; set; } = null!;
public float? GetDepth(DateTimeOffset date)
{
var a = (date - DateStart.Value).TotalSeconds;
var b = (DateEnd.Value - DateStart.Value).TotalSeconds;
var c = DepthEnd - DepthStart;
var result = DepthStart + (a / b) * c;
return (float?)result;
}
public DateTimeOffset? GetDate(double depth)
{
var a = depth - DepthStart;
var b = DepthEnd - DepthStart;
var c = (DateEnd.Value - DateStart.Value);
var result = DateStart + (a / b) * c;
return result;
}
}
#nullable disable
}