public async Task <PagedCollection <FavouritesModel> > ListFavourites(string userName, int pageNumber, int itemsPerPage)
        {
            var rootItems = await _favouritesRepository.GetUserFavouritesAsync(userName);

            var items          = _mapper.Map <IEnumerable <Favourites>, IEnumerable <FavouritesModel> >(rootItems);
            var paginatedItems = PagedCollection <FavouritesModel> .Create(items, pageNumber, itemsPerPage);

            return(paginatedItems);
        }
        public async Task <IndexedResult <IEnumerable <MealPreviewVM> > > GetFavouriteMealsAsync(
            Guid userId,
            IndexedResult <MealPreviewVM> lastReturned,
            int takeAmount = Constants.DEFAULT_DB_TAKE_VALUE
            )
        {
            var usersFavourites = await _favouriteRepository.GetUserFavouritesAsync(userId, lastReturned?.Index ?? 0, takeAmount);

            return(new IndexedResult <IEnumerable <MealPreviewVM> >()
            {
                Result = _mapper.Map <IEnumerable <MealPreviewVM> >(usersFavourites),
                Index = lastReturned?.Index ?? 0 + usersFavourites.Count,
                IsLast = usersFavourites.Count != takeAmount
            });
        }
Esempio n. 3
0
        public async Task <IndexedResult <IEnumerable <MealPreviewVM> > > SearchMealsAsync(
            Guid userId,
            IndexedResult <MealSearchVM> searchArgumentsVM,
            int takeAmount = Constants.DEFAULT_DB_TAKE_VALUE)
        {
            var searchTask = _mealRepository.GetMealPreviewsByQueryAsync(
                searchArgumentsVM.Result.Query,
                searchArgumentsVM.Index,
                takeAmount
                );

            var favouritesTask = _favouritesRepository.GetUserFavouritesAsync(
                userId,
                0,
                int.MaxValue,
                searchArgumentsVM.Result.Query);

            await Task.WhenAll(searchTask, favouritesTask);

            if (!searchTask.Result.Any())
            {
                return(new IndexedResult <IEnumerable <MealPreviewVM> >
                {
                    Result = Enumerable.Empty <MealPreviewVM>(),
                    Index = 0,
                    IsLast = true
                });
            }

            var searchResultVM = _mapper.Map <IEnumerable <MealPreviewVM> >(searchTask.Result);

            SetIsFavouriteField(userId, favouritesTask.Result, searchResultVM);

            return(new IndexedResult <IEnumerable <MealPreviewVM> >
            {
                Result = searchResultVM,
                Index = searchArgumentsVM.Index + searchTask.Result.Count,
                IsLast = searchTask.Result.Count != takeAmount
            });
        }
Esempio n. 4
0
        public async Task <IndexedResult <IEnumerable <MealPreviewVM> > > GetUsersMealsPreviewsAsync(
            Guid userId,
            IndexedResult <MealPreviewVM> lastReturned,
            int takeAmount = Constants.DEFAULT_DB_TAKE_VALUE
            )
        {
            var userMealPreviews = await _mealRepository.GetMealPreviewsAsync(userId, lastReturned?.Index ?? 0, takeAmount);

            var userFavourites = await _favouritesRepository.GetUserFavouritesAsync(
                userId,
                0,
                int.MaxValue);

            var mealPreviewsVM = _mapper.Map <IEnumerable <MealPreviewVM> >(userMealPreviews);

            SetIsFavourite(userFavourites, mealPreviewsVM);

            return(new IndexedResult <IEnumerable <MealPreviewVM> >()
            {
                Result = mealPreviewsVM,
                Index = (lastReturned?.Index ?? 0) + userMealPreviews.Count,
                IsLast = userMealPreviews.Count != takeAmount
            });
        }