49 lines
2.3 KiB
C#
49 lines
2.3 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using PARR.EsppApi.Models;
|
|
using PARR.EsppApi.Models.Query;
|
|
using PARR.EsppApi.Settings;
|
|
|
|
namespace PARR.EsppApi
|
|
{
|
|
internal class EsppApiService : IEsppApiService
|
|
{
|
|
private readonly ILogger<EsppApiService> logger;
|
|
private readonly EsppOrderSettings esppOrderSettings;
|
|
private readonly EsppHttpService esppHttpService;
|
|
|
|
public EsppApiService(ILogger<EsppApiService> logger, EsppOrderSettings esppOrderSettings, EsppHttpService esppHttpService)
|
|
{
|
|
this.logger = logger;
|
|
this.esppOrderSettings = esppOrderSettings;
|
|
this.esppHttpService = esppHttpService;
|
|
}
|
|
|
|
public async Task<EsppResultBase<IEnumerable<EsppOrder>>> FindOrdersAsync(FindOrdersQuery query)
|
|
{
|
|
var conditions = new List<string>();
|
|
|
|
if (!string.IsNullOrEmpty(query.DescriptionContains))
|
|
conditions.Add($"description like \"*{query.DescriptionContains}*\"");
|
|
//if (!string.IsNullOrEmpty(query.TemplateNameContains))
|
|
// conditions.Add($"templateName like \"*{query.TemplateNameContains}*\"");
|
|
if (query.GenerateDateStart.HasValue)
|
|
conditions.Add($"open.time>='{query.GenerateDateStart.Value.Day}/{query.GenerateDateStart.Value.Month}/{query.GenerateDateStart.Value.Year}" +
|
|
$" {query.GenerateDateStart.Value.Hour}:{query.GenerateDateStart.Value.Minute}:{query.GenerateDateStart.Value.Second}'");
|
|
if (query.GenerateDateEnd.HasValue)
|
|
conditions.Add($"open.time<='{query.GenerateDateEnd.Value.Day}/{query.GenerateDateEnd.Value.Month}/{query.GenerateDateEnd.Value.Year}" +
|
|
$" {query.GenerateDateEnd.Value.Hour}:{query.GenerateDateEnd.Value.Minute}:{query.GenerateDateEnd.Value.Second}'");
|
|
|
|
if (conditions.Count < 1)
|
|
{
|
|
logger.LogDebug("Пришёл пустой запрос в EsppHttpService.FindOrdersAsync");
|
|
return new EsppResultBase<IEnumerable<EsppOrder>>(null, false);
|
|
}
|
|
|
|
var result = await esppHttpService.SendAsync<IEnumerable<EsppOrder>>($"<ROOT operation=\"GetTaskList\" returnFormat=\"json\">{{\"VIEW_QUERY\":\"{string.Join(" and ", conditions)}\"}}</ROOT>");
|
|
|
|
return result;
|
|
|
|
}
|
|
}
|
|
}
|