示例#1
0
    public List <Recipe> GetSortedRecipes(GetRecipeFilter filter)
    {
        var query = _context.Recipes.AsNoTracking();

        if (filter.Ingredients.Length != 0)
        {
            List <int> recipeIds = GetRecipeIdsThatContainsIngredients(filter.Ingredients, filter.MinimumIngredientsMatch);

            query = query.Where(r => recipeIds.Contains(r.Id));
        }
        if (filter.CategoryId.HasValue)
        {
            query = query.Where(r => r.RecipeCategoryId == filter.CategoryId);
        }
        if (!String.IsNullOrEmpty(filter.Name))
        {
            query = query.Where(r => r.Name.Contains(filter.Name));
        }
        if ("rate".Equals(filter.Sort))
        {
            if ("asc".Equals(filter.SortOrder))
            {
                query = query.OrderBy(r => r.AvgRate);
            }
            else if ("desc".Equals(filter.SortOrder))
            {
                query = query.OrderByDescending(r => r.AvgRate);
            }
        }
        else if ("date".Equals(filter.Sort))
        {
            if ("asc".Equals(filter.SortOrder))
            {
                query = query.OrderBy(r => r.CreatedOn);
            }
            else if ("desc".Equals(filter.SortOrder))
            {
                query = query.OrderByDescending(r => r.CreatedOn);
            }
        }
        if (filter.Amount.HasValue && filter.Page.HasValue)
        {
            query = query.Skip(filter.Amount.Value * (filter.Page.Value - 1));
        }
        if (filter.Amount.HasValue)
        {
            query = query.Take(filter.Amount.Value);
        }

        return(query.ToList());
    }
    public List <Recipe> GetSortedRecipes(GetRecipeFilter filter)
    {
        var query = _context.Recipes.AsNoTracking();

        if (filter.CategoryId.HasValue)
        {
            query = query.Where(r => r.RecipeCategoryId == filter.CategoryId);
        }

        if ("rate".Equals(filter.Sort))
        {
            if ("asc".Equals(filter.SortOrder))
            {
                query = query.OrderBy(r => r.AvgRate);
            }
            else if ("desc".Equals(filter.SortOrder))
            {
                query = query.OrderByDescending(r => r.AvgRate);
            }
        }
        else if ("date".Equals(filter.Sort))
        {
            if ("asc".Equals(filter.SortOrder))
            {
                query = query.OrderBy(r => r.CreatedOn);
            }
            else if ("desc".Equals(filter.SortOrder))
            {
                query = query.OrderByDescending(r => r.CreatedOn);
            }
        }

        if (filter.Amount.HasValue && filter.Page.HasValue)
        {
            query = query.Skip(filter.Amount.Value * (filter.Page.Value - 1));
        }
        if (filter.Amount.HasValue)
        {
            query = query.Take(filter.Amount.Value);
        }

        return(query.ToList());
    }
示例#3
0
 public List <Recipe> GetSortedRecipes(GetRecipeFilter filter)
 {
     return(_recipesRepository.GetSortedRecipes(filter));
 }
示例#4
0
 public List <Recipe> GetSortedRecipes([FromBody] GetRecipeFilter filter)
 {
     return(_recipesService.GetSortedRecipes(filter));
 }