using DomainResults.Common; using DataProviders.Collections; using Core.Abstractions; using DomainObjects.Documents; using DomainObjects.Enumerations; using WeatherForecast.Models.ShopCart.Requests; using WeatherForecast.Models.ShopCart.Responses; using DomainObjects.Documents.Sites; namespace WeatherForecast.Services { /// /// /// public interface IShopCartItemsService { /// /// /// /// /// /// (List?, IDomainResult) Get(List cartItems, GetShopCartItemsLocalizedRequestModel requestData); } /// /// /// public class ShopCartItemsService : ServiceBase, IShopCartItemsService { private readonly IShopCatalogDataProvider _shopCatalogDataProvider; private readonly IShopCartDataProvider _shopCartDataProvider; /// /// /// /// /// /// public ShopCartItemsService( ILogger logger, IShopCatalogDataProvider shopCatalogDataProvider, IShopCartDataProvider shopCartDataprovider ) : base(logger) { _shopCatalogDataProvider = shopCatalogDataProvider; _shopCartDataProvider = shopCartDataprovider; } /// /// /// /// /// /// public (List?, IDomainResult) Get(List cartItems, GetShopCartItemsLocalizedRequestModel requestData) { //var (count, getCountResult) = _shopCatalogDataProvider.Count(siteId); //if (!getCountResult.IsSuccess || count == null) // return (null, getCountResult); //var skip = (requestData.CurrentPage - 1) * requestData.ItemsPerPage; //var take = requestData.ItemsPerPage; //var totalPages = (int)Math.Ceiling((decimal)count / take); var items = new List(); foreach (var cartItem in cartItems) { var (item, result) = _shopCatalogDataProvider.Get(cartItem.Id, cartItem.Sku); if (!result.IsSuccess || item == null) { var delteResult = _shopCartDataProvider.Delete(cartItem.Id); if (!delteResult.IsSuccess) return (null, delteResult); } else items.Add(new GetShopCartItemLocalizedResponseModel(item, cartItem, requestData.Locale)); } return items.Count > 0 ? IDomainResult.Success(items) : IDomainResult.NotFound?>(); } } }