private void Window_Loaded(object sender, RoutedEventArgs e) { try { //Turn off unused controls, will be activated by selecting recipes context = new GUIManager(); ClearFields(); titleLabel.Content = "Please select a recipe from the list."; //Setup database and listbox Recipe[] recipes = getRecipes(); recipeListBox.DataContext = recipes; //Testing RecipesCollection RecipesCollection rc = new RecipesCollection(); } catch (AccessViolationException ex) { var baseexception = ex.GetBaseException(); errorLabel.Content = "Attempted to search a protected file: " + baseexception.Message; } catch (Exception ex) { var baseexception = ex.GetBaseException(); errorLabel.Content = baseexception.Message; } }
public async Task <Recipe> SaveRecipe(Recipe recipe, string userEmail) { var db = _mongoClient.GetDatabase("BeerDb"); var mongoCollection = db.GetCollection <RecipesCollection>("Recipes"); var query = Builders <RecipesCollection> .Filter.Eq(f => f.UserEmail, userEmail); var recipesCollections = await mongoCollection.Find(query).ToListAsync(); RecipesCollection usersCollection = null; if (recipesCollections == null || recipesCollections.Count == 0) { usersCollection = CreateNewRecipeCollection(userEmail, mongoCollection); } else { //should only be one collection per user usersCollection = recipesCollections[0]; } var recipeToUpdate = usersCollection.Recipes.SingleOrDefault(f => f.Id == recipe.Id); if (recipeToUpdate == null) { recipe.Id = Guid.NewGuid(); } else { usersCollection.Recipes.Remove(recipeToUpdate); } usersCollection.Recipes.Add(recipe); var filter = Builders <RecipesCollection> .Filter.Eq(f => f.Id, usersCollection.Id); mongoCollection.ReplaceOne(filter, usersCollection); return(recipe); }
public async Task <OpResult> DeleteRecipe(Recipe recipe, string userEmail) { try { var db = _mongoClient.GetDatabase("BeerDb"); var mongoCollection = db.GetCollection <RecipesCollection>("Recipes"); var query = Builders <RecipesCollection> .Filter.Eq(f => f.UserEmail, userEmail); var recipesCollections = await mongoCollection.Find(query).ToListAsync(); RecipesCollection usersCollection = null; if (recipesCollections == null || recipesCollections.Count == 0) { return(new OpResult { Success = false, Message = "Recipe not found" }); } else { //should only be one collection per user usersCollection = recipesCollections[0]; } var recipeToUpdate = usersCollection.Recipes.SingleOrDefault(f => f.Id == recipe.Id); if (recipeToUpdate == null) { return(new OpResult { Success = false, Message = "Recipe not found" }); } else { usersCollection.Recipes.Remove(recipeToUpdate); var filter = Builders <RecipesCollection> .Filter.Eq(f => f.Id, usersCollection.Id); mongoCollection.ReplaceOne(filter, usersCollection); } return(new OpResult { Success = true, Message = "ok" }); } catch (Exception ex) { return(new OpResult { Success = false, Message = ex.Message }); } }
private RecipesCollection CreateNewRecipeCollection(string email, IMongoCollection <RecipesCollection> collection) { var col = new RecipesCollection { UserEmail = email, Recipes = new List <Recipe>() }; collection.InsertOne(col); return(col); }
public async Task <IEnumerable <Recipe> > GetAllRecipesForUser(string userEmail) { var db = _mongoClient.GetDatabase("BeerDb"); var query = Builders <RecipesCollection> .Filter.Eq(f => f.UserEmail, userEmail); var mongoCollection = db.GetCollection <RecipesCollection>("Recipes"); var recipeCollections = await mongoCollection.Find(query).ToListAsync(); RecipesCollection col = null; if (recipeCollections == null || recipeCollections.Count == 0) { col = CreateNewRecipeCollection(userEmail, mongoCollection); } else { //should only be one collection per user col = recipeCollections[0]; } return(col.Recipes); }