DD.WellWorkover.Cloud/AsbCloudApp/Requests/SubsystemRequest.cs

73 lines
2.4 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Requests
{
/// <summary>
/// класс с фильтрами для запроса
/// </summary>
public class SubsystemRequest: RequestBase, IValidatableObject
{
private static readonly DateTimeOffset validationMinDate = new DateTimeOffset(2020,01,01,0,0,0, TimeSpan.Zero);
/// <summary>
/// идентификатор скважины
/// </summary>
[Required]
public int IdWell { get; set; }
/// <summary>
/// Идентификатор бурильщика
/// </summary>
public int? IdDriller { get; set; }
/// <summary>
/// Больше или равно дате
/// </summary>
2023-12-18 13:53:51 +05:00
public DateTimeOffset? GeDate { get; set; }
/// <summary>
/// Меньше или равно дате
/// </summary>
2023-12-18 13:53:51 +05:00
public DateTimeOffset? LeDate { get; set; }
/// <summary>
/// Больше или равно глубины забоя
/// </summary>
2023-12-18 13:53:51 +05:00
public double? GeDepth { get; set; }
/// <summary>
/// Меньше или равно глубины забоя
/// </summary>
2023-12-18 13:53:51 +05:00
public double? LeDepth { get; set; }
/// <inheritdoc/>
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (GeDate.HasValue && GeDate < validationMinDate)
yield return new ValidationResult(
$"Должно быть больше {validationMinDate:O})",
new[] { nameof(GeDate) });
2023-12-18 13:53:51 +05:00
if (LeDate.HasValue && GeDate.HasValue)
{
2023-12-18 13:53:51 +05:00
if (LeDate < GeDate)
yield return new ValidationResult(
2023-12-18 13:53:51 +05:00
$"{nameof(LeDate)} должно быть больше {nameof(GeDate)}. ({LeDate:O} < {GeDate:O})",
new[] { nameof(LeDate), nameof(GeDate) });
}
2023-12-18 13:53:51 +05:00
if (LeDepth.HasValue && GeDepth.HasValue)
{
2023-12-18 13:53:51 +05:00
if (LeDepth < GeDepth)
yield return new ValidationResult(
2023-12-18 13:53:51 +05:00
$"{nameof(LeDepth)} должно быть больше {nameof(GeDepth)}. ({LeDepth} < {GeDepth})",
new[] { nameof(LeDepth), nameof(GeDepth) });
}
yield break;
}
}
}