Валидация с использованием yield

This commit is contained in:
Olga Nemt 2024-01-25 16:22:40 +05:00
parent ff208a6aa8
commit d4935b0e7b

View File

@ -339,7 +339,7 @@ public class WellOperationRepository : IWellOperationRepository
var firstOperation = wellOperationDtos
.FirstOrDefault();
if (firstOperation is null)
return Enumerable.Empty<ValidationResult>();
yield break;
var request = new WellOperationRequest()
{
@ -353,7 +353,9 @@ public class WellOperationRepository : IWellOperationRepository
var wellOperationsUnion = entities.Union(wellOperationDtos).OrderBy(o => o.DateStart);
return Validate(wellOperationsUnion);
var results = Validate(wellOperationsUnion);
foreach ( var result in results)
yield return result;
}
public IEnumerable<ValidationResult> Validate(IEnumerable<WellOperationDto> wellOperationDtos)
@ -361,12 +363,10 @@ public class WellOperationRepository : IWellOperationRepository
var firstOperation = wellOperationDtos
.FirstOrDefault();
if (firstOperation is null)
return Enumerable.Empty<ValidationResult>();
yield break;
var validationResults = new List<ValidationResult>();
var wellOperations = wellOperationDtos.ToArray();
for (var i = wellOperations.Count() - 1; i >= 1; i--)
var wellOperations = wellOperationDtos.OrderBy(o => o.DateStart).ToArray();
for (var i = 1; i < wellOperations.Length; i++)
{
var prevOperation = wellOperations[i - 1];
var currentOperation = wellOperations[i];
@ -378,20 +378,18 @@ public class WellOperationRepository : IWellOperationRepository
if (prevOperationDateStart.AddDays(Gap) < currentOperationDateStart)
{
validationResults.Add(new ValidationResult(
yield return new ValidationResult(
$"Разница дат между операциями не должна превышать 90 дней",
new[] { nameof(wellOperations) }));
new[] { nameof(wellOperations) });
}
if (prevOperationDateEnd > currentOperationDateStart)
{
validationResults.Add(new ValidationResult(
yield return new ValidationResult(
$"Предыдущая операция не завершена",
new[] { nameof(wellOperations) }));
new[] { nameof(wellOperations) });
}
}
return validationResults;
}
/// <inheritdoc/>