public async Task <IActionResult> Edit(int id, [Bind("AssemblyRecipeId,RecipeName,ItemID")] AssemblyRecipe assemblyRecipe) { if (id != assemblyRecipe.AssemblyRecipeId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(assemblyRecipe); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AssemblyRecipeExists(assemblyRecipe.AssemblyRecipeId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(assemblyRecipe)); }
/// <summary> /// This is a recursive method to stop an assembly from adding an assembly that contains the first assembly /// </summary> /// <param name="assemblyRecipe"></param> /// <param name="recipeLines"></param> /// <returns></returns> private bool notCircular(IList <RecipeLine> recipeLines) { //check loops...WORKING foreach (var line in recipeLines) { //omg it finally works correctly! if (line.ItemId == AssemblyRecipe.ItemId) { return(false); } Item myItem = _context.Items.FirstOrDefault(m => m.ItemId == line.ItemId); AssemblyRecipe assembly = _context.AssemblyRecipes.FirstOrDefault(r => r.AssemblyRecipeId == myItem.AssemblyRecipeId); if (myItem.IsAssembled) { var lines = from i in _context.RecipeLines where i.AssemblyRecipeId == myItem.AssemblyRecipeId select i; IList <RecipeLine> newLines = lines.ToList(); //RECURSION!!!! return(notCircular(newLines)); } } return(true); }
public async Task <IActionResult> OnGetAsync(int?id) { if (id == null) { return(NotFound()); } AssemblyRecipe = await _context.AssemblyRecipes .Include(a => a.Item).FirstOrDefaultAsync(m => m.AssemblyRecipeId == id); if (AssemblyRecipe == null) { return(NotFound()); } ViewData["ItemId"] = new SelectList(_context.Items, "ItemId", "ItemName"); return(Page()); }
public async Task <IActionResult> Create(AssemblyRecipeViewModel newVM) { //[Bind("AssemblyRecipeId,RecipeName,ItemID")] AssemblyRecipe assemblyRecipe if (ModelState.IsValid) { //Create new AssemblyRecipe object var newItem = new AssemblyRecipe(); newItem.ItemID = newVM.itemID; var newRecipe = new AssemblyRecipe(); newRecipe.RecipeName = newVM.RecipeName; //Retrieve the item that it is based on var itemID = await _context.Item.FirstOrDefaultAsync(i => i.ItemId == newVM.itemID); var recipeName = await _context.AssemblyRecipe.FirstOrDefaultAsync(i => i.RecipeName == newVM.RecipeName); //Make the item an assembly item itemID.IsAssemblyItem = true; newItem.RecipeName = itemID.ItemName; newItem.RecipeLines = newVM.recipeLines; //newRecipe.AssemblyRecipeId = newVM.AssemblyRecipeID; newRecipe.RecipeName = newVM.RecipeName; newRecipe.ItemID = newVM.itemID; //newRecipe.AssemblyRecipeId = recipeName.AssemblyRecipeId; //newRecipe.RecipeName = recipeName.RecipeName; //_context.Add(newItem); _context.Add(newRecipe); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //return View(newVM.AssemblyRecipe); return(View(newVM)); }
public async Task <IActionResult> OnPostAsync(int?id) { if (id == null) { return(NotFound()); } Item = await _context.Items.FindAsync(id); //get all recipe lines that contain this item var lines = from i in _context.RecipeLines where i.ItemId == Item.ItemId select i; RecipeLines = await lines.ToListAsync(); if (Item != null) { //if its an assemble item then delete its recipe first if (Item.IsAssembled) { AssemblyRecipe = await _context.AssemblyRecipes.FindAsync(Item.AssemblyRecipeId); _context.AssemblyRecipes.Remove(AssemblyRecipe); await _context.SaveChangesAsync(); } //delete all recipe lines that contained this item foreach (var line in RecipeLines) { _context.RecipeLines.Remove(line); await _context.SaveChangesAsync(); } //delete the item _context.Items.Remove(Item); await _context.SaveChangesAsync(); } return(RedirectToPage("/Inventory")); }