|
|
|
@ -14,10 +14,10 @@ namespace Microsoft.eShopWeb.Web.Services |
|
|
|
{ |
|
|
|
private readonly IAsyncRepository<Basket> _basketRepository; |
|
|
|
private readonly IUriComposer _uriComposer; |
|
|
|
private readonly IRepository<CatalogItem> _itemRepository; |
|
|
|
private readonly IAsyncRepository<CatalogItem> _itemRepository; |
|
|
|
|
|
|
|
public BasketViewModelService(IAsyncRepository<Basket> basketRepository, |
|
|
|
IRepository<CatalogItem> itemRepository, |
|
|
|
IAsyncRepository<CatalogItem> itemRepository, |
|
|
|
IUriComposer uriComposer) |
|
|
|
{ |
|
|
|
_basketRepository = basketRepository; |
|
|
|
@ -34,30 +34,15 @@ namespace Microsoft.eShopWeb.Web.Services |
|
|
|
{ |
|
|
|
return await CreateBasketForUser(userName); |
|
|
|
} |
|
|
|
return CreateViewModelFromBasket(basket); |
|
|
|
return await CreateViewModelFromBasket(basket); |
|
|
|
} |
|
|
|
|
|
|
|
private BasketViewModel CreateViewModelFromBasket(Basket basket) |
|
|
|
private async Task<BasketViewModel> CreateViewModelFromBasket(Basket basket) |
|
|
|
{ |
|
|
|
var viewModel = new BasketViewModel(); |
|
|
|
viewModel.Id = basket.Id; |
|
|
|
viewModel.BuyerId = basket.BuyerId; |
|
|
|
viewModel.Items = basket.Items.Select(i => |
|
|
|
{ |
|
|
|
var itemModel = new BasketItemViewModel() |
|
|
|
{ |
|
|
|
Id = i.Id, |
|
|
|
UnitPrice = i.UnitPrice, |
|
|
|
Quantity = i.Quantity, |
|
|
|
CatalogItemId = i.CatalogItemId |
|
|
|
|
|
|
|
}; |
|
|
|
var item = _itemRepository.GetById(i.CatalogItemId); |
|
|
|
itemModel.PictureUrl = _uriComposer.ComposePicUri(item.PictureUri); |
|
|
|
itemModel.ProductName = item.Name; |
|
|
|
return itemModel; |
|
|
|
}) |
|
|
|
.ToList(); |
|
|
|
viewModel.Items = await GetBasketItems(basket.Items); ; |
|
|
|
return viewModel; |
|
|
|
} |
|
|
|
|
|
|
|
@ -73,5 +58,26 @@ namespace Microsoft.eShopWeb.Web.Services |
|
|
|
Items = new List<BasketItemViewModel>() |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private async Task<List<BasketItemViewModel>> GetBasketItems(IReadOnlyCollection<BasketItem> basketItems) |
|
|
|
{ |
|
|
|
var items = new List<BasketItemViewModel>(); |
|
|
|
foreach (var item in basketItems) |
|
|
|
{ |
|
|
|
var itemModel = new BasketItemViewModel |
|
|
|
{ |
|
|
|
Id = item.Id, |
|
|
|
UnitPrice = item.UnitPrice, |
|
|
|
Quantity = item.Quantity, |
|
|
|
CatalogItemId = item.CatalogItemId |
|
|
|
}; |
|
|
|
var catalogItem = await _itemRepository.GetByIdAsync(item.CatalogItemId); |
|
|
|
itemModel.PictureUrl = _uriComposer.ComposePicUri(catalogItem.PictureUri); |
|
|
|
itemModel.ProductName = catalogItem.Name; |
|
|
|
items.Add(itemModel); |
|
|
|
} |
|
|
|
|
|
|
|
return items; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|