refactor(api): Вынес логику выставления статуса робота из контроллера в Template сервис.
This commit is contained in:
12
PARR.API/Controllers/V1/RobotTemplateHistoryController.cs
Normal file
12
PARR.API/Controllers/V1/RobotTemplateHistoryController.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
public class RobotTemplateHistoryController : BaseApiController
|
||||
{
|
||||
// get
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.Contracts.V1.Responses.Base;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
@@ -69,28 +70,37 @@ namespace PARR.API.Controllers.V1
|
||||
if (template == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {templateId}" } }));
|
||||
|
||||
switch (request.Code)
|
||||
{
|
||||
case (int)RobotStatusEnum.InProgress:
|
||||
template.RobotAttemptsNumber++;
|
||||
template.RobotStatusCode = request.Code;
|
||||
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
break;
|
||||
case (int)RobotStatusEnum.Error:
|
||||
template.RobotStatusCode = request.Code;
|
||||
break;
|
||||
case (int)RobotStatusEnum.Complete:
|
||||
template.RobotStatusCode = request.Code;
|
||||
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
break;
|
||||
case (int)RobotStatusEnum.Wait:
|
||||
template.RobotStatusCode = request.Code;
|
||||
template.RobotLastStatusUpdated = null;
|
||||
template.RobotAttemptsNumber = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
var enumStatus = (RobotStatusEnum)request.Code;
|
||||
|
||||
// изменение статуса
|
||||
templateService.ChangeRobotStatus(enumStatus, ref template);
|
||||
|
||||
//switch (request.Code)
|
||||
//{
|
||||
// case (int)RobotStatusEnum.InProgress:
|
||||
// template.RobotAttemptsNumber++;
|
||||
// template.RobotStatusCode = request.Code;
|
||||
// template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
// break;
|
||||
// case (int)RobotStatusEnum.Error:
|
||||
// template.RobotStatusCode = request.Code;
|
||||
// break;
|
||||
// case (int)RobotStatusEnum.Complete:
|
||||
// template.RobotStatusCode = request.Code;
|
||||
// template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
// break;
|
||||
// case (int)RobotStatusEnum.Wait:
|
||||
// template.RobotStatusCode = request.Code;
|
||||
// template.RobotLastStatusUpdated = null;
|
||||
// template.RobotAttemptsNumber = 0;
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (!await templateService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении статуса шаблону {templateId}" } }));
|
||||
@@ -104,6 +114,5 @@ namespace PARR.API.Controllers.V1
|
||||
return Ok(new Response<TemplateRobotStatusResponse>(response, true));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,5 +74,29 @@ namespace PARR.DAL.Services.Implementations
|
||||
logger.LogError($"Ошибка при сохранении изменений RobotStatus у шаблонов на {RobotStatusEnum.Error}");
|
||||
|
||||
}
|
||||
|
||||
public void ChangeRobotStatus(RobotStatusEnum status, ref Template template)
|
||||
{
|
||||
template.RobotStatusCode = (int)status;
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case RobotStatusEnum.InProgress:
|
||||
template.RobotAttemptsNumber++;
|
||||
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
break;
|
||||
//case RobotStatusEnum.Error:
|
||||
// break;
|
||||
case RobotStatusEnum.Complete:
|
||||
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
|
||||
break;
|
||||
case RobotStatusEnum.Wait:
|
||||
template.RobotLastStatusUpdated = null;
|
||||
template.RobotAttemptsNumber = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces.Base;
|
||||
|
||||
namespace PARR.DAL.Services.Interfaces
|
||||
{
|
||||
public interface ITemplateService : IBaseService<Template>
|
||||
{
|
||||
/// <summary>
|
||||
/// Изменение статуса отработки робота (без коммита)
|
||||
/// </summary>
|
||||
/// <param name="status"></param>
|
||||
/// <param name="template"></param>
|
||||
void ChangeRobotStatus(RobotStatusEnum status, ref Template template);
|
||||
|
||||
/// <summary>
|
||||
/// Поиск шаблонов с просроченным временем выполнения роботом и превышенным кол-вом попыток. Установка им ошибочного статуса
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user