< Summary

Class:WinSolutions.Sveta.Server.Data.DataModel.Extensions.PriceTrendDetailExtensions
Assembly:WinSolutions.Sveta.Server
File(s):/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Extensions/PriceTrendDetailExtensions.cs
Covered lines:9
Uncovered lines:9
Coverable lines:18
Total lines:51
Line coverage:50% (9 of 18)
Covered branches:5
Total branches:16
Branch coverage:31.2% (5 of 16)

Metrics

MethodLine coverage Branch coverage
Actual(...)100%66.66%
Discount(...)0%0%
DiscountForDisplay(...)100%50%
DiscountForLabelDisplay(...)0%0%

File(s)

/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Extensions/PriceTrendDetailExtensions.cs

#LineLine coverage
 1using Clave.Expressionify;
 2using System;
 3using System.Collections.Generic;
 4using System.Linq;
 5using System.Text;
 6using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 7
 8namespace WinSolutions.Sveta.Server.Data.DataModel.Extensions
 9{
 10    public static class PriceTrendDetailExtensions
 11    {
 12        /// <summary>
 13        /// Возвращает актуальную переоценку из списка переоценок
 14        /// </summary>
 15        /// <param name="warehouseId">Id склада-владельца</param>
 16        [Expressionify]
 17        public static PriceTrendDetail Actual(this IEnumerable<PriceTrendDetail> priceTrendDetails, long departmentId) =
 68118            priceTrendDetails.Where(x =>
 136219                    !x.IsDeleted
 136220                    && x.PriceTrend.SupplierDepartmentId == departmentId
 136221                    && x.PriceTrend.BeginDate <= DateTime.Now)
 136222                .OrderByDescending(x => x.PriceTrend.BeginDate)
 68123                .FirstOrDefault();
 24
 25        /// <summary>
 26        /// Скидка в процентах для PriceNew от цены PriceOld
 27        /// </summary>
 28        public static int Discount(this PriceTrendDetail priceTrendDetail)
 029        {
 030            var result = priceTrendDetail.PriceOld.HasValue && priceTrendDetail.PriceOld.Value > priceTrendDetail.PriceN
 031                ? (int)Math.Round(100 - 100 * priceTrendDetail.PriceNew / priceTrendDetail.PriceOld.Value, 0)
 032                : 0;
 033            return result <= 99 ? result : 99;
 034        }
 35
 36        public static int? DiscountForDisplay(this PriceTrendDetail priceTrendDetail)
 15437        {
 15438            return priceTrendDetail.Discount.GetValueOrDefault() > 0 ? priceTrendDetail.Discount : (int?)null;
 15439        }
 40
 41        /// <summary>
 42        /// Вычисление скидки для отображения ярлыка. Если 0 - ярлык на витрине не будет отображаться
 43        /// </summary>
 44        /// <param name="priceTrendDetail">Детали переоценки</param>
 45        /// <returns>Возвращает значение скидки, если скидка >= 20, иначе 0</returns>
 46        public static int? DiscountForLabelDisplay(this PriceTrendDetail priceTrendDetail)
 047        {
 048            return priceTrendDetail.Discount.GetValueOrDefault() >= 20 ? priceTrendDetail.Discount : 0;
 049        }
 50    }
 51}