< Summary

Information
Class: Services.ApiServices.StudioApi.InterpartsPriceWithSupplierConverter
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ApiServices/StudioApi/InterpartsPriceConverter.cs
Line coverage
100%
Covered lines: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 64
Line coverage: 100%
Branch coverage
100%
Covered branches: 24
Total branches: 24
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ConvertToPreOrderItems(...)100%22100%
ConvertSingleItem(...)100%1818100%
GenerateItemHash(...)100%22100%
GenerateItemId(...)100%22100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ApiServices/StudioApi/InterpartsPriceConverter.cs

#LineLine coverage
 1using System.Globalization;
 2using Services.ApiServices.StudioApi.Models.Response;
 3using Services.ApiServices.TradesoftApi.Models.Response;
 4
 5namespace Services.ApiServices.StudioApi
 6{
 7    public static class InterpartsPriceWithSupplierConverter
 8    {
 9        public static List<PreOrderItem> ConvertToPreOrderItems(IEnumerable<PriceItem> sourceItems, string producerName)
 10        {
 211            if (sourceItems == null)
 112                return new List<PreOrderItem>();
 13
 114            return sourceItems
 215                .Where(item => item != null)
 116                .Select(item => ConvertSingleItem(item!, producerName))
 117                .Where(item => item != null)
 118                .Select(item => item!)
 119                .ToList();
 20        }
 21
 22        public static PreOrderItem? ConvertSingleItem(PriceItem source, string producerName)
 23        {
 724            if (source == null)
 125                return null;
 26
 627            string supplierName = source.Supplier?.Name ?? string.Empty;
 28
 629            string normalizedCurrency = CurrencyNormalizer.Normalize(source.Currency?.Name)
 630                                        ?? "RUB";
 31
 632            return new PreOrderItem
 633            {
 634                Caption = source.PriceText ?? string.Empty,
 635                Rest = (source.Amount ?? 0).ToString(CultureInfo.InvariantCulture),
 636                DeliveryDays = "0",
 637                DeliveryDaysMin = 0,
 638                DeliveryDaysMax = 0,
 639                CurrencyCode = normalizedCurrency,
 640                Producer = producerName ?? string.Empty,
 641                Code = source.PartCode?.Trim() ?? string.Empty,
 642                Price = (source.Cost ?? 0).ToString(CultureInfo.InvariantCulture),
 643                Direction = supplierName,
 644                ItemHash = GenerateItemHash(source),
 645                ItemId = GenerateItemId(source),
 646                SiteUrl = "http://studio-api.interparts.ru/",
 647                Title = "Studio 1",
 648                Description =
 649                    $"Поставщик: {supplierName}\n" +
 650                    $"Актуальная цена: {source.Cost:F2} {normalizedCurrency}\n"
 651            };
 52        }
 53
 54        private static string GenerateItemHash(PriceItem item)
 55        {
 656            return $"{item.PartCode}_{item.Supplier?.Name}".GetHashCode().ToString("X");
 57        }
 58
 59        private static string GenerateItemId(PriceItem item)
 60        {
 661            return $"{item.PartCode}";
 62        }
 63    }
 64}