From 70ee22bccf85b517e073a8ce2b081bd56b188bae Mon Sep 17 00:00:00 2001 From: KharchenkoVladimir Date: Wed, 13 Oct 2021 12:27:40 +0500 Subject: [PATCH] CS2-96: Added DrillParams methods to get composite well drill params --- AsbCloudApp/Services/IDrillParamsService.cs | 12 ++++ .../Services/DrillParamsService.cs | 56 ++++++++++++++++++- .../Controllers/DrillParamsController.cs | 51 ++++++++++++++++- 3 files changed, 115 insertions(+), 4 deletions(-) diff --git a/AsbCloudApp/Services/IDrillParamsService.cs b/AsbCloudApp/Services/IDrillParamsService.cs index 30b28500..13468c25 100644 --- a/AsbCloudApp/Services/IDrillParamsService.cs +++ b/AsbCloudApp/Services/IDrillParamsService.cs @@ -12,5 +12,17 @@ namespace AsbCloudApp.Services Task> GetAllAsync(int idWell, CancellationToken token = default); + + Task> GetCompositeAllAsync(int idWell, + CancellationToken token = default); + + Task InsertAsync(int idWell, DrillParamsDto dto, + CancellationToken token = default); + + Task InsertRangeAsync(int idWell, IEnumerable dtos, + CancellationToken token = default); + + new Task UpdateAsync(int idWell, DrillParamsDto dto, + CancellationToken token = default); } } diff --git a/AsbCloudInfrastructure/Services/DrillParamsService.cs b/AsbCloudInfrastructure/Services/DrillParamsService.cs index d04078f9..c2df1214 100644 --- a/AsbCloudInfrastructure/Services/DrillParamsService.cs +++ b/AsbCloudInfrastructure/Services/DrillParamsService.cs @@ -39,6 +39,7 @@ namespace AsbCloudInfrastructure.Services }) .AsNoTracking() .DefaultIfEmpty() + .OrderBy(t => t.Min) .FirstOrDefaultAsync(token) .ConfigureAwait(false); @@ -51,6 +52,7 @@ namespace AsbCloudInfrastructure.Services }) .AsNoTracking() .DefaultIfEmpty() + .OrderBy(t => t.Min) .FirstOrDefaultAsync(token) .ConfigureAwait(false); @@ -63,6 +65,7 @@ namespace AsbCloudInfrastructure.Services }) .AsNoTracking() .DefaultIfEmpty() + .OrderBy(t => t.Min) .FirstOrDefaultAsync(token) .ConfigureAwait(false); @@ -75,6 +78,7 @@ namespace AsbCloudInfrastructure.Services }) .AsNoTracking() .DefaultIfEmpty() + .OrderBy(t => t.Min) .FirstOrDefaultAsync(token) .ConfigureAwait(false); @@ -87,6 +91,7 @@ namespace AsbCloudInfrastructure.Services }) .AsNoTracking() .DefaultIfEmpty() + .OrderBy(t => t.Min) .FirstOrDefaultAsync(token) .ConfigureAwait(false); @@ -124,9 +129,58 @@ namespace AsbCloudInfrastructure.Services .ToListAsync(token) .ConfigureAwait(false); - var dto = entities.Select(entity => entity.Adapt()); + var dto = entities.Select(entity => + entity.Adapt()); return dto; } + + public async Task> GetCompositeAllAsync(int idWell, + CancellationToken token = default) + { + var compositeWellDrillParams = + await (from p in db.DrillParams + from c in db.WellComposites + where c.IdWell == idWell && + p.IdWell == c.IdWellSrc && + p.IdWellSectionType == c.IdWellSectionType + select p) + .ToListAsync(token) + .ConfigureAwait(false); + + var compositeDrillParamsDtos = compositeWellDrillParams.Select(c => c.Adapt()); + + return compositeDrillParamsDtos; + } + + public async Task InsertAsync(int idWell, DrillParamsDto dto, + CancellationToken token = default) + { + dto.IdWell = idWell; + + var result = await base.InsertAsync(dto, token); + + return result; + } + + public async Task InsertRangeAsync(int idWell, IEnumerable dtos, + CancellationToken token = default) + { + foreach (var dto in dtos) + dto.IdWell = idWell; + + var result = await base.InsertRangeAsync(dtos, token); + + return result; + } + + public override async Task UpdateAsync(int idWell, DrillParamsDto dto, + CancellationToken token = default) + { + dto.IdWell = idWell; + + var result = await base.UpdateAsync(dto.Id, dto, token); + return result; + } private IQueryable> GetTelemetryGroupQuery(int idTelemetry, double startDepth, double endDepth) diff --git a/AsbCloudWebApi/Controllers/DrillParamsController.cs b/AsbCloudWebApi/Controllers/DrillParamsController.cs index 24541050..6b0d9009 100644 --- a/AsbCloudWebApi/Controllers/DrillParamsController.cs +++ b/AsbCloudWebApi/Controllers/DrillParamsController.cs @@ -32,7 +32,7 @@ namespace AsbCloudWebApi.Controllers /// Конечная глубина /// Токен отмены задачи /// Значения по умолчанию для режимов бурения - [HttpGet("/autoParams")] + [HttpGet("autoParams")] [ProducesResponseType(typeof(DrillParamsDto), (int) System.Net.HttpStatusCode.OK)] public async Task GetDefaultAsync(int idWell, double startDepth, double endDepth, CancellationToken token = default) @@ -80,7 +80,7 @@ namespace AsbCloudWebApi.Controllers /// [HttpPost] [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] - public async Task SaveAsync(int idWell, + public async Task InsertAsync(int idWell, DrillParamsDto drillParamsDto, CancellationToken token = default) { var idCompany = User.GetCompanyId(); @@ -89,11 +89,35 @@ namespace AsbCloudWebApi.Controllers idWell, token).ConfigureAwait(false)) return Forbid(); - var result = await drillParamsService.InsertAsync(drillParamsDto, token); + var result = await drillParamsService.InsertAsync(idWell, drillParamsDto, token); return Ok(result); } + /// + /// Добавляет массив объектов режимов бурений + /// + /// id скважины + /// Массив объектов параметров режима бурений для секции + /// Токен отмены задачи + /// + [HttpPost("range")] + [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] + public async Task InsertRangeAsync(int idWell, + IEnumerable drillParams, CancellationToken token = default) + { + var idCompany = User.GetCompanyId(); + + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) + return Forbid(); + + var result = await drillParamsService.InsertRangeAsync(idWell, drillParams, + token); + + return Ok(result); + } + /// /// Изменяет значения выбранного режима бурения /// @@ -141,5 +165,26 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } + + /// + /// Возвращает значения для режимов бурения на композитной скважине + /// + /// id скважины + /// Токен отмены задачи + /// Список параметров для режимов бурения на композитной скважине + [HttpGet("composite")] + [ProducesResponseType(typeof(IEnumerable), (int) System.Net.HttpStatusCode.OK)] + public async Task GetCompositeAllAsync(int idWell, CancellationToken token = default) + { + var idCompany = User.GetCompanyId(); + + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) + return Forbid(); + + var dto = await drillParamsService.GetCompositeAllAsync(idWell, token); + + return Ok(dto); + } } }