From 25f35b77f5920df3879e8b6eb7b3144945cbbebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Mon, 8 Apr 2024 07:26:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D1=8F,=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DetectedOperation/DetectedOperationDto.cs | 139 +++++++++--------- .../DetectedOperation/EnabledSubsystems.cs | 102 +++++++++++++ .../IDetectedOperationRepository.cs | 53 ++++--- .../Services/IDetectedOperationService.cs | 20 +++ .../PeriodicWorks/WorkDataSaubStat.cs | 4 +- AsbCloudInfrastructure/DependencyInjection.cs | 5 + .../Repository/DetectedOperationRepository.cs | 129 +++++----------- .../DetectedOperationExportService.cs | 3 +- .../DetectedOperationService.cs | 40 ++++- .../WorkOperationDetection.cs | 2 +- .../SAUB/DetectedOperationController.cs | 17 +-- 11 files changed, 309 insertions(+), 205 deletions(-) create mode 100644 AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs index 33cc19a5..13af0e6e 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Text.Json.Serialization; using AsbCloudApp.Data.WellOperation; namespace AsbCloudApp.Data.DetectedOperation; @@ -9,84 +8,84 @@ namespace AsbCloudApp.Data.DetectedOperation; /// /// Автоматически определенная операция /// -public class DetectedOperationDto: IId +public class DetectedOperationDto : IId { - /// - [Required] - public int Id { get; set; } + /// + [Required] + public int Id { get; set; } - /// - /// Id телеметрии - /// - [Required] - public int IdTelemetry { get; set; } + /// + /// Id телеметрии + /// + [Required] + public int IdTelemetry { get; set; } - /// - /// Id названия/описания операции - /// - [Required] - public int IdCategory { get; set; } + /// + /// Id названия/описания операции + /// + [Required] + public int IdCategory { get; set; } - /// - /// Id пользователя панели на момент начала операции - /// - public int? IdUserAtStart { get; set; } - - /// - /// Пользователь панели оператора - /// - public string? TelemetryUserName { get; set; } + /// + /// Id пользователя панели на момент начала операции + /// + public int? IdUserAtStart { get; set; } + + /// + /// Id пользователя изменившего операцию + /// + public int? IdEditor { get; set; } - /// - /// Дата завершения операции в часовом поясе скважины - /// - [Required] - public DateTimeOffset DateEnd { get; set; } + /// + /// Дата завершения операции в часовом поясе скважины + /// + [Required] + public DateTimeOffset DateEnd { get; set; } - /// - /// Дата начала операции в часовом поясе скважины - /// - [Required] - public DateTimeOffset DateStart { get; set; } + /// + /// Дата начала операции в часовом поясе скважины + /// + [Required] + public DateTimeOffset DateStart { get; set; } - /// - /// глубина на завершения операции, м - /// - [Required] - public double DepthEnd { get; set; } + /// + /// глубина на завершения операции, м + /// + [Required] + public double DepthEnd { get; set; } - /// - /// глубина на начало операции, м - /// - [Required] - public double DepthStart { get; set; } + /// + /// глубина на начало операции, м + /// + [Required] + public double DepthStart { get; set; } - /// - /// Продолжительность операции в минутах - /// - [Required] - public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; + /// + /// Продолжительность операции в минутах + /// + [Required] + public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; + + /// + /// название/описание операции + /// + [Required] + public WellOperationCategoryDto OperationCategory { get; set; } = null!; + + /// + /// Включенные подсистемы + /// + [Required] + public EnabledSubsystems EnabledSubsystems { get; set; } - /// - /// Флаг включенной подсистемы - /// - [Required] - public int EnabledSubsystems { get; set; } + /// + /// Значение ключевой параметра операции + /// + [Required] + public double Value { get; set; } - /// - /// название/описание операции - /// - [JsonIgnore] - public WellOperationCategoryDto? OperationCategory { get; set; } - - /// - /// Ключевой параметр операции - /// - [Required] - public double Value { get; set; } - - /// - /// Доп. инфо по операции - /// - public IDictionary ExtraData { get; set; } = new Dictionary(); + /// + /// Доп. инфо по операции + /// + public IDictionary ExtraData { get; set; } = new Dictionary(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs new file mode 100644 index 00000000..1183c2b8 --- /dev/null +++ b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs @@ -0,0 +1,102 @@ +namespace AsbCloudApp.Data.DetectedOperation; + +/// +/// Включённые подсистемы +/// +public struct EnabledSubsystems +{ + private int value; + + private EnabledSubsystems(int value) + { + this.value = value; + } + + /// + public static implicit operator int(EnabledSubsystems param) => + param.value; + + /// + public static implicit operator EnabledSubsystems(int param) => + new(param); + + /// + /// Бурение ротором + /// + public bool IsAutoRotor + { + get => (value & (int)EnabledSubsystemsFlags.AutoRotor) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoRotor); + } + + /// + /// Бурение слайдом + /// + public bool IsAutoSlide + { + get => (value & (int)EnabledSubsystemsFlags.AutoSlide) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSlide); + } + + /// + /// ПРОРАБОТКА + /// + public bool IsAutoConditionig + { + get => (value & (int)EnabledSubsystemsFlags.AutoConditionig) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoConditionig); + } + + /// + /// СПУСК СПО + /// + public bool IsAutoSinking + { + get => (value & (int)EnabledSubsystemsFlags.AutoSinking) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSinking); + } + + /// + /// ПОДЪЕМ СПО + /// + public bool IsAutoLifting + { + get => (value & (int)EnabledSubsystemsFlags.AutoLifting) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLifting); + } + + /// + /// ПОДЪЕМ С ПРОРАБОТКОЙ + /// + public bool IsAutoLiftingWithConditionig + { + get => (value & (int)EnabledSubsystemsFlags.AutoLiftingWithConditionig) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLiftingWithConditionig); + } + + /// + /// Блокировка + /// + public bool IsAutoBlocknig + { + get => (value & (int)EnabledSubsystemsFlags.AutoBlocknig) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoBlocknig); + } + + /// + /// Осцилляция + /// + public bool IsAutoOscillation + { + get => (value & (int)EnabledSubsystemsFlags.AutoOscillation) > 0; + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoOscillation); + } + + private void UpdateEnabledSubsystems(bool isEnable, EnabledSubsystemsFlags flag) + { + if (isEnable) + value |= (int)flag; + else + value &= ~(int)flag; + } +} \ No newline at end of file diff --git a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs index 3c9d335b..a748984d 100644 --- a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs +++ b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs @@ -4,7 +4,8 @@ using AsbCloudApp.Requests; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; -using AsbCloudApp.Services; +using AsbCloudApp.Data; +using AsbCloudApp.Data.WellOperation; namespace AsbCloudApp.Repositories; @@ -14,14 +15,29 @@ namespace AsbCloudApp.Repositories; public interface IDetectedOperationRepository { /// - /// Добавление записей + /// Добавление нескольких записей + /// + /// + /// + /// количество добавленных + Task InsertRangeAsync(IEnumerable dtos, CancellationToken token); + + /// + /// Обновить несколько записей /// - /// /// /// /// - Task InsertRange(int? idEditor, IEnumerable dtos, CancellationToken token); + Task UpdateRangeAsync(IEnumerable dtos, CancellationToken token); + /// + /// Удаление нескольких записей + /// + /// + /// + /// + Task DeleteRangeAsync(IEnumerable ids, CancellationToken token); + /// /// Получить автоматически определенные операции по телеметрии /// @@ -31,29 +47,12 @@ public interface IDetectedOperationRepository Task> Get(DetectedOperationByTelemetryRequest request, CancellationToken token); /// - /// Редактирование записей - /// - /// - /// - /// - /// - Task UpdateRange(int idEditor, IEnumerable dtos, CancellationToken token); - - /// - /// Удалить операции + /// Получить страницу списка операций /// /// /// /// - Task Delete(DetectedOperationByTelemetryRequest request, CancellationToken token); - - /// - /// Удаление записей - /// - /// - /// - /// - Task DeleteRange(IEnumerable ids, CancellationToken token); + Task> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token); /// /// Получение дат последних определённых операций @@ -61,4 +60,12 @@ public interface IDetectedOperationRepository /// /// Task> GetLastDetectedDatesAsync(CancellationToken token); + + /// + /// Удалить операции + /// + /// + /// + /// + Task DeleteAsync(DetectedOperationByTelemetryRequest request, CancellationToken token); } diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index 208706f7..9ab9189e 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -13,6 +13,26 @@ namespace AsbCloudApp.Services /// public interface IDetectedOperationService { + /// + /// Добавление операций + /// + /// + /// + /// + /// + /// + Task InsertRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); + + /// + /// Редактирование операций + /// + /// + /// + /// + /// + /// + Task UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); + /// /// Список названий операций. /// Если указан idWell, то возвращается список названий операций найденных на указанной скважине. diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs index 074c26ca..35979165 100644 --- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs +++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs @@ -151,8 +151,6 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks private static DataSaubStatDto CalcStat(DetectedOperationDto operation, Span span) { - var hasOscillation = EnabledSubsystemsFlags.AutoOscillation.HasEnabledSubsystems(operation.EnabledSubsystems); - var aggregatedValues = CalcAggregate(span); var dateStart = span[0].DateTime; var dateEnd = span[^1].DateTime; @@ -181,7 +179,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks RotorSpeed = aggregatedValues.RotorSpeed, IdCategory = operation.IdCategory, EnabledSubsystems = operation.EnabledSubsystems, - HasOscillation = hasOscillation, + HasOscillation = operation.EnabledSubsystems.IsAutoOscillation, IdTelemetry = operation.IdTelemetry, Flow = aggregatedValues.Flow }; diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 1139dd3a..6e8b3e89 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -42,6 +42,7 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; using AsbCloudInfrastructure.Services.WellOperations.Factories; @@ -51,6 +52,10 @@ namespace AsbCloudInfrastructure { public static void MapsterSetup() { + TypeAdapterConfig.GlobalSettings.Default.Config + .ForType() + .Ignore(source => source.OperationCategory); + TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .Ignore(source => source.Driller); diff --git a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs index 1dc63f37..3864b4e1 100644 --- a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs +++ b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs @@ -1,5 +1,4 @@ using AsbCloudApp.Data.DetectedOperation; -using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -12,38 +11,51 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore.ChangeTracking; +using AsbCloudApp.Data; namespace AsbCloudInfrastructure.Repository; -public class DetectedOperationRepository : IDetectedOperationRepository +public class DetectedOperationRepository : CrudRepositoryBase, IDetectedOperationRepository { - private readonly IAsbCloudDbContext dbContext; private readonly ITelemetryService telemetryService; - public DetectedOperationRepository(IAsbCloudDbContext dbContext, + public DetectedOperationRepository(IAsbCloudDbContext context, ITelemetryService telemetryService) + : base(context) { - this.dbContext = dbContext; this.telemetryService = telemetryService; } - - public async Task Delete(DetectedOperationByTelemetryRequest request, CancellationToken token) + + public async Task DeleteAsync(DetectedOperationByTelemetryRequest request, CancellationToken token) { var query = BuildQuery(request); dbContext.Set().RemoveRange(query); return await dbContext.SaveChangesAsync(token); } - public async Task DeleteRange(IEnumerable ids, CancellationToken token) + public async Task> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token) { - var query = dbContext.Set() - .Where(e => ids.Contains( e.Id)); + var skip = request.Skip ?? 0; + var take = request.Take ?? 32; - dbContext.Set() - .RemoveRange(query); + var query = BuildQuery(request); - return await dbContext.SaveChangesAsync(token); + var entities = await query.Skip(skip) + .Take(take) + .AsNoTracking() + .ToArrayAsync(token); + + var offset = telemetryService.GetTimezone(request.IdTelemetry).Offset; + + var paginationContainer = new PaginationContainer + { + Skip = skip, + Take = take, + Count = await query.CountAsync(token), + Items = entities.Select(o => Convert(o, offset)) + }; + + return paginationContainer; } public async Task> GetLastDetectedDatesAsync(CancellationToken token) => @@ -60,82 +72,18 @@ public class DetectedOperationRepository : IDetectedOperationRepository { var query = BuildQuery(request) .Include(o => o.OperationCategory); - var entities = await query.ToArrayAsync(token); + var entities = await query.AsNoTracking().ToArrayAsync(token); var offset = telemetryService.GetTimezone(request.IdTelemetry).Offset; var dtos = entities.Select(o => Convert(o, offset)); return dtos; } - - public async Task InsertRange(int? idEditor, IEnumerable dtos, CancellationToken token) - { - if(!dtos.Any()) - return 0; - - var entities = dtos.Select(Convert); - var dbset = dbContext.Set(); - foreach(var entity in entities) - { - if (idEditor.HasValue) - entity.IdEditor = idEditor.Value; - - entity.Creation = DateTimeOffset.UtcNow; - entity.Id = default; - dbset.Add(entity); - } - - return await dbContext.SaveChangesWithExceptionHandling(token); - } - - public async Task UpdateRange(int idEditor, IEnumerable dtos, CancellationToken token) - { - if (!dtos.Any()) - return 0; - - var ids = dtos - .Select(o => o.Id) - .Distinct() - .ToArray(); - - if (ids.Any(id => id == default)) - throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь Id"); - - if (ids.Length != dtos.Count()) - throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь уникальные Id"); - - var dbSet = dbContext.Set(); - - var existingEntitiesCount = await dbSet - .Where(o => ids.Contains(o.Id)) - .CountAsync(token); - - if (ids.Length != existingEntitiesCount) - throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД"); - - var entities = dtos - .Select(dto => - { - var entity = Convert(dto); - entity.IdEditor = idEditor; - return entity; - }) - .ToArray(); - - var entries = new EntityEntry[entities.Length]; - for(var i = 0; i < entities.Length; i++) - entries[i] = dbSet.Update(entities[i]); - - var result = await dbContext.SaveChangesWithExceptionHandling(token); - - foreach (var entry in entries) - entry.State = EntityState.Detached; - - return result; - } - + private IQueryable BuildQuery(DetectedOperationByTelemetryRequest request) { var query = dbContext.Set() + .OrderBy(o => o.DateStart) + .ThenBy(o => o.DepthStart) .Where(o => o.IdTelemetry == request.IdTelemetry); if (request.IdsCategories.Any()) @@ -160,32 +108,21 @@ public class DetectedOperationRepository : IDetectedOperationRepository } if (request.SortFields?.Any() == true) - { query = query.SortBy(request.SortFields); - } - else - query = query - .OrderBy(o => o.DateStart) - .ThenBy(o => o.DepthStart); - - if (request.Skip.HasValue) - query = query.Skip((int)request.Skip); - - if (request.Take.HasValue) - query = query.Take((int)request.Take); return query; } - + private static DetectedOperationDto Convert(DetectedOperation src, TimeSpan offset) { var dto = src.Adapt(); dto.DateStart = src.DateStart.ToOffset(offset); dto.DateEnd = src.DateEnd.ToOffset(offset); + dto.EnabledSubsystems = src.EnabledSubsystems; return dto; } - private static DetectedOperation Convert(DetectedOperationDto src) + protected override DetectedOperation Convert(DetectedOperationDto src) { var entity = src.Adapt(); entity.DateStart = src.DateStart.ToUniversalTime(); diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs index 6ed731f6..00baba7f 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs @@ -162,8 +162,7 @@ public class DetectedOperationExportService private static string GetCategoryName(IEnumerable wellOperationCategories, DetectedOperationDto current) { var idCategory = current.IdCategory; - if (idCategory == WellOperationCategory.IdSlide && - EnabledSubsystemsFlags.AutoOscillation.HasEnabledSubsystems(current.EnabledSubsystems)) + if (idCategory == WellOperationCategory.IdSlide && current.EnabledSubsystems.IsAutoOscillation) return "Бурение в слайде с осцилляцией"; var category = wellOperationCategories.FirstOrDefault(o => o.Id == current.IdCategory); diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 15631c2c..167dc4de 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data.WellOperation; +using AsbCloudApp.Exceptions; using AsbCloudInfrastructure.Services.DetectOperations.Detectors; namespace AsbCloudInfrastructure.Services.DetectOperations; @@ -80,6 +81,43 @@ public class DetectedOperationService : IDetectedOperationService return dtos; } + public async Task InsertRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token) + { + var idTelemetry = await GetIdTelemetryByWell(idWell, token); + + foreach (var dto in dtos) + { + dto.IdEditor = idEditor; + dto.IdTelemetry = idTelemetry; + } + + return await operationRepository.InsertRangeAsync(dtos, token); + } + + public async Task UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token) + { + var idTelemetry = await GetIdTelemetryByWell(idWell, token); + + foreach (var dto in dtos) + { + dto.IdEditor = idEditor; + dto.IdTelemetry = idTelemetry; + } + + return await operationRepository.UpdateRangeAsync(dtos, token); + } + + private async Task GetIdTelemetryByWell(int idWell, CancellationToken token) + { + var well = await wellService.GetOrDefaultAsync(idWell, token) ?? + throw new ArgumentInvalidException(nameof(idWell), "Well doesn`t exist"); + + var idTelemetry = well.IdTelemetry ?? + throw new ArgumentInvalidException(nameof(idWell), "У скважины отсутствует телеметрия"); + + return idTelemetry; + } + public async Task> GetCategoriesAsync(int? idWell, CancellationToken token) { if(idWell is null) @@ -213,7 +251,7 @@ public class DetectedOperationService : IDetectedOperationService return 0; var requestByTelemetry = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request); - var result = await operationRepository.Delete(requestByTelemetry, token); + var result = await operationRepository.DeleteAsync(requestByTelemetry, token); return result; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs index e1e1212e..d001471e 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs @@ -48,7 +48,7 @@ public class WorkOperationDetection: Work var detectedOperations = await detectedOperationService.DetectOperationsAsync(telemetryId, beginDate, token); if (detectedOperations.Any()) - await detectedOperationRepository.InsertRange(null, detectedOperations, token); + await detectedOperationRepository.InsertRangeAsync(detectedOperations, token); } } } diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index b5a94856..11d7451d 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -1,5 +1,4 @@ -using AsbCloudApp.Data; -using AsbCloudApp.Data.DetectedOperation; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; @@ -7,6 +6,7 @@ using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; @@ -52,7 +52,7 @@ namespace AsbCloudWebApi.Controllers.SAUB { var idUser = await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationRepository.InsertRange(idUser, dtos, token); + var result = await detectedOperationService.InsertRangeManualAsync(idUser, idWell, dtos, token); return Ok(result); } @@ -70,7 +70,7 @@ namespace AsbCloudWebApi.Controllers.SAUB { var idUser = await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationRepository.UpdateRange(idUser, dtos, token); + var result = await detectedOperationService.UpdateRangeManualAsync(idUser, idWell, dtos, token); return Ok(result); } @@ -88,7 +88,7 @@ namespace AsbCloudWebApi.Controllers.SAUB { await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationRepository.DeleteRange(ids, token); + var result = await detectedOperationRepository.DeleteRangeAsync(ids, token); return Ok(result); } @@ -117,9 +117,8 @@ namespace AsbCloudWebApi.Controllers.SAUB /// /// [HttpGet] - [ProducesResponseType(typeof(DetectedOperationDto), StatusCodes.Status200OK)] - public async Task GetAsync(int idWell, - [FromQuery] DetectedOperationRequest request, + [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] + public async Task GetAsync(int idWell, [FromQuery] DetectedOperationRequest request, CancellationToken token) { await AssertUserHasAccessToWellAsync(idWell, token); @@ -131,7 +130,7 @@ namespace AsbCloudWebApi.Controllers.SAUB var requestToService = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request); - var result = await detectedOperationRepository.Get(requestToService, token); + var result = await detectedOperationRepository.GetPageAsync(requestToService, token); return Ok(result); }