| | | 1 | | namespace Services.DataServices.OrderRollback; |
| | | 2 | | |
| | | 3 | | /// <summary>Одно изменяемое поле в превью восстановления.</summary> |
| | | 4 | | public sealed class OrderRollbackFieldChange |
| | | 5 | | { |
| | 26 | 6 | | public string Column { get; init; } = string.Empty; |
| | 20 | 7 | | public string DisplayName { get; init; } = string.Empty; |
| | | 8 | | |
| | | 9 | | /// <summary>Текущее значение (для отображения).</summary> |
| | 22 | 10 | | public string CurrentDisplay { get; init; } = "—"; |
| | | 11 | | |
| | | 12 | | /// <summary>Целевое значение после восстановления (для отображения).</summary> |
| | 22 | 13 | | public string TargetDisplay { get; init; } = "—"; |
| | | 14 | | |
| | | 15 | | /// <summary>Можно ли реально применить (FK-имя разрешилось, значение распарсилось).</summary> |
| | 31 | 16 | | public bool Applicable { get; init; } = true; |
| | | 17 | | |
| | | 18 | | /// <summary>Причина, по которой поле не будет восстановлено (если <see cref="Applicable"/> = false).</summary> |
| | 5 | 19 | | public string? Warning { get; init; } |
| | | 20 | | } |
| | | 21 | | |
| | | 22 | | /// <summary>Результат построения превью восстановления заказа к точке.</summary> |
| | | 23 | | public sealed class OrderRollbackPreview |
| | | 24 | | { |
| | | 25 | | public int OrderId { get; init; } |
| | | 26 | | public DateTime PointInTime { get; init; } |
| | | 27 | | |
| | | 28 | | /// <summary>Список полей, которые отличаются от текущего состояния (применимые и неприменимые).</summary> |
| | | 29 | | public List<OrderRollbackFieldChange> Changes { get; init; } = new(); |
| | | 30 | | |
| | | 31 | | /// <summary>Найден ли заказ.</summary> |
| | | 32 | | public bool OrderFound { get; init; } = true; |
| | | 33 | | |
| | | 34 | | public int ApplicableCount => Changes.Count(c => c.Applicable); |
| | | 35 | | public bool HasChanges => ApplicableCount > 0; |
| | | 36 | | } |
| | | 37 | | |
| | | 38 | | /// <summary>Результат применения восстановления.</summary> |
| | | 39 | | public sealed class OrderRollbackResult |
| | | 40 | | { |
| | | 41 | | public bool Success { get; init; } |
| | | 42 | | public int AppliedCount { get; init; } |
| | | 43 | | public string Message { get; init; } = string.Empty; |
| | | 44 | | |
| | | 45 | | public static OrderRollbackResult Fail(string message) => new() { Success = false, Message = message }; |
| | | 46 | | } |