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.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base; using PARR.API.Controllers.V1.Base;
using PARR.DAL.Contracts; using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
namespace PARR.API.Controllers.V1 namespace PARR.API.Controllers.V1
@@ -69,28 +70,37 @@ namespace PARR.API.Controllers.V1
if (template == null) if (template == null)
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {templateId}" } })); return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {templateId}" } }));
switch (request.Code) var enumStatus = (RobotStatusEnum)request.Code;
{
case (int)RobotStatusEnum.InProgress: // изменение статуса
template.RobotAttemptsNumber++; templateService.ChangeRobotStatus(enumStatus, ref template);
template.RobotStatusCode = request.Code;
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow; //switch (request.Code)
break; //{
case (int)RobotStatusEnum.Error: // case (int)RobotStatusEnum.InProgress:
template.RobotStatusCode = request.Code; // template.RobotAttemptsNumber++;
break; // template.RobotStatusCode = request.Code;
case (int)RobotStatusEnum.Complete: // template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
template.RobotStatusCode = request.Code; // break;
template.RobotLastStatusUpdated = DateTimeOffset.UtcNow; // case (int)RobotStatusEnum.Error:
break; // template.RobotStatusCode = request.Code;
case (int)RobotStatusEnum.Wait: // break;
template.RobotStatusCode = request.Code; // case (int)RobotStatusEnum.Complete:
template.RobotLastStatusUpdated = null; // template.RobotStatusCode = request.Code;
template.RobotAttemptsNumber = 0; // template.RobotLastStatusUpdated = DateTimeOffset.UtcNow;
break; // break;
default: // case (int)RobotStatusEnum.Wait:
break; // template.RobotStatusCode = request.Code;
} // template.RobotLastStatusUpdated = null;
// template.RobotAttemptsNumber = 0;
// break;
// default:
// break;
//}
if (!await templateService.CommitAsync()) if (!await templateService.CommitAsync())
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении статуса шаблону {templateId}" } })); 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)); return Ok(new Response<TemplateRobotStatusResponse>(response, true));
} }
} }
} }

View File

@@ -74,5 +74,29 @@ namespace PARR.DAL.Services.Implementations
logger.LogError($"Ошибка при сохранении изменений RobotStatus у шаблонов на {RobotStatusEnum.Error}"); 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; using PARR.DAL.Services.Interfaces.Base;
namespace PARR.DAL.Services.Interfaces namespace PARR.DAL.Services.Interfaces
{ {
public interface ITemplateService : IBaseService<Template> public interface ITemplateService : IBaseService<Template>
{ {
/// <summary>
/// Изменение статуса отработки робота (без коммита)
/// </summary>
/// <param name="status"></param>
/// <param name="template"></param>
void ChangeRobotStatus(RobotStatusEnum status, ref Template template);
/// <summary> /// <summary>
/// Поиск шаблонов с просроченным временем выполнения роботом и превышенным кол-вом попыток. Установка им ошибочного статуса /// Поиск шаблонов с просроченным временем выполнения роботом и превышенным кол-вом попыток. Установка им ошибочного статуса
/// </summary> /// </summary>