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); } }
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)); }
// 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); }
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); }
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)); }
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); }
/// <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))); }
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(); } } }
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(); } } }
public void Add(MealIngredient mealIngredient) { _appDbContext.Add(mealIngredient); _appDbContext.SaveChanges(); }
public void Delete(MealIngredient mealIngredient) { _appDbContext.Remove(mealIngredient); _appDbContext.SaveChanges(); }