2026-04-14 12:01:49 +10:00
|
|
|
|
using PARR.Domain.Enums;
|
2023-11-20 12:26:33 +10:00
|
|
|
|
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
|
|
|
|
|
|
{
|
2026-02-09 12:00:46 +10:00
|
|
|
|
var dateTime = DateTime.ParseExact(ExpirationDate, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
|
|
|
|
|
|
var utc = dateTime.AddHours(-EsppUserTimeZoneSettings.TimeZone);
|
2023-10-25 10:21:18 +10:00
|
|
|
|
|
2026-02-09 12:00:46 +10:00
|
|
|
|
//TODO: костыль!!!
|
|
|
|
|
|
// странное поведение даты, разница с еспп 13 часов.
|
|
|
|
|
|
// считаем часовой пояс УЗ ЕСПП 10 часов ЮТС
|
|
|
|
|
|
// в качестве костыля прибавляем 3
|
|
|
|
|
|
utc = dateTime.AddHours(-3);
|
2024-02-16 12:27:08 +10:00
|
|
|
|
|
2026-02-09 12:00:46 +10:00
|
|
|
|
return new DateTimeOffset(utc, new TimeSpan(0));
|
2023-10-25 10:21:18 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|
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:
|
|
|
|
|
|
return OrderStatusEnum.New;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-10-19 15:59:57 +10:00
|
|
|
|
}
|
2026-02-09 12:00:46 +10:00
|
|
|
|
}
|