From caae2f970ce15a671cf68e09a5337896a8b00b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 14 Oct 2021 17:57:25 +0500 Subject: [PATCH] Add DrillParamsController.SaveAsync() it removes old records before add new ones. --- AsbCloudApp/Services/IDrillParamsService.cs | 1 + .../Services/DrillParamsService.cs | 15 ++++++++++- .../Controllers/DrillParamsController.cs | 25 ++++++++++++++++++- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/AsbCloudApp/Services/IDrillParamsService.cs b/AsbCloudApp/Services/IDrillParamsService.cs index acc77f91..90aca34c 100644 --- a/AsbCloudApp/Services/IDrillParamsService.cs +++ b/AsbCloudApp/Services/IDrillParamsService.cs @@ -24,5 +24,6 @@ namespace AsbCloudApp.Services Task UpdateAsync(int idWell, int dtoId, DrillParamsDto dto, CancellationToken token = default); + Task SaveAsync(int idWell, IEnumerable dtos, CancellationToken token = default); } } diff --git a/AsbCloudInfrastructure/Services/DrillParamsService.cs b/AsbCloudInfrastructure/Services/DrillParamsService.cs index c120be59..4b29ab30 100644 --- a/AsbCloudInfrastructure/Services/DrillParamsService.cs +++ b/AsbCloudInfrastructure/Services/DrillParamsService.cs @@ -120,7 +120,20 @@ namespace AsbCloudInfrastructure.Services return result; } - + + public async Task SaveAsync(int idWell, IEnumerable dtos, + CancellationToken token = default) + { + db.DrillParams.RemoveRange(db.DrillParams.Where(d => d.IdWell == idWell)); + + foreach (var dto in dtos) + dto.IdWell = idWell; + + var result = await base.InsertRangeAsync(dtos, token).ConfigureAwait(false); + + return result; + } + public async Task UpdateAsync(int idWell, int dtoId, DrillParamsDto dto, CancellationToken token = default) { diff --git a/AsbCloudWebApi/Controllers/DrillParamsController.cs b/AsbCloudWebApi/Controllers/DrillParamsController.cs index 5627dcde..5cdc53dd 100644 --- a/AsbCloudWebApi/Controllers/DrillParamsController.cs +++ b/AsbCloudWebApi/Controllers/DrillParamsController.cs @@ -117,7 +117,30 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } - + + /// + /// Удаляет старые режимы бурения по скважине и добавляет новые + /// + /// Id скважины для добавления + /// Новые режимы бурения + /// + /// кол-во затронутых изменениями записей + [HttpPost("save")] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task SaveAsync(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.SaveAsync(idWell, drillParams, + token); + + return Ok(result); + } + /// /// Изменяет значения выбранного режима бурения ///