diff --git a/AsbCloudApp/Requests/WellCompositeRequest.cs b/AsbCloudApp/Requests/ProcessMapRequest.cs similarity index 54% rename from AsbCloudApp/Requests/WellCompositeRequest.cs rename to AsbCloudApp/Requests/ProcessMapRequest.cs index f9f2246a..45b56cf5 100644 --- a/AsbCloudApp/Requests/WellCompositeRequest.cs +++ b/AsbCloudApp/Requests/ProcessMapRequest.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace AsbCloudApp.Requests { @@ -6,17 +7,22 @@ namespace AsbCloudApp.Requests /// /// Параметры для запроса получения РТК /// - public class WellCompositeRequest + public class ProcessMapRequest { /// /// Идентификатор скважины /// - public IEnumerable IdWells { get; set; } = null!; + public int IdWell { get; set; } /// /// Тип секции /// - public IEnumerable? IdWellSectionTypes { get; set; } = null!; + public int? IdWellSectionTypes { get; set; } + + /// + /// Дата обновления + /// + public DateTime? UpdateFrom { get; set; } } #nullable disable } diff --git a/AsbCloudApp/Services/IProcessMapRepository.cs b/AsbCloudApp/Services/IProcessMapRepository.cs index 680045c6..757171fc 100644 --- a/AsbCloudApp/Services/IProcessMapRepository.cs +++ b/AsbCloudApp/Services/IProcessMapRepository.cs @@ -29,7 +29,7 @@ namespace AsbCloudApp.Services /// /// /// - Task?> GetByRequesProcessMaplAsync(WellCompositeRequest request, CancellationToken token); + Task?> GetByRequesProcessMaplAsync(List request, CancellationToken token); } #nullable disable } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs index e631bcbb..c07cc275 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs @@ -31,7 +31,15 @@ namespace AsbCloudInfrastructure.Repository public async Task> GetAllAsync(int idWell, DateTime? updateFrom, CancellationToken token) { - var entities = await BuildQuery(idWell, updateFrom) + var request = new List + { + new ProcessMapRequest { + IdWell = idWell, + UpdateFrom = updateFrom + } + }; + + var entities = await BuildQuery(request) .OrderBy(e => e.DepthStart) .ThenBy(e => e.Id) .ToListAsync(token) @@ -41,16 +49,11 @@ namespace AsbCloudInfrastructure.Repository return dtos; } - public async Task?> GetByRequesProcessMaplAsync(WellCompositeRequest request, CancellationToken token) + public async Task?> GetByRequesProcessMaplAsync(List request, CancellationToken token) { - var query = GetQuery().Where(e => request.IdWells.Contains(e.IdWell)); - if (request.IdWellSectionTypes is not null) - { - query.Where(e => request.IdWellSectionTypes.Contains(e.IdWellSectionType)); - } - - var entities = await query - .ToListAsync(token); + var entities = await BuildQuery(request) + .ToListAsync(token) + .ConfigureAwait(false); var dtos = entities.Select(Convert).ToList(); return dtos; } @@ -71,16 +74,23 @@ namespace AsbCloudInfrastructure.Repository return result; } - - private IQueryable BuildQuery(int idWell, DateTime? updateFrom) + private IQueryable BuildQuery(IEnumerable request) { - var query = GetQuery().Where(e => e.IdWell == idWell); + var query = GetQuery(); - if (updateFrom is not null) + foreach (var item in request) { - var timezone = wellService.GetTimezone(idWell); - var updateFromUtc = updateFrom?.ToUtcDateTimeOffset(timezone.Hours); - query.Where(e => e.LastUpdate >= updateFromUtc); + query.Where(w => w.IdWell == item.IdWell); + + if (item.IdWellSectionTypes is not null) + query.Where(w => w.IdWellSectionType == item.IdWellSectionTypes); + + if (item.UpdateFrom is not null) + { + var timezone = wellService.GetTimezone(item.IdWell); + var updateFromUtc = item.UpdateFrom?.ToUtcDateTimeOffset(timezone.Hours); + query.Where(e => e.LastUpdate >= updateFromUtc); + } } return query; diff --git a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs index 557132b5..d2946247 100644 --- a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs @@ -57,12 +57,14 @@ namespace AsbCloudInfrastructure.Repository var idWells = dtos.Select(c => c.IdWellSrc); var idWellSectionTypes = dtos.Select(c => c.IdWellSectionType); - var processMap = (await processMapRepository.GetByRequesProcessMaplAsync(new WellCompositeRequest - { - IdWells = idWells, - IdWellSectionTypes = idWellSectionTypes - }, - token)); + var request = new List + { + new ProcessMapRequest { + IdWell = idWell + } + }; + + var processMap = (await processMapRepository.GetByRequesProcessMaplAsync(request, token)); var result = processMap?.Select(x => new ProcessMapDto {