Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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
                });
            }
        }
Esempio n. 4
0
        private RecipesCollection CreateNewRecipeCollection(string email, IMongoCollection <RecipesCollection> collection)
        {
            var col = new RecipesCollection
            {
                UserEmail = email,
                Recipes   = new List <Recipe>()
            };

            collection.InsertOne(col);
            return(col);
        }
Esempio n. 5
0
        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);
        }