diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs index 09d735fe..34668ac8 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs @@ -15,6 +15,7 @@ using AsbCloudApp.Data; using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Parser; using AsbCloudApp.Data.ProcessMaps; +using System.ComponentModel.DataAnnotations; namespace AsbCloudWebApi.Controllers.ProcessMaps; @@ -205,19 +206,19 @@ public abstract class ProcessMapPlanBaseController : ControllerBase /// Импорт РТК из excel (xlsx) файла /// /// - /// + /// /// /// [HttpPost("parse")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] public async Task>> Parse(int idWell, - [FromForm] IFormFileCollection files, + [Required] IFormFile file, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); - var stream = files.GetExcelFile(); + var stream = file.GetExcelFile(); try { @@ -226,7 +227,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase } catch (FileFormatException ex) { - return this.ValidationBadRequest(nameof(files), ex.Message); + return this.ValidationBadRequest(nameof(file), ex.Message); } } diff --git a/AsbCloudWebApi/Extensions.cs b/AsbCloudWebApi/Extensions.cs index 59c72e37..26cea7ba 100644 --- a/AsbCloudWebApi/Extensions.cs +++ b/AsbCloudWebApi/Extensions.cs @@ -113,4 +113,18 @@ public static class Extensions return file.OpenReadStream(); } + + /// + /// Получение Excel + /// + /// + /// + /// + public static Stream GetExcelFile(this IFormFile file) + { + if (Path.GetExtension(file.FileName).ToLower() != ".xlsx") + throw new ArgumentInvalidException(nameof(file), "Требуется .xlsx файл."); + + return file.OpenReadStream(); + } } \ No newline at end of file