using System; using AsbCloudDb.Model; namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors; public class DetectorSlipsTime : DetectorAbstract { protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) => CalcDeltaMinutes(telemetry, begin, end); protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) { var point0 = telemetry[position]; var delta = point0.WellDepth - point0.BitDepth; if (delta > 2.5d) return false; if (point0.Pressure > 15) return false; if (point0.BlockPosition > 8) return false; if (point0.HookWeight > 20) return false; return true; } protected override int GetIdOperation(DetectableTelemetry[] telemetry, int begin, int end) => WellOperationCategory.IdSlipsTime; protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => Math.Abs(operationDetectorResult.Operation.DepthStart - operationDetectorResult.Operation.DepthEnd) > 0.01; }