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;