public virtual async Task <decimal> GetTotalSumAsync(int sessionId) { var existingBasket = await _basketRepository.GetBasketBySessionIdAsync(sessionId); await _cartPriceRuleService.ApplyPriceRulesAsync(existingBasket); var totalSum = existingBasket.BasketItems.Sum(basketItem => basketItem.Product.Price * basketItem.Quantity); var discountSum = existingBasket.Discounts.Sum(discount => discount.Price); existingBasket.TotalSum = totalSum - discountSum; _basketLogger.LogBasket(existingBasket); return(existingBasket.TotalSum); }