diff --git a/AsbCloudApp/Repositories/IChangeLogRepository.cs b/AsbCloudApp/Repositories/IChangeLogRepository.cs index 70d0df99..92c747f7 100644 --- a/AsbCloudApp/Repositories/IChangeLogRepository.cs +++ b/AsbCloudApp/Repositories/IChangeLogRepository.cs @@ -11,7 +11,7 @@ namespace AsbCloudApp.Repositories; /// Репозиторий для записей с историей /// public interface IChangeLogRepository - where TDto : AsbCloudApp.Data.IId + where TDto : IId { /// /// Добавление записей @@ -83,7 +83,7 @@ public interface IChangeLogRepository /// Фильтр по дате. Если null - вернет все записи, без привязки к дате /// /// - Task>> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token); + Task>> GetChangeLogForDate(TRequest request, DateOnly? date, CancellationToken token); /// /// Получение текущих сейчас записей по параметрам @@ -92,4 +92,13 @@ public interface IChangeLogRepository /// /// Task> GetCurrent(TRequest request, CancellationToken token); + + /// + /// Получение измененных записей за определенный момент времени + /// + /// фильтр по changeLog + /// фильтр по данным внутри changeLog + /// + /// + Task>> GetChangeLogByMoment(ChangeLogRequest changeLogRequest, TRequest dataRequest, CancellationToken token); } diff --git a/AsbCloudApp/Requests/ChangeLogBaseRequest.cs b/AsbCloudApp/Requests/ChangeLogRequest.cs similarity index 76% rename from AsbCloudApp/Requests/ChangeLogBaseRequest.cs rename to AsbCloudApp/Requests/ChangeLogRequest.cs index 2beef7a5..4af94018 100644 --- a/AsbCloudApp/Requests/ChangeLogBaseRequest.cs +++ b/AsbCloudApp/Requests/ChangeLogRequest.cs @@ -3,9 +3,9 @@ namespace AsbCloudApp.Requests; /// -/// Базовый запрос актуальных данных +/// Запрос изменений /// -public class ChangeLogBaseRequest +public class ChangeLogRequest { /// /// Дата/время на которую записи были актуальны. Если не задано, то возвращаются все данные без учета их актуальности @@ -15,7 +15,7 @@ public class ChangeLogBaseRequest /// /// Конструктор /// - public ChangeLogBaseRequest() + public ChangeLogRequest() { } @@ -24,7 +24,7 @@ public class ChangeLogBaseRequest /// Копирующий конструктор /// /// - public ChangeLogBaseRequest(ChangeLogBaseRequest request) + public ChangeLogRequest(ChangeLogRequest request) { Moment = request.Moment; } diff --git a/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs b/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs index 04dda6e1..62e3934d 100644 --- a/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs +++ b/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs @@ -5,7 +5,7 @@ namespace AsbCloudApp.Requests; /// /// Запрос для получения РТК план /// -public class ProcessMapPlanBaseRequest : ChangeLogBaseRequest +public class ProcessMapPlanBaseRequest : ChangeLogRequest { /// /// Вернуть данные, которые поменялись с указанной даты diff --git a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs index 9d764402..bd10e36b 100644 --- a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs +++ b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs @@ -17,7 +17,7 @@ namespace AsbCloudInfrastructure.Repository; public abstract class ChangeLogRepositoryAbstract : IChangeLogRepository where TDto : AsbCloudApp.Data.IId where TEntity : ChangeLogAbstract - where TRequest : ChangeLogBaseRequest + where TRequest : ChangeLogRequest { protected readonly IAsbCloudDbContext db; @@ -218,7 +218,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh return datesOnly; } - public async Task>> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token) + public async Task>> GetChangeLogForDate(TRequest request, DateOnly? date, CancellationToken token) { var query = BuildQuery(request); TimeSpan offset = GetTimezoneOffset(request); @@ -251,18 +251,18 @@ public abstract class ChangeLogRepositoryAbstract : ICh return dtos; } - public async Task>> Get(TRequest request, DateTimeOffset? moment, CancellationToken token) + public async Task>> GetChangeLogByMoment(ChangeLogRequest changeLogRequest, TRequest dataRequest, CancellationToken token) { - var query = BuildQuery(request); - if (moment.HasValue) + var query = BuildQuery(dataRequest); + if (changeLogRequest.Moment.HasValue) { - var momentUtc = moment.Value.ToUniversalTime(); + var momentUtc = changeLogRequest.Moment.Value.ToUniversalTime(); query = query .Where(e => e.Creation <= momentUtc) .Where(e => e.Obsolete == null || e.Obsolete >= momentUtc); } - TimeSpan offset = GetTimezoneOffset(request); + TimeSpan offset = GetTimezoneOffset(dataRequest); var dtos = await CreateChangeLogDto(query, offset, token); return dtos; @@ -270,8 +270,11 @@ public abstract class ChangeLogRepositoryAbstract : ICh public async Task> GetCurrent(TRequest request, CancellationToken token) { - var moment = new DateTimeOffset(3000, 1, 1, 0, 0, 0, TimeSpan.Zero); - var entities = await Get(request, moment, token); + var changeLogRequest = new ChangeLogRequest() + { + Moment = new DateTimeOffset(3000, 1, 1, 0, 0, 0, TimeSpan.Zero) + }; + var entities = await GetChangeLogByMoment(changeLogRequest, request, token); var result = entities.Select(e => e.Item); return result; } diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs index 8a9b9008..5b51ba62 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs @@ -48,7 +48,7 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService return Enumerable.Empty(); var requestProcessMapPlan = new ProcessMapPlanBaseRequestWithWell(idWell); - var changeLogProcessMaps = await processMapPlanBaseRepository.GetChangeLog(requestProcessMapPlan, null, token); + var changeLogProcessMaps = await processMapPlanBaseRepository.GetChangeLogForDate(requestProcessMapPlan, null, token); if (!changeLogProcessMaps.Any()) return Enumerable.Empty(); diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs index 89b6c965..bac90f07 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs @@ -155,10 +155,10 @@ public abstract class ProcessMapPlanBaseController : ControllerBase /// /// /// - [HttpGet("history")] + [HttpGet("changelogByMoment")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task>>> GetHistory([FromRoute] int idWell, DateTimeOffset? moment, CancellationToken token) + public async Task>>> GetChangeLogByMoment([FromRoute] int idWell, DateTimeOffset? moment, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); @@ -167,7 +167,12 @@ public abstract class ProcessMapPlanBaseController : ControllerBase Moment = moment, }; - var result = await repository.GetChangeLog(serviceRequest, null, token); + var changeLogRequest = new ChangeLogRequest() + { + Moment = moment + }; + + var result = await repository.GetChangeLogByMoment(changeLogRequest, serviceRequest, token); return Ok(result); } @@ -194,7 +199,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase UpdateFrom = updateFrom, }; - var result = await repository.GetChangeLog(serviceRequest, null, token); + var result = await repository.GetChangeLogForDate(serviceRequest, null, token); return Ok(result); } @@ -205,15 +210,15 @@ public abstract class ProcessMapPlanBaseController : ControllerBase /// /// /// - [HttpGet("changeLog")] + [HttpGet("changeLogForDate")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task>>> GetChangeLog([FromRoute] int idWell, [FromQuery] DateOnly? date, CancellationToken token) + public async Task>>> GetChangeLogForDate([FromRoute] int idWell, [FromQuery] DateOnly? date, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell); - var result = await repository.GetChangeLog(serviceRequest, date, token); + var result = await repository.GetChangeLogForDate(serviceRequest, date, token); return Ok(result); }