public RecipeResult CreateRecipe(AuthIdentity identity, Recipe recipe) { using (var session = GetSession()) { using (var transaction = session.BeginTransaction()) { // Create Recipe var dbRecipe = new Models.Recipes { Title = recipe.Title, Description = recipe.Description, CookTime = recipe.CookTime, PrepTime = recipe.PrepTime, Credit = recipe.Credit, CreditUrl = recipe.CreditUrl, DateEntered = recipe.DateEntered, ImageUrl = recipe.ImageUrl, Rating = recipe.AvgRating, ServingSize = recipe.ServingSize, Steps = recipe.Method }; session.Save(dbRecipe); // Create Ingredients short displayOrder = 0; recipe.Ingredients.ForEach(i => { var dbIngredient = new RecipeIngredients { Recipe = dbRecipe, Ingredient = Models.Ingredients.FromId(i.Ingredient.Id), IngredientForm = (i.Form != null ? IngredientForms.FromId(i.Form.FormId) : null), Qty = (i.Amount != null ? (float?) i.Amount.SizeHigh : null), QtyLow = (i.Amount != null ? (float?) i.Amount.SizeLow : null), Unit = (i.Amount != null ? i.Amount.Unit : Units.Unit), Section = i.Section, DisplayOrder = ++displayOrder }; session.Save(dbIngredient); }); // Create RecipeMetadata var dbMetadata = new RecipeMetadata { Recipe = dbRecipe, DietGlutenFree = recipe.Tags.HasTag(RecipeTag.GlutenFree), DietNoAnimals = recipe.Tags.HasTag(RecipeTag.NoAnimals), DietNomeat = recipe.Tags.HasTag(RecipeTag.NoMeat), DietNoPork = recipe.Tags.HasTag(RecipeTag.NoPork), DietNoRedMeat = recipe.Tags.HasTag(RecipeTag.NoRedMeat), MealBreakfast = recipe.Tags.HasTag(RecipeTag.Breakfast), MealDessert = recipe.Tags.HasTag(RecipeTag.Dessert), MealDinner = recipe.Tags.HasTag(RecipeTag.Dinner), MealLunch = recipe.Tags.HasTag(RecipeTag.Lunch), NutritionLowCalorie = recipe.Tags.HasTag(RecipeTag.LowCalorie), NutritionLowCarb = recipe.Tags.HasTag(RecipeTag.LowCarb), NutritionLowFat = recipe.Tags.HasTag(RecipeTag.LowFat), NutritionLowSodium = recipe.Tags.HasTag(RecipeTag.LowSodium), NutritionLowSugar = recipe.Tags.HasTag(RecipeTag.LowSugar), SkillCommon = recipe.Tags.HasTag(RecipeTag.Common), SkillEasy = recipe.Tags.HasTag(RecipeTag.Easy), SkillQuick = recipe.Tags.HasTag(RecipeTag.Quick) }; session.Save(dbMetadata); transaction.Commit(); return new RecipeResult { RecipeCreated = true, NewRecipeId = dbRecipe.RecipeId }; } } }
private static IQueryOver<Recipes, Recipes> SearchByTaste( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { if (query.Taste.MildToSpicy != SpicinessLevel.Medium) { recipesQuery = query.Taste.MildToSpicy < SpicinessLevel.Medium ? recipesQuery.Where(() => metadata.TasteMildToSpicy <= query.Taste.Spiciness) .OrderBy(() => metadata.TasteMildToSpicy) .Asc() : recipesQuery.Where(() => metadata.TasteMildToSpicy >= query.Taste.Spiciness) .OrderBy(() => metadata.TasteMildToSpicy) .Desc(); } if (query.Taste.SavoryToSweet != SweetnessLevel.Medium) { recipesQuery = query.Taste.SavoryToSweet < SweetnessLevel.Medium ? recipesQuery.Where(() => metadata.TasteSavoryToSweet <= query.Taste.Sweetness) .OrderBy(() => metadata.TasteSavoryToSweet) .Asc() : recipesQuery.Where(() => metadata.TasteSavoryToSweet >= query.Taste.Sweetness) .OrderBy(() => metadata.TasteSavoryToSweet) .Desc(); } return recipesQuery; }
private static RecipeMetadata CreateRecipeMetadata(Recipe recipe, Recipes databaseRecipe) { var databaseMetadata = new RecipeMetadata { Recipe = databaseRecipe, DietGlutenFree = recipe.Tags.HasTag(RecipeTag.GlutenFree), DietNoAnimals = recipe.Tags.HasTag(RecipeTag.NoAnimals), DietNomeat = recipe.Tags.HasTag(RecipeTag.NoMeat), DietNoPork = recipe.Tags.HasTag(RecipeTag.NoPork), DietNoRedMeat = recipe.Tags.HasTag(RecipeTag.NoRedMeat), MealBreakfast = recipe.Tags.HasTag(RecipeTag.Breakfast), MealDessert = recipe.Tags.HasTag(RecipeTag.Dessert), MealDinner = recipe.Tags.HasTag(RecipeTag.Dinner), MealLunch = recipe.Tags.HasTag(RecipeTag.Lunch), NutritionLowCalorie = recipe.Tags.HasTag(RecipeTag.LowCalorie), NutritionLowCarb = recipe.Tags.HasTag(RecipeTag.LowCarb), NutritionLowFat = recipe.Tags.HasTag(RecipeTag.LowFat), NutritionLowSodium = recipe.Tags.HasTag(RecipeTag.LowSodium), NutritionLowSugar = recipe.Tags.HasTag(RecipeTag.LowSugar), SkillCommon = recipe.Tags.HasTag(RecipeTag.Common), SkillEasy = recipe.Tags.HasTag(RecipeTag.Easy), SkillQuick = recipe.Tags.HasTag(RecipeTag.Quick) }; return databaseMetadata; }
private static IQueryOver<Recipes, Recipes> SearchBySkill( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { if (query.Skill.Common) { recipesQuery = recipesQuery.Where(() => metadata.SkillCommon).OrderBy(() => metadata.Commonality).Desc(); } if (query.Skill.Easy) { recipesQuery = recipesQuery.Where(() => metadata.SkillEasy); } if (query.Skill.Quick) { recipesQuery = recipesQuery.Where(() => metadata.SkillQuick); } return recipesQuery; }
private static IQueryOver<Recipes, Recipes> SearchByNutrition( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { if (query.Nutrition.LowCalorie) { recipesQuery = recipesQuery.Where(() => metadata.NutritionLowCalorie); } if (query.Nutrition.LowCarb) { recipesQuery = recipesQuery.Where(() => metadata.NutritionLowCarb); } if (query.Nutrition.LowFat) { recipesQuery = recipesQuery.Where(() => metadata.NutritionLowFat); } if (query.Nutrition.LowSodium) { recipesQuery = recipesQuery.Where(() => metadata.NutritionLowSodium); } if (query.Nutrition.LowSugar) { recipesQuery = recipesQuery.Where(() => metadata.NutritionLowSugar); } return recipesQuery; }
private static IQueryOver<Recipes, Recipes> SearchByMeal( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { if (query.Meal != MealFilter.All) { if (query.Meal == MealFilter.Breakfast) { recipesQuery = recipesQuery.Where(() => metadata.MealBreakfast); } if (query.Meal == MealFilter.Dessert) { recipesQuery = recipesQuery.Where(() => metadata.MealDessert); } if (query.Meal == MealFilter.Dinner) { recipesQuery = recipesQuery.Where(() => metadata.MealDinner); } if (query.Meal == MealFilter.Lunch) { recipesQuery = recipesQuery.Where(() => metadata.MealLunch); } } return recipesQuery; }
private static IQueryOver<Recipes, Recipes> SearchByHighResolutionPhotos( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { int highResolution = 1024 * 768; if (query.Photos == PhotoFilter.HighRes) { recipesQuery = recipesQuery.Where(() => metadata.PhotoRes >= highResolution); } return recipesQuery; }
private static IQueryOver<Recipes, Recipes> SearchByDiet( RecipeQuery query, IQueryOver<Recipes, Recipes> recipesQuery, RecipeMetadata metadata) { if (query.Diet.GlutenFree) { recipesQuery = recipesQuery.Where(() => metadata.DietGlutenFree); } if (query.Diet.NoAnimals) { recipesQuery = recipesQuery.Where(() => metadata.DietNoAnimals); } if (query.Diet.NoMeat) { recipesQuery = recipesQuery.Where(() => metadata.DietNomeat); } if (query.Diet.NoPork) { recipesQuery = recipesQuery.Where(() => metadata.DietNoPork); } if (query.Diet.NoRedMeat) { recipesQuery = recipesQuery.Where(() => metadata.DietNoRedMeat); } return recipesQuery; }