124 lines
4.2 KiB
C#
124 lines
4.2 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using PARR.API.Contracts.V1;
|
|
using PARR.API.Contracts.V1.Responses.Base;
|
|
using PARR.API.Controllers.V1.Base;
|
|
using PARR.API.Services.Interfaces;
|
|
using PARR.DAL.CacheServices;
|
|
using PARR.DAL.Services.Interfaces;
|
|
using PARR.DAL.TransformServices;
|
|
|
|
namespace PARR.API.Controllers.V1
|
|
{
|
|
[Authorize]
|
|
public class TestController : BaseApiController
|
|
{
|
|
private readonly IClientService clientService;
|
|
private readonly IEsppScheduleTransformService esppScheduleTransformService;
|
|
private readonly IRedisCacheService redisCacheService;
|
|
private readonly IWeekendDayService weekendDayService;
|
|
|
|
public TestController(
|
|
IClientService clientService,
|
|
IEsppScheduleTransformService esppScheduleTransformService,
|
|
IRedisCacheService redisCacheService,
|
|
IWeekendDayService weekendDayService
|
|
)
|
|
{
|
|
this.clientService = clientService;
|
|
this.esppScheduleTransformService = esppScheduleTransformService;
|
|
this.redisCacheService = redisCacheService;
|
|
this.weekendDayService = weekendDayService;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Получить мой ip
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(ApiRoutes.Test.GetMyIp)]
|
|
public IActionResult GetMyIp()
|
|
{
|
|
var ipAddress = clientService.GetClientIp();
|
|
|
|
var ip = ipAddress?.ToString();
|
|
|
|
return Ok(new Response<object>(new { ip }, true));
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Получить следующую дату запуска
|
|
/// </summary>
|
|
/// <param name="applicationInWorkId"></param>
|
|
/// <param name="lastRunDate"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(ApiRoutes.Test.GetNextScheduleDate)]
|
|
public async Task<IActionResult> GetNextScheduleDate([FromRoute] Guid applicationInWorkId, [FromRoute] DateTimeOffset lastRunDate)
|
|
{
|
|
var result = await esppScheduleTransformService.GetNextDateAsync(applicationInWorkId, lastRunDate);
|
|
return Ok(result);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Получить следующее расписание
|
|
/// </summary>
|
|
/// <param name="applicationInWorkId"></param>
|
|
/// <param name="lastRunDate"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(ApiRoutes.Test.GetNextSchedule)]
|
|
public async Task<IActionResult> GetNextSchedule([FromRoute] Guid applicationInWorkId, [FromRoute] DateTimeOffset lastRunDate)
|
|
{
|
|
var result = await esppScheduleTransformService.GetNextScheduleAsync(applicationInWorkId, lastRunDate);
|
|
return Ok(result);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Записать в кэш и получить обратно значение из кэша
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(ApiRoutes.Test.CreateCache)]
|
|
public async Task<IActionResult> CreateCache([FromBody] CaheRequestTest request)
|
|
{
|
|
await redisCacheService.SetCachedDataAsync(request.Key, request, TimeSpan.FromMinutes(1));
|
|
|
|
var fromCache = await redisCacheService.GetCachedDataAsync<CaheRequestTest>(request.Key);
|
|
|
|
return Ok(new { fromCache });
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Проверка, это рабочий день?
|
|
/// </summary>
|
|
/// <param name="date"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(ApiRoutes.Test.IsWorkDay)]
|
|
public async Task<IActionResult> IsWorkDay([FromQuery] DateOnly date)
|
|
{
|
|
return Ok(await weekendDayService.IsWorkDayAsync(date, true));
|
|
}
|
|
|
|
|
|
//[HttpGet(ApiRoutes.Test.GetWorkDay)]
|
|
//public async Task<IActionResult> GetWorkDay([FromRoute] DateTimeOffset date)
|
|
//{
|
|
// var result = await esppScheduleTransformService.GetWorkDayAsync(date);
|
|
|
|
// return Ok(result);
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
public class CaheRequestTest
|
|
{
|
|
public required string Key { get; set; }
|
|
|
|
public required string Value { get; set; }
|
|
}
|
|
}
|