public async Task <IActionResult> Create([Bind("MaszynaId,Nazwa,NrSeryjny,DataPrzegladu")] Maszyna maszyna, string[] selectedConditions) { try { if (selectedConditions != null) { maszyna.PracownikMaszyna = new List <PracownikMaszyna>(); foreach (var cond in selectedConditions) { var condToAdd = new PracownikMaszyna { MaszynaId = maszyna.MaszynaId, PracownikId = int.Parse(cond) }; maszyna.PracownikMaszyna.Add(condToAdd); } } //UpdateZespolPracownik(selectedConditions, zespol); if (ModelState.IsValid) { _context.Add(maszyna); 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(maszyna); return(View(maszyna)); }
private void UpdateZespolPracownik(string[] selectedConditions, Maszyna maszynaToUpdate) { if (selectedConditions == null) { maszynaToUpdate.PracownikMaszyna = new List <PracownikMaszyna>(); return; } var selectedOptionsHS = new HashSet <string>(selectedConditions); var docSpecialties = new HashSet <int>(maszynaToUpdate.PracownikMaszyna.Select(b => b.PracownikId)); foreach (var s in _context.Pracownik) { if (selectedOptionsHS.Contains(s.PracownikId.ToString())) { if (!docSpecialties.Contains(s.PracownikId)) { maszynaToUpdate.PracownikMaszyna.Add(new PracownikMaszyna { PracownikId = s.PracownikId, MaszynaId = maszynaToUpdate.MaszynaId }); } } else { if (docSpecialties.Contains(s.PracownikId)) { PracownikMaszyna specToRemove = maszynaToUpdate.PracownikMaszyna.SingleOrDefault(d => d.PracownikId == s.PracownikId); _context.Remove(specToRemove); } } } }