From 4f4556b62b3821d408e610b6faea15144b5eed45 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: Tue, 17 Oct 2023 12:13:00 +0500 Subject: [PATCH 1/3] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D1=83=D1=81=D0=B0=20=D1=81=D0=BA=D0=B2=D0=B0=D0=B6=D0=B8?= =?UTF-8?q?=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudInfrastructure/Services/WellService.cs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs index 97bf9e06..1a907725 100644 --- a/AsbCloudInfrastructure/Services/WellService.cs +++ b/AsbCloudInfrastructure/Services/WellService.cs @@ -105,18 +105,17 @@ namespace AsbCloudInfrastructure.Services public async Task GetOrDefaultStatAsync(int idWell, CancellationToken token) { - var dto = wellInfoService.FirstOrDefault(well => well.Id == idWell); - if (dto is not null) - return dto; - - var request = new WellRequest{Ids = new[] { idWell }}; - var entities = await GetEntitiesAsync(request, token); - var entity = entities.FirstOrDefault(); + var entity = await GetOrDefaultAsync(idWell, token); + if (entity is null) return null; + + var dto = wellInfoService.FirstOrDefault(well => well.Id == idWell); - dto = entity.Adapt(); - + if (dto is null) + return entity.Adapt(); + + dto.IdState = entity.IdState; return dto; } From 1fd00256e94cd400cd33403315550377c57223ec 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: Fri, 20 Oct 2023 15:46:44 +0500 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Возник баг если обновлять скважину из состояния в работе -> завершена и обратно возникает ошибка, что скважина отслеживается контекстом. 2. Поправил метод контроллера UpdateWellStateAsync --- AsbCloudInfrastructure/Services/WellService.cs | 3 ++- AsbCloudWebApi/Controllers/WellController.cs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs index 1a907725..105cb5b3 100644 --- a/AsbCloudInfrastructure/Services/WellService.cs +++ b/AsbCloudInfrastructure/Services/WellService.cs @@ -33,7 +33,8 @@ namespace AsbCloudInfrastructure.Services .Include(w => w.Telemetry) .Include(w => w.WellType) .Include(w => w.RelationCompaniesWells) - .ThenInclude(r => r.Company); + .ThenInclude(r => r.Company) + .AsNoTracking(); public WellService(IAsbCloudDbContext db, IMemoryCache memoryCache, ITelemetryService telemetryService, ITimezoneService timezoneService, WellInfoService wellInfoService) : base(db, memoryCache, MakeQueryWell) diff --git a/AsbCloudWebApi/Controllers/WellController.cs b/AsbCloudWebApi/Controllers/WellController.cs index 3ed37d65..51e215ca 100644 --- a/AsbCloudWebApi/Controllers/WellController.cs +++ b/AsbCloudWebApi/Controllers/WellController.cs @@ -135,8 +135,8 @@ namespace AsbCloudWebApi.Controllers idWell, token).ConfigureAwait(false)) return Forbid(); - var dto = wellService.GetOrDefault(idWell)!; - dto.IdState = idState; + var dto = await wellService.GetOrDefaultAsync(idWell, token); + dto!.IdState = idState; var result = await wellService.UpdateAsync(dto, token) .ConfigureAwait(false); From e9b79bb0d6990ce90a5509e5665df153a4dfb05a Mon Sep 17 00:00:00 2001 From: Frolov-Nikita Date: Sun, 22 Oct 2023 17:57:39 +0500 Subject: [PATCH 3/3] Well service rename some variables --- AsbCloudInfrastructure/Services/WellService.cs | 14 +++++++------- AsbCloudWebApi/Controllers/WellController.cs | 7 ++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs index 105cb5b3..6a805560 100644 --- a/AsbCloudInfrastructure/Services/WellService.cs +++ b/AsbCloudInfrastructure/Services/WellService.cs @@ -106,18 +106,18 @@ namespace AsbCloudInfrastructure.Services public async Task GetOrDefaultStatAsync(int idWell, CancellationToken token) { - var entity = await GetOrDefaultAsync(idWell, token); + var well = await GetOrDefaultAsync(idWell, token); - if (entity is null) + if (well is null) return null; - var dto = wellInfoService.FirstOrDefault(well => well.Id == idWell); + var wellInfo = wellInfoService.FirstOrDefault(well => well.Id == idWell); - if (dto is null) - return entity.Adapt(); + if (wellInfo is null) + return well.Adapt(); - dto.IdState = entity.IdState; - return dto; + wellInfo.IdState = well.IdState; + return wellInfo; } public async Task> GetAsync(WellRequest request, CancellationToken token) diff --git a/AsbCloudWebApi/Controllers/WellController.cs b/AsbCloudWebApi/Controllers/WellController.cs index 51e215ca..2a0ad437 100644 --- a/AsbCloudWebApi/Controllers/WellController.cs +++ b/AsbCloudWebApi/Controllers/WellController.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.AspNetCore.Authorization; @@ -136,7 +137,11 @@ namespace AsbCloudWebApi.Controllers return Forbid(); var dto = await wellService.GetOrDefaultAsync(idWell, token); - dto!.IdState = idState; + + if (dto is null) + return this.ValidationBadRequest(nameof(idWell), $"Скважина с id: {idWell} недоступна"); + + dto.IdState = idState; var result = await wellService.UpdateAsync(dto, token) .ConfigureAwait(false);