using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMapPlan; using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudApp.Services.ProcessMaps; using AsbCloudApp.Services.ProcessMaps.WellDrilling; using AsbCloudWebApi.SignalR; using AsbCloudWebApi.SignalR.Clients; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers.ProcessMaps; /// /// РТК бурение /// public class ProcessMapWellDrillingController : ProcessMapBaseController { private readonly IProcessMapReportDataSaubStatService processMapReportDataSaubStatService; private readonly IProcessMapReportDataSaubStatExportService processMapReportDataSaubStatExportService; protected override string SignalRGroup => "ProcessMapWellDrilling"; public ProcessMapWellDrillingController(IWellService wellService, IChangeLogRepository repository, IUserRepository userRepository, IProcessMapReportDataSaubStatExportService processMapReportDataSaubStatExportService, IProcessMapReportDataSaubStatService processMapReportDataSaubStatService, ICrudRepository wellSectionRepository, IHubContext telemetryHubContext, ITelemetryService telemetryService, IProcessMapPlanService service) : base(wellService, repository, userRepository, wellSectionRepository, telemetryHubContext, telemetryService, service) { this.processMapReportDataSaubStatExportService = processMapReportDataSaubStatExportService; this.processMapReportDataSaubStatService = processMapReportDataSaubStatService; } /// /// Получение данных для отчета РТК бурение /// /// Id /// параметры запроса /// /// [HttpPost("report")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] public async Task GetReportAsync(int idWell, DataSaubStatRequest request, CancellationToken cancellationToken) { var report = await processMapReportDataSaubStatService.GetAsync(idWell, request, cancellationToken); return Ok(report); } /// /// Экспорт отчета РТК бурение /// /// Id скважины /// Параметры запроса /// /// [HttpGet("report/export")] [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task ExportReportAsync(int idWell, [FromQuery] DataSaubStatRequest request, CancellationToken cancellationToken) { var report = await processMapReportDataSaubStatExportService.ExportAsync(idWell, request, cancellationToken); if (report is null) return NoContent(); return File(report.Value.File, "application/octet-stream", report.Value.Name); } }