From bc986e789a2cdbb34de3e3bb10c9c9a5005e526f Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 27 Oct 2023 12:02:19 +0500 Subject: [PATCH] WellSectionsController --- AsbCloudApp/Data/SectionByOperationsDto.cs | 1 + .../Repository/WellOperationRepository.cs | 4 ++ .../Controllers/WellSectionsController.cs | 59 +++++++++++++++++++ .../Controllers/WellboreController.cs | 4 -- 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 AsbCloudWebApi/Controllers/WellSectionsController.cs diff --git a/AsbCloudApp/Data/SectionByOperationsDto.cs b/AsbCloudApp/Data/SectionByOperationsDto.cs index 80d2a3b4..8123ad11 100644 --- a/AsbCloudApp/Data/SectionByOperationsDto.cs +++ b/AsbCloudApp/Data/SectionByOperationsDto.cs @@ -44,4 +44,5 @@ public class SectionByOperationsDto /// Дата после завершения последней операции операции в секции /// public DateTimeOffset DateEnd { get; set; } + public string Caption { get; set; } } diff --git a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs index cd913980..8c72be8e 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs @@ -128,12 +128,14 @@ public class WellOperationRepository : IWellOperationRepository operation.IdWell, operation.IdType, operation.IdWellSectionType, + operation.WellSectionType.Caption, }) .Select(group => new { group.Key.IdWell, group.Key.IdType, group.Key.IdWellSectionType, + group.Key.Caption, First = group .OrderBy(operation => operation.DateStart) @@ -162,6 +164,8 @@ public class WellOperationRepository : IWellOperationRepository IdType = item.IdType, IdWellSectionType = item.IdWellSectionType, + Caption = item.Caption, + DateStart = item.First.DateStart, DepthStart = item.First.DepthStart, diff --git a/AsbCloudWebApi/Controllers/WellSectionsController.cs b/AsbCloudWebApi/Controllers/WellSectionsController.cs new file mode 100644 index 00000000..aa364439 --- /dev/null +++ b/AsbCloudWebApi/Controllers/WellSectionsController.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AsbCloudApp.Data; +using AsbCloudApp.Repositories; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace AsbCloudWebApi.Controllers; + +/// +/// Секции скважины +/// +[Authorize] +[ApiController] +[Route("api/[controller]")] +public class WellSectionsController : ControllerBase +{ + private readonly IWellOperationRepository wellOperationRepository; + + public WellSectionsController(IWellOperationRepository wellOperationRepository) + { + this.wellOperationRepository = wellOperationRepository; + } + + /// + /// Получение списка плановых секций скважин + /// + /// Идентификаторы скважин + /// + /// + [HttpGet("plan")] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public async Task GetPlanAsync([FromQuery] IEnumerable idsWells, + CancellationToken cancellationToken) + { + var sections = await wellOperationRepository.GetSectionsAsync(idsWells, cancellationToken); + sections = sections.Where(section => section.IdType == 0); + return Ok(sections); + } + + /// + /// Получение списка фактических секций скважин + /// + /// Идентификаторы скважин + /// + /// + [HttpGet("fact")] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public async Task GetFactAsync([FromQuery] IEnumerable idsWells, + CancellationToken cancellationToken) + { + var sections = await wellOperationRepository.GetSectionsAsync(idsWells, cancellationToken); + sections = sections.Where(section => section.IdType == 1); + return Ok(sections); + } +} diff --git a/AsbCloudWebApi/Controllers/WellboreController.cs b/AsbCloudWebApi/Controllers/WellboreController.cs index 8b0a94bf..b3f77810 100644 --- a/AsbCloudWebApi/Controllers/WellboreController.cs +++ b/AsbCloudWebApi/Controllers/WellboreController.cs @@ -1,15 +1,11 @@ using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; -using AsbCloudApp.Exceptions; -using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Org.BouncyCastle.Asn1.Ocsp; namespace AsbCloudWebApi.Controllers;