using PARR.Constants;
using PARR.EsppApi.Settings;
using System.Globalization;
using System.Text.Json.Serialization;
namespace PARR.EsppApi.Models
{
///
/// Модель наряда из еспп
///
public class EsppOrder
{
[JsonPropertyName("recordid")]
public string Number { get; set; } = string.Empty;
[JsonPropertyName("assignment")]
public string? WorkGroup { get; set; }
///
/// Статус наряда в формате строки
///
[JsonPropertyName("status")]
public string Status { get; set; } = string.Empty;
[JsonPropertyName("title")]
public string ShortName { get; set; } = string.Empty;
[JsonPropertyName("templateName")]
public string TemplateName { get; set; } = string.Empty;
[JsonPropertyName("expirationDate")]
public string ExpirationDate { get; set; } = string.Empty;
public DateTimeOffset ExpirationDateUTC
{
get
{
var dateTime = DateTime.ParseExact(ExpirationDate, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
var utc = dateTime.AddHours(-EsppUserTimeZoneSettings.TimeZone);
//TODO: костыль!!!
// странное поведение даты, разница с еспп 13 часов.
// считаем часовой пояс УЗ ЕСПП 10 часов ЮТС
// в качестве костыля прибавляем 3
utc = dateTime.AddHours(-3);
return new DateTimeOffset(utc, new TimeSpan(0));
}
}
///
/// Статус наряда в формате OrderStatusEnum
///
public OrderStatusEnum StatusEnum
{
get
{
switch (Status.Trim())
{
case "1-Направлен в группу":
return OrderStatusEnum.New;
case "2-В работе":
return OrderStatusEnum.InWork;
case "3-Приостановлен":
return OrderStatusEnum.Stop;
case "4-Выполнен":
return OrderStatusEnum.Complete;
case "5-Закрыт":
return OrderStatusEnum.Closed;
default:
//logger.LogWarning($"Не смог распознать статус наряда, вернул значение по умполчанию: {OrderStatusEnum.New.ToString()}, входящее значение: {statusName}");
return OrderStatusEnum.New;
}
}
}
}
}