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; } } } } }