public async Task <IActionResult> EdycjaFormularza(int id, [Bind("IdForm, fields")] FormContainsField formContainsField) { if (ModelState.IsValid) { //pobranie wszystkich powiązań pól z edytowanym formularzem var FormField = _context.FormField.Where(ff => ff.IdForm == formContainsField.IdForm).Select(ff => ff.IdField).ToList(); FormField formField; foreach (var key in formContainsField.fields) { if (key.ContainsField == true && !FormField.Contains(key.IdField)) //jeśli chcemy dodać pole { //którego jeszcze nie przypisano formField = new FormField { IdField = key.IdField, IdForm = (int)formContainsField.IdForm }; _context.Update(formField); await _context.SaveChangesAsync(); } // jeśli chcemy usunąć pole które już było przypisane else if (key.ContainsField == false && FormField.Contains(key.IdField)) { var IdDoUsuniecia = _context.FormField.Where(ff => ff.IdField == key.IdField && ff.IdForm == formContainsField.IdForm).Select(ff => ff.Id).ToList(); var doUsuniecia = await _context.FormField.FindAsync(IdDoUsuniecia[0]); _context.FormField.Remove(doUsuniecia); await _context.SaveChangesAsync(); } } return(RedirectToAction(nameof(ListaFormularzy))); } return(View(formContainsField)); }
// GET: Forms/Edit/5 public IActionResult EdycjaFormularza(int?id) { if (id == null) { return(NotFound()); } IdFieldBool idFieldBool; //pobranie do listy wszystkich pól(id i nazwę) var allFields = _context.Field.Select(af => new { af.Id, af.Name }).ToList(); //pobranie do listy wszystkich przypisań pól które są przypisane do formularza var fieldsInForm = _context.FormField.Where(ff => ff.IdForm == id).Select(ff => ff.IdField).ToList(); //tworzenie instancji modelu potrzebnego do wyświetlenia danych w widoku raz pobrania niezbędnych //informacji FormContainsField formContainsField = new FormContainsField { IdForm = id }; foreach (var field in allFields) { idFieldBool = new IdFieldBool { IdField = field.Id, NameField = field.Name }; if (fieldsInForm.Contains(field.Id)) { idFieldBool.ContainsField = true; formContainsField.fields.Add(idFieldBool); } else { idFieldBool.ContainsField = false; formContainsField.fields.Add(idFieldBool); } } return(View(formContainsField)); }