Files
parr_api/PARR.API/Controllers/V1/JobGroupUpdateNextRunController.cs

71 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Settings;
using PARR.Core.Common.Interfaces.RabbitServices;
using PARR.Core.Repositories.Interfaces.JobGroupRepositories;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1
{
/// <summary>
/// Пересчитать все nextRun для JobGroup
/// </summary>
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class JobGroupUpdateNextRunController : BaseApiController
{
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
private readonly IJobGroupRepository jobGroupService;
public JobGroupUpdateNextRunController(
IRabbitService mqService,
MqSettings mqSettings,
IJobGroupRepository jobGroupService
)
{
this.mqService = mqService;
this.mqSettings = mqSettings;
this.jobGroupService = jobGroupService;
}
/// <summary>
/// Обновить nextRun для всех шаблонах в JobGroup
/// </summary>
/// <returns></returns>
[HttpPost(ApiRoutes.JobGroupUpdateNextRun.UpdateNextRun)]
public async Task<IActionResult> UpdateNextRun([FromRoute] Guid jobGroupId)
{
var jobGroup = await jobGroupService.Get().AnyAsync(t => t.Id == jobGroupId);
if (!jobGroup)
return BadRequest(new Response<string?>(null, false, new List<ErrorModel> { new ErrorModel { Message = "Не найдена группа работ с ИД" } }));
var requestToMq = new NextRunUpdateMq
{
JobGroupId = jobGroupId,
Initiator = new HistoryInitiator
{
InitiatorComment = "Вручную отправлен запрос на обновление nextRun для группы работ",
InitiatorParrComponentId = ParrComponentsEnum.Api
}
};
var sendResult = await mqService.SendAsync(mqSettings.NextRun, new List<object> { requestToMq });
if (sendResult.IsSuccess)
return Created("", new Response<string?>(null, true, new List<ErrorModel>(), "Отправлен запрос на расчет nextRun для группы работ."));
else
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при отправке данных." } }));
}
}
}