2023-11-20 12:26:33 +10:00
using PARR.Constants ;
using PARR.EsppApi.Settings ;
2023-10-25 10:21:18 +10:00
using System.Globalization ;
2023-10-24 12:10:19 +10:00
using System.Text.Json.Serialization ;
namespace PARR.EsppApi.Models
2023-10-19 15:59:57 +10:00
{
/// <summary>
/// Модель наряда из еспп
/// </summary>
public class EsppOrder
{
2023-10-24 12:10:19 +10:00
[JsonPropertyName("recordid")]
2023-10-23 13:50:43 +10:00
public string Number { get ; set ; } = string . Empty ;
2023-10-25 10:21:18 +10:00
2023-10-24 12:10:19 +10:00
[JsonPropertyName("assignment")]
2023-10-23 13:50:43 +10:00
public string? WorkGroup { get ; set ; }
2023-10-25 10:21:18 +10:00
2023-11-20 12:26:33 +10:00
/// <summary>
/// Статус наряда в формате строки
/// </summary>
2023-10-24 12:10:19 +10:00
[JsonPropertyName("status")]
public string Status { get ; set ; } = string . Empty ;
2023-10-25 10:21:18 +10:00
2023-10-24 12:10:19 +10:00
[JsonPropertyName("title")]
public string ShortName { get ; set ; } = string . Empty ;
2023-10-25 10:21:18 +10:00
2023-10-24 12:10:19 +10:00
[JsonPropertyName("templateName")]
public string TemplateName { get ; set ; } = string . Empty ;
2023-10-25 10:21:18 +10:00
[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 ) ;
2024-02-16 12:27:08 +10:00
//TODO: костыль!!!
// странное поведение даты, разница с еспп 13 часов.
// считаем часовой пояс У З ЕСПП 10 часов ЮТС
// в качестве костыля прибавляем 3
utc = dateTime . AddHours ( - 3 ) ;
2023-10-25 10:21:18 +10:00
return new DateTimeOffset ( utc , new TimeSpan ( 0 ) ) ;
}
}
2023-11-20 12:26:33 +10:00
/// <summary>
/// Статус наряда в формате OrderStatusEnum
/// </summary>
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 ;
}
}
}
2023-10-19 15:59:57 +10:00
}
}
2023-10-24 12:10:19 +10:00