public async Task <IEnumerable <ProductViewModel> > GetProductsAsync(IProductCallback productCallback = null) { var productsDto = await _marketplaceApi.GetProductsAsync(); var favorites = await _favoriteDAO.GetAllAsync(); var viewModelCollection = productsDto.Select(p => ProductMappings.FromDtoToViewModel.ProjectWith((vm) => CustomProjection(vm, productCallback, favorites), p)); return(viewModelCollection); }
public async Task <IEnumerable <CategoryViewModel> > GetCategoriesAsync(IProductCallback productCallback = null) { var categoryDtoCollection = await _marketplaceApi.GetCategoriesAsync(); var categoryCollection = categoryDtoCollection.Select(c => CategoryMappings.FromDtoToViewModel.Project(c)); var productColletion = await GetProductsAsync(productCallback); var offerDtoCollecion = await _marketplaceApi.GetOffersAsync(); categoryCollection = categoryCollection.Foreach(c => ComplementViewModel(c, productColletion, offerDtoCollecion)); return(categoryCollection); }
private static ProductViewModel CustomProjection(ProductViewModel vm, IProductCallback productCallback, IEnumerable <Favorite> favorites) { vm.IsFavorite = favorites.Any(f => f.Id == vm.Id); return(vm.RegisterCallback(productCallback)); }