Removing the GetById from IRepository
- removed it and updated everywhere, where it was called to use the async version
This commit is contained in:
@@ -5,7 +5,6 @@ namespace Microsoft.eShopWeb.ApplicationCore.Interfaces
|
||||
{
|
||||
public interface IRepository<T> where T : BaseEntity
|
||||
{
|
||||
T GetById(int id);
|
||||
T GetSingleBySpec(ISpecification<T> spec);
|
||||
IEnumerable<T> ListAll();
|
||||
IEnumerable<T> List(ISpecification<T> spec);
|
||||
|
||||
@@ -21,11 +21,6 @@ namespace Microsoft.eShopWeb.Infrastructure.Data
|
||||
_dbContext = dbContext;
|
||||
}
|
||||
|
||||
public virtual T GetById(int id)
|
||||
{
|
||||
return _dbContext.Set<T>().Find(id);
|
||||
}
|
||||
|
||||
public T GetSingleBySpec(ISpecification<T> spec)
|
||||
{
|
||||
return List(spec).FirstOrDefault();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user