diff --git a/AsbCloudApp/Data/DrillParamsDto.cs b/AsbCloudApp/Data/DrillParamsDto.cs index 7de2f5df..865b8b13 100644 --- a/AsbCloudApp/Data/DrillParamsDto.cs +++ b/AsbCloudApp/Data/DrillParamsDto.cs @@ -1,6 +1,6 @@ namespace AsbCloudApp.Data { - public class DrillParamsDto + public class DrillParamsDto : IId { public int Id { get; set; } diff --git a/AsbCloudApp/Services/IDrillParamsService.cs b/AsbCloudApp/Services/IDrillParamsService.cs index d33d1530..d607c292 100644 --- a/AsbCloudApp/Services/IDrillParamsService.cs +++ b/AsbCloudApp/Services/IDrillParamsService.cs @@ -5,15 +5,9 @@ using AsbCloudApp.Data; namespace AsbCloudApp.Services { - public interface IDrillParamsService + public interface IDrillParamsService : ICrudService { Task GetDefaultDrillParamsAsync(int idWell, double startDepth, double endDepth, CancellationToken token = default); - - // Task>GetDrillParamsAsync(int idWell, - // DrillParamsDto drillParamsDto, CancellationToken token = default); - - Task SaveDrillParamsAsync(int idWell, DrillParamsDto drillParamsDto, - CancellationToken token = default); } } diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 77534b83..30c0ff77 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -53,6 +53,7 @@ namespace AsbCloudInfrastructure services.AddTransient, CrudServiceBase>(); services.AddTransient, CrudServiceBase>(); services.AddTransient, CrudServiceBase>(); + services.AddTransient, DrillParamsService>(); // TelemetryData services services.AddTransient, TelemetryDataSaubService>(); diff --git a/AsbCloudInfrastructure/Services/DrillParamsService.cs b/AsbCloudInfrastructure/Services/DrillParamsService.cs index a1c49eb2..cc447a45 100644 --- a/AsbCloudInfrastructure/Services/DrillParamsService.cs +++ b/AsbCloudInfrastructure/Services/DrillParamsService.cs @@ -6,18 +6,17 @@ using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; -using Mapster; namespace AsbCloudInfrastructure.Services { - public class DrillParamsService : IDrillParamsService + public class DrillParamsService : CrudServiceBase, IDrillParamsService { private readonly IAsbCloudDbContext db; private readonly ITelemetryService telemetryService; - public DrillParamsService(IAsbCloudDbContext db, ITelemetryService telemetryService) + public DrillParamsService(IAsbCloudDbContext context, ITelemetryService telemetryService) + : base(context) { - this.db = db; this.telemetryService = telemetryService; } public async Task GetDefaultDrillParamsAsync(int idWell, double startDepth, @@ -28,38 +27,11 @@ namespace AsbCloudInfrastructure.Services if (idTelemetry is null) return null; - var axialLoads = await GetDrillParamsQuery(idWell, startDepth, endDepth, + var axialLoads = await GetDrillParams(idWell, startDepth, endDepth, (telemetry) => telemetry.AxialLoad, token); - var pressures = await GetDrillParamsQuery(idWell, startDepth, endDepth, + var pressures = await GetDrillParams(idWell, startDepth, endDepth, (telemetry) => telemetry.Pressure, token); - - // var topDriveTorques = await (from telemetry in db.TelemetryDataSaub - // where telemetry.IdTelemetry == idTelemetry && - // telemetry.WellDepth >= startDepth && - // telemetry.WellDepth <= endDepth - // group telemetry.Pressure by true into g - // select new { Min = g.Min(), Avg = g.Average(), Max = g.Max() }) - // .DefaultIfEmpty() - // .FirstOrDefaultAsync(token); - // - // var topDriveSpeeds = await (from telemetry in db.TelemetryDataSaub - // where telemetry.IdTelemetry == idTelemetry && - // telemetry.WellDepth >= startDepth && - // telemetry.WellDepth <= endDepth - // group telemetry.Pressure by true into g - // select new { Min = g.Min(), Avg = g.Average(), Max = g.Max() }) - // .DefaultIfEmpty() - // .FirstOrDefaultAsync(token); - - // var consumptions = await (from telemetry in db.TelemetryDataSaub - // where telemetry.IdTelemetry == idTelemetry && - // telemetry.WellDepth >= startDepth && - // telemetry.WellDepth <= endDepth - // group telemetry.Pressure by true into g - // select new { Min = g.Min(), Avg = g.Average(), Max = g.Max() }) - // .DefaultIfEmpty() - // .FirstOrDefaultAsync(token); var drillParamsDto = new DrillParamsDto() { @@ -85,18 +57,8 @@ namespace AsbCloudInfrastructure.Services return drillParamsDto; } - - public Task SaveDrillParamsAsync(int idWell, DrillParamsDto drillParamsDto, - CancellationToken token = default) - { - var entity = drillParamsDto.Adapt(); - db.DrillParams.Add(entity); - - return db.SaveChangesAsync(token); - } - - private async Task<(double Min, double Avg, double Max)> GetDrillParamsQuery(int idTelemetry, + private async Task<(double Min, double Avg, double Max)> GetDrillParams(int idTelemetry, double startDepth, double endDepth, Func func, CancellationToken token = default) { diff --git a/AsbCloudWebApi/Controllers/DrillParamsController.cs b/AsbCloudWebApi/Controllers/DrillParamsController.cs index 8e7f1678..76562c02 100644 --- a/AsbCloudWebApi/Controllers/DrillParamsController.cs +++ b/AsbCloudWebApi/Controllers/DrillParamsController.cs @@ -10,15 +10,18 @@ namespace AsbCloudWebApi.Controllers /// /// Контроллер для режимов бурения /// - [Route("/drillParams")] + [Route("api/drillParams")] [ApiController] public class DrillParamsController : ControllerBase { private readonly IDrillParamsService drillParamsService; + private readonly IWellService wellService; - public DrillParamsController(IDrillParamsService drillParamsService) + public DrillParamsController(IDrillParamsService drillParamsService, + IWellService wellService) { this.drillParamsService = drillParamsService; + this.wellService = wellService; } /// @@ -36,37 +39,40 @@ namespace AsbCloudWebApi.Controllers { var idCompany = User.GetCompanyId(); - if (idCompany is null) + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) return Forbid(); - var dto = await drillParamsService.GetDefaultDrillParamsAsync(idWell, startDepth, endDepth, token); + var drillParamsDo = await drillParamsService.GetDefaultDrillParamsAsync(idWell, + startDepth, endDepth, token); + return Ok(drillParamsDo); + } + + /// + /// Возвращает все значения для режимов бурения по секции на скважине + /// + /// id скважины + /// Токен отмены задачи + /// Список параметров для режимов бурения на скважине + [HttpGet("idWell")] + [ProducesResponseType(typeof(IEnumerable), (int) System.Net.HttpStatusCode.OK)] + public async Task GetDrillParamsAsync(int idWell, + CancellationToken token = default) + { + var idCompany = User.GetCompanyId(); + + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) + return Forbid(); + + var dto = await drillParamsService.GetAsync(idWell, token); + return Ok(dto); } - // /// - // /// Возвращает значения для режимов бурения gj ctrwbzv yf crdf;byt - // /// - // /// id скважины - // /// Токен отмены задачи - // /// Список параметров для режимов бурения на скважине - // [HttpGet("idWell")] - // [ProducesResponseType(typeof(IEnumerable), (int) System.Net.HttpStatusCode.OK)] - // public async Task GetDrillParamsAsync(int idWell, - // CancellationToken token = default) - // { - // var idCompany = User.GetCompanyId(); - // - // if (idCompany is null) - // return Forbid(); - // - // var dto = await drillParamsService.GetDrillParamsAsync(idWell, token); - // - // return Ok(dto); - // } - /// - /// Сохраняет значения для режимов бурения + /// Сохраняет значения для режимов бурения по секции на скважине /// /// id скважины /// Параметры режимов бурений для секции @@ -79,59 +85,61 @@ namespace AsbCloudWebApi.Controllers { var idCompany = User.GetCompanyId(); - if (idCompany is null) + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) return Forbid(); - - var result = await drillParamsService.SaveDrillParamsAsync(idWell, - drillParamsDto, token); + + var result = await drillParamsService.InsertAsync(drillParamsDto, token); return Ok(result); } - // /// - // /// Изменяет значения для режимов бурения - // /// - // /// id скважины - // /// Параметры режимов бурений для секции - // /// Токен отмены задачи - // /// - // [HttpPut("idWell")] - // [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] - // public async Task EditDrillParamsAsync(int idWell, - // DrillParamsDto drillParamsDto, CancellationToken token = default) - // { - // var idCompany = User.GetCompanyId(); - // - // if (idCompany is null) - // return Forbid(); - // - // var result = await drillParamsService.EditDrillParamsAsync(idWell, - // drillParamsDto, token); - // - // return Ok(result); - // } + /// + /// Изменяет значения выбранного режима бурения + /// + /// id скважины + /// Параметры режимов бурений для секции + /// Токен отмены задачи + /// + [HttpPut("idWell")] + [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] + public async Task EditDrillParamsAsync(int idWell, + DrillParamsDto drillParamsDto, CancellationToken token = default) + { + var idCompany = User.GetCompanyId(); - // /// - // /// Удаляет значения для режимов бурения - // /// - // /// id скважины - // /// Параметры режимов бурений для секции - // /// Токен отмены задачи - // /// - // [HttpDelete("idWell")] - // [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] - // public async Task DeleteDrillParamsAsync(int idWell, - // DrillParamsDto drillParamsDto, CancellationToken token = default) - // { - // var idCompany = User.GetCompanyId(); - // - // if (idCompany is null) - // return Forbid(); - // - // var result = await drillParamsService.DeleteDrillParamsAsync(idWell, - // drillParamsDto, token); - // - // return Ok(result); - // } + if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false)) + return Forbid(); + + var result = await drillParamsService.UpdateAsync(idWell, + drillParamsDto, token); + + return Ok(result); + } + + /// + /// Удаляет объект значений выбранного режима бурения + /// + /// id скважины + /// Id объекта параметров режима бурений для секции + /// Токен отмены задачи + /// + [HttpDelete("idWell")] + [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] + public async Task DeleteDrillParamsAsync(int idWell, + int drillParamsId, 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.DeleteAsync(drillParamsId, + token); + + return Ok(result); + } } }