public async Task <IActionResult> Create(int id, [Bind("Id,Name,TypeId")] Spoj spoj, ICollection <int> Elements) { if (Elements.Count >= Spoj.MinSizeOfElements) { _context.Add(spoj); if (ModelState.IsValid) { var list = new List <SpojElement>(); foreach (var elem in Elements) { //until the ui supports entering count for each element set it to 1 and later edit it list.Add(new SpojElement() { Count = 1, ElementId = elem, SpojId = spoj.Id }); } _context.AddRange(list); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } } ViewDataSet(); var spojVM = new SpojVM(); return(View(spojVM)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Name,TypeId")] Spoj spoj, ICollection <int> Elements) { if (id != spoj.Id) { return(NotFound()); } if (Elements.Count >= Spoj.MinSizeOfElements) { if (ModelState.IsValid) { try { var list = new List <SpojElement>(); //Add elements to compound foreach (var elem in Elements) { if (!SpojElementExists(spoj.Id, elem)) { //until the ui supports entering count for each element set it to 1 and later edit it list.Add(new SpojElement() { Count = 1, ElementId = elem, SpojId = spoj.Id }); } } //Remove elements from compound foreach (var elem2 in _context.SpojElement.Where(s => s.SpojId == spoj.Id).Select(s => s.Element).ToList()) { if (!Elements.Contains(elem2.Id)) { var spojElementToDelete = _context.SpojElement.FirstOrDefault(s => s.SpojId == spoj.Id && s.ElementId == elem2.Id); _context.Remove(spojElementToDelete); } } _context.AddRange(list); _context.Update(spoj); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SpojExists(spoj.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } } ViewDataSet(); var spojVM = new SpojVM(); return(View(spojVM)); }
public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var spoj = await _context.Spoj.Include(s => s.SpojElement).ThenInclude(s => s.Element).SingleOrDefaultAsync(m => m.Id == id); if (spoj == null) { return(NotFound()); } ViewDataSet(); var spojVM = new SpojVM() { Name = spoj.Name, TypeID = spoj.TypeId, Elements = spoj.SpojElement.Select(s => s.ElementId).ToList() }; return(View(spojVM)); }