From 0d8895d3aaed6110b2844180920b738742b6b9d6 Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Mon, 27 Apr 2026 14:03:10 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=D0=B8=D0=BC=D0=B2?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=B2=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=20=D0=BA=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE?= =?UTF-8?q?=D0=BC=D1=83=20=D1=81=20=D0=90=D0=A1=D0=A3=20=D0=95=D0=A1=D0=9F?= =?UTF-8?q?=D0=9F=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D1=83=20CRLF=20(\?= =?UTF-8?q?r\n)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/V1/RobotTaskController.cs | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/PARR.API/Controllers/V1/RobotTaskController.cs b/PARR.API/Controllers/V1/RobotTaskController.cs index c0434b44..b0d3d8b7 100644 --- a/PARR.API/Controllers/V1/RobotTaskController.cs +++ b/PARR.API/Controllers/V1/RobotTaskController.cs @@ -33,7 +33,7 @@ namespace PARR.API.Controllers.V1 private readonly IRobotHistoryService robotHistoryService; private readonly IShortcodesService shortcodesService; private readonly INextRunService nextRunService; - private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService; + //private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService; public RobotTaskController( IMapper mapper, @@ -44,8 +44,8 @@ namespace PARR.API.Controllers.V1 IClientService clientService, IRobotHistoryService robotHistoryService, IShortcodesService shortcodesService, - INextRunService nextRunService, - IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService + INextRunService nextRunServic + //IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService ) { this.mapper = mapper; @@ -57,7 +57,7 @@ namespace PARR.API.Controllers.V1 this.robotHistoryService = robotHistoryService; this.shortcodesService = shortcodesService; this.nextRunService = nextRunService; - this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService; + //this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService; } @@ -197,9 +197,9 @@ namespace PARR.API.Controllers.V1 { //RobotTaskTemplateResponse var robotTaskTemplateResponse = mapper.Map(task); - robotTaskTemplateResponse.FullDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task.Template!); + robotTaskTemplateResponse.FullDescription = NormalizeLineEndingsToCrlf(await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task.Template!)); robotTaskTemplateResponse.ShortDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ShortDescription, task.Template!); - robotTaskTemplateResponse.Solution = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.Solution, task.Template!); + robotTaskTemplateResponse.Solution = NormalizeLineEndingsToCrlf(await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.Solution, task.Template!)); robotTaskTemplateResponse.TnkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.TnkName, task.Template!); robotTaskTemplateResponse.WorkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkName, task.Template!); robotTaskTemplateResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkGroup, task.Template!); @@ -318,5 +318,19 @@ namespace PARR.API.Controllers.V1 return true; } + + /// + /// Приводит переносы строк в тексте к формату CRLF (\r\n) + /// + /// Исходный текст + /// Текст с унифицированными переносами строк + private string NormalizeLineEndingsToCrlf(string? text) + { + if (string.IsNullOrEmpty(text)) + return string.Empty; + + // Заменяем любые варианты переносов (\r\n, \r, \n) на единый \r\n + return System.Text.RegularExpressions.Regex.Replace(text, @"\r\n|\r|\n", "\r\n"); + } } }