forked from ddrilling/AsbCloudServer
58 lines
1.7 KiB
C#
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
|
|
}
|