public async Task <IActionResult> Create([Bind("ZespolId,Nazwa")] Zespol zespol, string[] selectedConditions) { try { if (selectedConditions != null) { zespol.ZespolPracownik = new List <ZespolPracownik>(); foreach (var cond in selectedConditions) { var condToAdd = new ZespolPracownik { ZespolId = zespol.ZespolId, PracownikId = int.Parse(cond) }; zespol.ZespolPracownik.Add(condToAdd); } } // UpdateZespolPracownik(selectedConditions, zespol); if (ModelState.IsValid) { _context.Add(zespol); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } } catch (Exception) { ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } PopulateAssignedConditionData(zespol); return(View(zespol)); }
private void UpdateZespolPracownik(string[] selectedConditions, Zespol zespolToUpdate) { if (selectedConditions == null) { zespolToUpdate.ZespolPracownik = new List <ZespolPracownik>(); return; } var selectedOptionsHS = new HashSet <string>(selectedConditions); var docSpecialties = new HashSet <int>(zespolToUpdate.ZespolPracownik.Select(b => b.PracownikId)); foreach (var s in _context.Pracownik) { if (selectedOptionsHS.Contains(s.PracownikId.ToString())) { if (!docSpecialties.Contains(s.PracownikId)) { zespolToUpdate.ZespolPracownik.Add(new ZespolPracownik { PracownikId = s.PracownikId, ZespolId = zespolToUpdate.ZespolId }); } } else { if (docSpecialties.Contains(s.PracownikId)) { ZespolPracownik specToRemove = zespolToUpdate.ZespolPracownik.SingleOrDefault(d => d.PracownikId == s.PracownikId); _context.Remove(specToRemove); } } } }