Esempio n. 1
0
        public void CopyRecipe(int id)
        {
            var model = _mealRepository.GetMeal(id);

            var newMeal = new Meal()
            {
                Name     = model.Name,
                MealType = model.MealType,
                Who      = model.Who == Who.Cathal ? Who.Yasmin : Who.Cathal
            };
            int newid = _mealRepository.Add(newMeal);

            foreach (var item in model.MealIngredients)
            {
                //copy ingredient with meaure = null
                int newIngredientId = CopyIngredient(item.IngredientId);

                var newIngredient = new MealIngredient()
                {
                    IngredientId = newIngredientId,
                    MealId       = newid
                };
                _mealIngredientRepository.Add(newIngredient);
            }
        }
Esempio n. 2
0
        public IHttpActionResult PutMealIngredient(int id, MealIngredient mealIngredient)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != mealIngredient.Id_MealIngredient)
            {
                return(BadRequest());
            }

            db.Entry(mealIngredient).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MealIngredientExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 3
0
        // Node to Meal.Ingredients
        public List <MealIngredient> MealIngredientParser(HtmlNodeCollection nodes)
        {
            var mealIngredients = new List <MealIngredient>();

            foreach (var node in nodes)
            {
                var ingredientUnformatted = node.InnerText;

                // Remove extraneous descriptors
                if (ingredientUnformatted.Contains(','))
                {
                    var ingredientName  = ingredientUnformatted.Split(',')[0].Trim();
                    var ingredientToAdd = new Ingredient {
                        Name = ingredientName
                    };
                    var newMealIngredient = new MealIngredient {
                        Ingredient = ingredientToAdd
                    };
                    mealIngredients.Add(newMealIngredient);
                }
                else
                {
                    var ingredientName  = ingredientUnformatted.Trim();
                    var ingredientToAdd = new Ingredient {
                        Name = ingredientName
                    };
                    var newMealIngredient = new MealIngredient {
                        Ingredient = ingredientToAdd
                    };
                    mealIngredients.Add(newMealIngredient);
                }
            }
            return(mealIngredients);
        }
        public void AddMealToDatabase(string name)
        {
            // TO-DO implement error handling. Check if already in database
            MealPlan mealPlan = new MealPlan();
            Meal     newMeal  = new Meal()
            {
                MealName = NameInput
            };

            mealPlan.Meals.InsertOnSubmit(newMeal);
            mealPlan.SubmitChanges();

            IEnumerable <Meal> chosenMeal = from meal in mealPlan.Meals
                                            where meal.MealName == NameInput
                                            select meal;

            foreach (var meal in chosenMeal)
            {
                foreach (IngredientModel im in IngredientList)
                {
                    if (im.IsChosen)
                    {
                        MealIngredient newMealIngredient = new MealIngredient()
                        {
                            MealID = meal.MealID, IngredientID = im.ID
                        };
                        mealPlan.MealIngredients.InsertOnSubmit(newMealIngredient);
                        mealPlan.SubmitChanges();
                    }
                }
            }
        }
        internal MealIngredient FetchOne(object id)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                string     sqlQuery = "SELECT * FROM [dbo].[fridge_ingredient] WHERE fridge_ingredient_id = @Id";
                SqlCommand command  = new SqlCommand(sqlQuery, connection);
                command.Parameters.Add("@Id", System.Data.SqlDbType.Int).Value = id;
                connection.Open();
                SqlDataReader reader           = command.ExecuteReader();
                var           ingredientToEdit = new MealIngredient();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        ingredientToEdit.Id = reader.GetInt32(0);
                        var ingredientNameId = reader.GetInt32(1);
                        var ingredientUnitId = reader.GetInt32(2);
                        ingredientToEdit.Quantity = reader.GetDecimal(3);

                        var ingredientName = AssignIngredientName(ingredientNameId, connection);
                        ingredientToEdit.Name = ingredientName;
                        //Assign Ingredient Unit
                        var ingredientUnitName = AssignIngredientUnit(ingredientUnitId, connection);
                        ingredientToEdit.Unit = ingredientUnitName;
                    }
                }
                return(ingredientToEdit);
            }
        }
        public void ScaleQuantity_ByRatio_QuantityScaledCorrectly()
        {
            var sut = new MealIngredient(new IngredientId("Flour"), new Quantity(Unit.Grams, 100));

            var scaled = sut.ScaleQuantity(3);

            Assert.Equal(300, scaled.Quantity.Value);
        }
        public void ScaleQuantity_ToNewQuantity_QuantityScaledCorrectly()
        {
            var sut            = new MealIngredient(new IngredientId("Flour"), new Quantity(Unit.Grams, 100));
            var scaledQuantity = new Quantity(Unit.Grams, 300);

            var scaled = sut.ScaleQuantity(scaledQuantity);

            Assert.Equal(scaledQuantity, scaled.Quantity);
        }
Esempio n. 8
0
        public IHttpActionResult GetMealIngredient(int id)
        {
            MealIngredient mealIngredient = db.MealIngredient.Find(id);

            if (mealIngredient == null)
            {
                return(NotFound());
            }

            return(Ok(mealIngredient));
        }
        //SELECT queries are usually to get data for displaying
        //displayed Meal Ingredients are to be derived from qryMealIngredients

        //UPDATE/INSERT/DELETE queries are for modifying whats in the db
        //these queries will operate on tblMealIngredients

        private static MealIngredient ReaderToMealIngredient(OleDbDataReader reader)
        {
            MealIngredient mealIngredient = new MealIngredient();

            mealIngredient.ID       = (int)reader[QRY_MI_ID];
            mealIngredient.Name     = (string)reader[QRY_NAME];
            mealIngredient.Quantity = (int)reader[QRY_QUANTITY];
            mealIngredient.Price    = (decimal)reader[QRY_PRICE];
            mealIngredient.Subtotal = (decimal)reader[QRY_SUBTOTAL];
            mealIngredient.MealID   = (int)reader[QRY_MEAL];
            return(mealIngredient);
        }
Esempio n. 10
0
        public IHttpActionResult PostMealIngredient(MealIngredient mealIngredient)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.MealIngredient.Add(mealIngredient);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = mealIngredient.Id_MealIngredient }, mealIngredient));
        }
Esempio n. 11
0
        public IHttpActionResult DeleteMealIngredient(int id)
        {
            MealIngredient mealIngredient = db.MealIngredient.Find(id);

            if (mealIngredient == null)
            {
                return(NotFound());
            }

            db.MealIngredient.Remove(mealIngredient);
            db.SaveChanges();

            return(Ok(mealIngredient));
        }
        private bool AlreadyExists(MealIngredient mealIngredient)
        {
            ServiceOperation operation = CheckIfExists("tblMealIngredients", String.Format("MealID = {0} AND IngredientID = {1}", mealIngredient.MealID, mealIngredient.IngredientID));
            bool             exists    = true;

            if (operation.Success)
            {
                if (operation.Data.Count == 0)
                {
                    exists = false;
                }
            }

            return(exists);
        }
Esempio n. 13
0
        /// <summary>
        /// Event for when the "Save" Button is clicked.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            // Bundle data from page controls into object to send to DB.
            MealIngredient mealIngredient = new MealIngredient();

            try
            {
                int mealID = (int)Session["MealToEdit_ID"];
                mealIngredient.ID           = int.Parse(lblID.Text);
                mealIngredient.MealID       = mealID;
                mealIngredient.IngredientID = int.Parse(ddlIngredients.SelectedValue);
                mealIngredient.RequiredQty  = int.Parse(txtReqQty.Text);
            }
            catch (Exception ex)
            {
                lblInfo.ForeColor = System.Drawing.Color.Red;
                lblInfo.Text      = ex.Message;
                return;
            }

            // Send data to DB.
            CharityKitchenDataServiceSoapClient svc = new CharityKitchenDataServiceSoapClient();
            ServiceOperation operation = new ServiceOperation();

            if (mealIngredient.ID == 0)
            {
                operation = svc.AddMealIngredient(mealIngredient);
            }
            else
            {
                operation = svc.UpdateMealIngredient(mealIngredient);
            }

            if (operation.Success)
            {
                lblInfo.ForeColor = System.Drawing.Color.DarkGreen;
                lblInfo.Text      = operation.Message;

                // Refresh GridView if data was modified.
                GetMealIngredients(svc);
            }
            else
            {
                lblInfo.ForeColor = System.Drawing.Color.Red;
                lblInfo.Text      = operation.Message;
            }
        }
        public IActionResult Add(MealIngredientViewModel model)
        {
            var newModel = new Ingredient();

            newModel.ItemId  = model.ItemId;
            newModel.Measure = model.Measure;
            //newModel.Unit = model.Unit;

            var newId      = _ingredientRepository.Add(newModel);
            var newIMModel = new MealIngredient();

            newIMModel.IngredientId = newId;
            newIMModel.MealId       = model.MealId;


            _mealingredientRepository.Add(newIMModel);
            return(RedirectToAction("Index", "MealIngredient", new { id = newIMModel.MealId }));
        }
        public ServiceOperation AddMealIngredient(MealIngredient mealIngredient)
        {
            // If it doesn't exist, then build query and send to DB and return result.
            if (!AlreadyExists(mealIngredient))
            {
                string query = "INSERT INTO tblMealIngredients (MealID, IngredientID, RequiredQty) VALUES ({0}, {1}, {2})";
                return(SendNonQuery(String.Format(query, mealIngredient.MealID, mealIngredient.IngredientID, mealIngredient.RequiredQty)));
            }

            // If already exists, make new ServiceOperation reflecting that fact, and return it.
            ServiceOperation operation = new ServiceOperation();

            operation.Success   = false;
            operation.Message   = "Already Exists Error";
            operation.Exception = "Either that Ingredient already exists in this Meal, or some other unspecified error.";

            return(operation);
        }
        public ServiceOperation UpdateMealIngredient(MealIngredient mealIngredient)
        {
            string query = "UPDATE tblMealIngredients SET MealID={0}, IngredientID={1}, RequiredQty={2} WHERE MealIngredientID={3}";

            return(SendNonQuery(String.Format(query, mealIngredient.MealID, mealIngredient.IngredientID, mealIngredient.RequiredQty, mealIngredient.ID)));
        }
Esempio n. 17
0
        public async Task SeedAsync()
        {
            _context.Database.EnsureCreated();

            // Seed Units into the Db.
            if (!_context.Units.Any())
            {
                var jsonUnitDataFilepath = Path.Combine(_hosting.ContentRootPath, "Data/SeederData/unit.json");
                var jsonUnitData         = File.ReadAllText(jsonUnitDataFilepath);
                var unitsToSeed          = JsonConvert.DeserializeObject <IEnumerable <Unit> >(jsonUnitData);
                _context.Units.AddRange(unitsToSeed);
                _context.SaveChanges();
            }

            // Seed Ingredients from POY Data
            if (!_context.Ingredients.Any())
            {
                // Read Data
                var jsonPOYDataFilepath     = Path.Combine(_hosting.ContentRootPath, "Data/SeederData/pinchofyum.txt");
                var rawJsonPOYData          = File.ReadAllText(jsonPOYDataFilepath);
                var deserializedJsonPOYData = JsonConvert.DeserializeObject <IEnumerable <JsonMeal> >(rawJsonPOYData);

                //Cycle through each Meal and extract & add ingredients
                foreach (var meal in deserializedJsonPOYData)
                {
                    var newIngredients = meal.MealIngredients;

                    // Cycle through each meal ingredient and add ingredient to DB if it doesn't exist

                    foreach (var ingredient in newIngredients)
                    {
                        var formattedIngredientString = ingredient.Trim();
                        var ingredientExists          = _context.Ingredients
                                                        .Any(n => n.Name == formattedIngredientString);

                        if (ingredientExists == false)
                        {
                            var ingredientToAdd = new Ingredient();
                            ingredientToAdd.Name = formattedIngredientString;
                            _context.Add(ingredientToAdd);
                            _context.SaveChanges();
                        }
                    }
                }
            }

            //Seed Meals from POY Data
            if (!_context.Meals.Any())
            {
                // Read Data
                var jsonPOYDataFilepath     = Path.Combine(_hosting.ContentRootPath, "Data/SeederData/pinchofyum.txt");
                var rawJsonPOYData          = File.ReadAllText(jsonPOYDataFilepath);
                var deserializedJsonPOYData = JsonConvert.DeserializeObject <IEnumerable <JsonMeal> >(rawJsonPOYData);

                //Cycle through each Meal and extract & add ingredients
                foreach (var meal in deserializedJsonPOYData)
                {
                    var newMeal = new Meal();
                    newMeal.Name         = meal.Name;
                    newMeal.Description  = meal.Description;
                    newMeal.Instructions = meal.Instructions;
                    newMeal.URL          = meal.URL;
                    newMeal.Thumbnail    = meal.Thumbnail;
                    newMeal.Editable     = true;

                    // Cycle through each meal ingredient and add ingredient to DB if it doesn't exist
                    var mealIngredients = new List <MealIngredient>();
                    var newIngredients  = meal.MealIngredients;
                    foreach (var ingredient in newIngredients)
                    {
                        var newMealIngredient = new MealIngredient();
                        var newIngredient     = _context.Ingredients
                                                .Where(n => n.Name == ingredient.Trim())
                                                .FirstOrDefault();
                        newMealIngredient.Ingredient = newIngredient;
                        newMealIngredient.MealId     = newMeal.MealId;
                        mealIngredients.Add(newMealIngredient);
                    }
                    newMeal.MealIngredients = mealIngredients;
                    _context.Meals.Add(newMeal);
                    _context.SaveChanges();
                }
            }
        }
Esempio n. 18
0
        public async Task PopulateDbWithMeal(int pagesCount)
        {
            var mealBag = new ConcurrentBag <MealDto>();

            List <string> allCategories = new List <string>
            {
                "christmas",
                "everyday",
                "quick-easy",
                "cakes-baking",
                "seasonal",
                "dishe",
                "dinner-ideas",
                "budget",
                "cocktails-drinks",
            };

            foreach (var category in allCategories)
            {
                string link = "https://www.bbcgoodfood.com/recipes/category/all-" + category;

                Parallel.For(1, pagesCount, (pageNumber) =>
                {
                    try
                    {
                        var allMeal = this.GetCategoryWithAllSubCategories(link, pageNumber);

                        Parallel.ForEach(allMeal, (meal) =>
                        {
                            mealBag.Add(meal);
                        });
                    }
                    catch (Exception)
                    {
                    }
                });

                foreach (var meal in mealBag)
                {
                    var categoryId = await this.GetOrCreateCategoryAsync(meal.CategoryName, meal.CategoryDescription);

                    var subCategoryId = await this.GetOrCreateSubCategoryAsync(meal.SubCategoryName, meal.SubCategoryDescription);

                    var mealExist = this.mealRepository.AllAsNoTracking().Any(x => x.Name == meal.Name);

                    if (mealExist)
                    {
                        continue;
                    }

                    var newMeal = new Meal
                    {
                        Name                = meal.Name,
                        ImageUrl            = meal.ImageUrl,
                        PreparationTime     = meal.PreparationTime,
                        CookingTime         = meal.CookingTime,
                        SkillLevel          = meal.SkillLevel,
                        PortionCount        = meal.PortionCount,
                        KCal                = meal.KCal,
                        Fat                 = meal.Fat,
                        Saturates           = meal.Saturates,
                        Carbs               = meal.Carbs,
                        Sugars              = meal.Sugars,
                        Fibre               = meal.Fibre,
                        Protein             = meal.Protein,
                        Salt                = meal.Salt,
                        Description         = meal.Description,
                        MethodOfPreparation = meal.MethodOfPreparation,
                        CategoryId          = categoryId,
                        SubCategoryId       = subCategoryId,
                    };

                    await this.mealRepository.AddAsync(newMeal);

                    await this.mealRepository.SaveChangesAsync();

                    foreach (var ingredientNameAndQuantity in meal.Ingredients)
                    {
                        var ingridientId = await this.GetOrCreateIngredientAsync(ingredientNameAndQuantity);

                        var mealIngredient = new MealIngredient
                        {
                            IngredientId = ingridientId,
                            MealId       = newMeal.Id,
                        };

                        await this.mealIngredientRepository.AddAsync(mealIngredient);

                        await this.mealIngredientRepository.SaveChangesAsync();
                    }

                    var image = new Image
                    {
                        RemoteImageUrl = meal.ImageUrl,
                        MealId         = newMeal.Id,
                    };

                    await this.imageRepository.AddAsync(image);

                    await this.imageRepository.SaveChangesAsync();
                }
            }
        }
Esempio n. 19
0
 public void Add(MealIngredient mealIngredient)
 {
     _appDbContext.Add(mealIngredient);
     _appDbContext.SaveChanges();
 }
Esempio n. 20
0
 public void Delete(MealIngredient mealIngredient)
 {
     _appDbContext.Remove(mealIngredient);
     _appDbContext.SaveChanges();
 }