diff --git a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs index 8a389e74..2e4e956a 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs @@ -339,7 +339,7 @@ public class WellOperationRepository : IWellOperationRepository var firstOperation = wellOperationDtos .FirstOrDefault(); if (firstOperation is null) - return Enumerable.Empty(); + 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 Validate(IEnumerable wellOperationDtos) @@ -361,12 +363,10 @@ public class WellOperationRepository : IWellOperationRepository var firstOperation = wellOperationDtos .FirstOrDefault(); if (firstOperation is null) - return Enumerable.Empty(); + yield break; - var validationResults = new List(); - - 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; } ///