< Summary

Information
Class: Services.ParserServices.HelpDictEnum.YandexStatus
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ParserServices/HelpDictEnum/YandexStatus.cs
Line coverage
97%
Covered lines: 40
Uncovered lines: 1
Coverable lines: 41
Total lines: 63
Line coverage: 97.5%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
GetStatus(...)50%22100%
GetCancellationReason(...)75%5466.66%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ParserServices/HelpDictEnum/YandexStatus.cs

#LineLine coverage
 1namespace Services.ParserServices.HelpDictEnum
 2{
 3    public static class YandexStatus
 4    {
 15        public static Dictionary<string, string> OrderStatuses = new Dictionary<string, string>
 16        {
 17            { "PLACING", "Оформляется, подготовка к резервированию" },
 18            { "RESERVED", "Зарезервирован, но недооформлен" },
 19            { "UNPAID", "Оформлен, но еще не оплачен" },
 110            { "PROCESSING", "Находится в обработке" },
 111            { "DELIVERY", "Передан в службу доставки" },
 112            { "PICKUP", "Доставлен в пункт выдачи" },
 113            { "DELIVERED", "Получен покупателем" },
 114            { "CANCELLED", "Отменен" },
 115            { "PENDING", "Ожидает обработки со стороны продавца" },
 116            { "PARTIALLY_RETURNED", "Возвращен частично" },
 117            { "RETURNED", "Возвращен полностью" },
 118            { "UNKNOWN", "Неизвестный статус" }
 119        };
 20
 21        /// <summary>
 22        /// Расшифровка substatus для заказов в статусе CANCELLED — причина отмены.
 23        /// Пишется в <c>OzonPostingCancellation.ReasonTitle</c> и показывается в тултипе на странице заказов.
 24        /// </summary>
 125        public static readonly Dictionary<string, string> CancellationSubstatuses = new Dictionary<string, string>
 126        {
 127            { "RESERVATION_EXPIRED", "Покупатель не завершил оформление зарезервированного заказа" },
 128            { "USER_NOT_PAID", "Покупатель не оплатил заказ" },
 129            { "USER_UNREACHABLE", "Не удалось связаться с покупателем" },
 130            { "USER_CHANGED_MIND", "Покупатель отменил заказ по личным причинам" },
 131            { "USER_REFUSED_DELIVERY", "Покупателя не устроили условия доставки" },
 132            { "USER_REFUSED_PRODUCT", "Покупателю не подошёл товар" },
 133            { "USER_REFUSED_QUALITY", "Покупателя не устроило качество товара" },
 134            { "USER_WANTED_ANOTHER_PAYMENT_METHOD", "Покупатель хочет другой способ оплаты" },
 135            { "USER_WANTS_TO_CHANGE_ADDRESS", "Покупатель хочет изменить адрес доставки" },
 136            { "USER_WANTS_TO_CHANGE_DELIVERY_DATE", "Покупатель хочет изменить дату доставки" },
 137            { "USER_IDENTIFICATION_MISMATCH", "Документ покупателя не совпадает с данными в заказе" },
 138            { "SHOP_FAILED", "Магазин не может выполнить заказ" },
 139            { "REPLACING_ORDER", "Покупатель заменяет товар другим" },
 140            { "PICKUP_EXPIRED", "Закончился срок хранения заказа в пункте выдачи" },
 141            { "TOO_MANY_DELIVERY_DATE_CHANGES", "Заказ переносили слишком много раз" },
 142            { "TOO_LONG_DELIVERY", "Заказ доставляется слишком долго" },
 143            { "INCORRECT_PERSONAL_DATA", "Указаны неверные данные получателя" },
 144            { "PURCHASE_GROUP_THRESHOLD_NOT_REACHED_CANCELLED", "Не набралось нужное число покупок в групповой покупке" 
 145            { "TECHNICAL_ERROR", "Техническая ошибка на стороне Маркета" }
 146        };
 47
 48        public static string GetStatus(string key) =>
 649            OrderStatuses.TryGetValue(key, out var value) ? value : key;
 50
 51        /// <summary>
 52        /// Возвращает человекочитаемую причину отмены по substatus.
 53        /// Незнакомый код возвращается как есть — лучше показать код, чем ничего.
 54        /// </summary>
 55        public static string? GetCancellationReason(string? substatus)
 56        {
 457            if (string.IsNullOrWhiteSpace(substatus))
 058                return null;
 59
 460            return CancellationSubstatuses.TryGetValue(substatus, out var value) ? value : substatus;
 61        }
 62    }
 63}