//https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.1 public ActionResult Update(Guid id, [FromBody] EditChecklistRequest request) { var checklistInDb = _context.Checklists .Include(ci => ci.ChecklistChecklistItems) .ThenInclude(cci => cci.ChecklistItem) .SingleOrDefault(c => c.Id == id); if (checklistInDb == null) { return(NotFound()); } else { checklistInDb.Name = request.Checklist.Name; IList <Models.Inspections.ChecklistItem> selectedItems = new List <Models.Inspections.ChecklistItem>(); // Using plain for loop for parallel array data reference for (var i = 0; i < request.IsChecklistItemSelected.Count; i++) { if (request.IsChecklistItemSelected[i]) { Guid selectedItemId = request.ChecklistItems[i].Id; selectedItems.Add(_context.ChecklistItems.Single(ci => ci.Id == selectedItemId)); } } foreach (var item in checklistInDb.ChecklistChecklistItems.Select(joinItem => joinItem.ChecklistItem)) { _context.ChecklistItems.Attach(item); } checklistInDb.ChecklistChecklistItems = selectedItems.Select(ci => new ChecklistChecklistItem { Checklist = checklistInDb, ChecklistId = checklistInDb.Id, ChecklistItem = ci, ChecklistItemId = ci.Id }).ToList(); _context.SaveChanges(); return(NoContent()); } }
public ActionResult <EditChecklistRequest> EditById(Guid id) { var checklist = _context.Checklists .Include(c => c.ChecklistChecklistItems) .SingleOrDefault(c => c.Id == id); if (checklist == null) { return(NotFound()); } IList <Models.Inspections.ChecklistItem> checklistItems = _context.ChecklistItems.OrderBy(c => c.Name).ToList(); IList <bool> isChecklistItemSelected = checklistItems.Select(ci => checklist.ChecklistChecklistItems.Any(cci => cci.ChecklistItemId == ci.Id)).ToList(); var viewModel = new EditChecklistRequest { Checklist = Mapper.Map <ChecklistSummary>(checklist), ChecklistItems = Mapper.Map <IList <Models.Web.Checklists.ChecklistItem> >(checklistItems), IsChecklistItemSelected = isChecklistItemSelected }; return(Json(viewModel)); }