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
{