diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs index 15dab40f..a6038741 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs @@ -54,7 +54,7 @@ public class DetectedOperationExportService this.wellOperationRepository = wellOperationRepository; } - public async Task ExportAsync(int idWell, int idDomain, CancellationToken cancellationToken) + public async Task ExportAsync(int idWell, string url, CancellationToken cancellationToken) { var well = await dbContext.Wells .Include(w => w.Cluster) @@ -69,17 +69,17 @@ public class DetectedOperationExportService var operations = await DetectOperationsAsync(well.IdTelemetry.Value, DateTime.UnixEpoch, cancellationToken); - return await GenerateExcelFileStreamAsync(well, idDomain, operations, cancellationToken); + return await GenerateExcelFileStreamAsync(well, url, operations, cancellationToken); } - private async Task GenerateExcelFileStreamAsync(Well well, int idDomain, IEnumerable operationDetectorResults, + private async Task GenerateExcelFileStreamAsync(Well well, string url, IEnumerable operationDetectorResults, CancellationToken cancellationToken) { using var excelTemplateStream = await GetExcelTemplateStreamAsync(cancellationToken); using var workbook = new XLWorkbook(excelTemplateStream, XLEventTracking.Disabled); - await AddToWorkbookAsync(workbook, well, idDomain, operationDetectorResults, cancellationToken); + await AddToWorkbookAsync(workbook, well, url, operationDetectorResults, cancellationToken); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); @@ -87,7 +87,7 @@ public class DetectedOperationExportService return memoryStream; } - private async Task AddToWorkbookAsync(XLWorkbook workbook, Well well, int idDomain, IEnumerable operationDetectorResults, + private async Task AddToWorkbookAsync(XLWorkbook workbook, Well well, string url, IEnumerable operationDetectorResults, CancellationToken cancellationToken) { const string sheetName = "Операции"; @@ -98,12 +98,12 @@ public class DetectedOperationExportService var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName) ?? throw new FileFormatException($"Книга excel не содержит листа {sheetName}."); - await AddToSheetAsync(sheet, well, idDomain, operationDetectorResults + await AddToSheetAsync(sheet, well, url, operationDetectorResults .OrderBy(x => x.Operation.DateStart).ThenBy(x => x.Operation.DepthStart).ToArray(), cancellationToken); } - private async Task AddToSheetAsync(IXLWorksheet sheet, Well well, int idDomain, IList operationDetectorResults, + private async Task AddToSheetAsync(IXLWorksheet sheet, Well well, string url, IList operationDetectorResults, CancellationToken cancellationToken) { var wellOperationCategories = await dbContext.WellOperationCategories.ToListAsync(cancellationToken); @@ -134,8 +134,7 @@ public class DetectedOperationExportService && idReasonOfEndObject is int idReasonOfEnd) row.Cell(columnIdReasonOfEnd).Value = GetIdReasonOfEnd(idReasonOfEnd); - var link = - $"{domains[idDomain]}/well/{well.Id}/telemetry/monitoring?end={Uri.EscapeDataString(dateStart.AddSeconds(1800 * 0.9).ToString("yyyy-MM-ddTHH:mm:ss.fff"))}&range=1800"; + var link = $"{url}?end={Uri.EscapeDataString(dateStart.AddSeconds(1800 * 0.9).ToString("yyyy-MM-ddTHH:mm:ss.fff"))}&range=1800"; row.Cell(columnDateStart).Value = dateStart; row.Cell(columnDateStart).SetHyperlink(new XLHyperlink(link)); diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index 3c6d5b64..65231423 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -122,21 +122,21 @@ namespace AsbCloudWebApi.Controllers.SAUB /// Создает excel файл с операциями по скважине /// /// id скважины - /// Идентификатор домена /// [HttpGet("export")] [Permission] [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] - public async Task ExportAsync(int idWell, [Range(1, 2)] int idDomain, CancellationToken token) + public async Task ExportAsync(int idWell, CancellationToken token) { var idCompany = User.GetCompanyId(); if (idCompany is null) return Forbid(); - - var stream = await detectedOperationExportService.ExportAsync(idWell, idDomain, token); + + var url = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}/well/{idWell}/telemetry/monitoring"; + var stream = await detectedOperationExportService.ExportAsync(idWell, url, token); return File(stream, "application/octet-stream", "operations.xlsx"); }