refactor(api): Вынес логику выставления статуса робота из контроллера в Template сервис.

This commit is contained in:
Mikhail Trubnikov
2023-10-04 13:41:33 +10:00
parent d0b75b7f58
commit 3e67c96ed1
4 changed files with 77 additions and 24 deletions

View 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
}
}

View File

@@ -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));
}
}
}

View File

@@ -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;
}
}
}
}

View File

@@ -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>