From c812e77f9309218438616d27cc9e5029876e75a8 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Thu, 6 Jun 2024 17:27:57 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=20=D0=BF=D0=BE=20Id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PeriodicBackgroundWorkerController.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs b/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs index d7f666a0..0a493456 100644 --- a/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs +++ b/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs @@ -2,6 +2,7 @@ using AsbCloudInfrastructure.Background; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; using System.Threading; @@ -15,10 +16,14 @@ namespace AsbCloudWebApi.Controllers public class PeriodicBackgroundWorkerController : ControllerBase { private readonly PeriodicBackgroundWorker worker; + private readonly IServiceProvider serviceProvider; - public PeriodicBackgroundWorkerController(PeriodicBackgroundWorker worker) + public PeriodicBackgroundWorkerController( + PeriodicBackgroundWorker worker, + IServiceProvider serviceProvider) { this.worker = worker; + this.serviceProvider = serviceProvider; } [HttpGet] @@ -33,6 +38,27 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } + /// + /// Запуск задачи по Id + /// + /// Id задачи + /// + /// + [HttpGet("start/{workId}")] + public async Task Start(string workId, CancellationToken token) + { + var targetWork = worker.Works.FirstOrDefault(w => w.Work.Id == workId); + if(targetWork is not null) + { + using (var scope = serviceProvider.CreateScope()) { + + var result = await targetWork.Work.Start(scope.ServiceProvider, token); + return Ok(result); + } + } + return BadRequest("Work not found by workId"); + } + [HttpPost("restart"), Obsolete("temporary method")] public async Task RestartAsync(CancellationToken token) {