diff --git a/AsbCloudApp/Data/SAUB/EventDto.cs b/AsbCloudApp/Data/SAUB/EventDto.cs index d8103d17..f426c4eb 100644 --- a/AsbCloudApp/Data/SAUB/EventDto.cs +++ b/AsbCloudApp/Data/SAUB/EventDto.cs @@ -21,7 +21,7 @@ namespace AsbCloudApp.Data.SAUB /// /// id категории события /// - [Range(1, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")] + [Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")] public int IdCategory { get; set; } /// @@ -32,7 +32,7 @@ namespace AsbCloudApp.Data.SAUB /// /// тип определения наступления события /// - [Range(1, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")] + [Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")] public int EventType { get; set; } /// 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/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 8b5a359f..b26c7a25 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -104,7 +104,7 @@ namespace AsbCloudDb.Model protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) - optionsBuilder.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" + optionsBuilder.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True;" //, builder=>builder.EnableRetryOnFailure(2, System.TimeSpan.FromMinutes(1)) ); } 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;