//PUT : /api/UserProfile/id public async Task <IActionResult> PutUserProfile(string id, UserModelProfil profile) { if (id != profile.Id) { return(BadRequest()); } var user = await userManager.FindByIdAsync(id); user.FullName = profile.FullName; user.Email = profile.Email; user.UserName = profile.UserName; context.Entry(user).State = EntityState.Modified; var oldRoles = await userManager.GetRolesAsync(user); //dodaj brakujące ROLE var missRoles = profile.Role.Except(oldRoles); await userManager.AddToRolesAsync(user, missRoles); //usuń zbyteczne ROLE var surplusRoles = oldRoles.Except(profile.Role); await userManager.RemoveFromRolesAsync(user, surplusRoles); #region dodaj - usuń WYDZIALY //dodaj brakujące WYDZIAŁY var poczWyd1 = profile.PoczatkoweWydzialy.Select(p => p.ID).ToArray(); var poczWyd2 = context.PoczatkoweWydzialy .Where(p => p.UserID == user.Id && p.Typ == cWydzial).Select(p => p.WydzialID).ToArray(); var missWydzialy = poczWyd1.Except(poczWyd2); var poczWydzADD = missWydzialy .Select(p => new PoczatkoweWydzialy { Typ = cWydzial, UserID = user.Id, WydzialID = p }); context.PoczatkoweWydzialy.AddRange(poczWydzADD); await context.SaveChangesAsync(); //usun zbyteczne WYdzialy var surplusWydz = poczWyd2.Except(poczWyd1); var poczWydzDelete = context.PoczatkoweWydzialy.Where(p => surplusWydz.Contains(p.WydzialID) && p.Typ == cWydzial); context.PoczatkoweWydzialy.RemoveRange(poczWydzDelete); await context.SaveChangesAsync(); #endregion #region dodaj - usuń KOMPETENCJE //dodaj brakujące KOMPETENCJE (WYDZIALY) var poczKwal1 = profile.PoczatkoweKwalifikacje.Select(k => k.ID).ToArray(); var poczKwal2 = context.PoczatkoweWydzialy .Where(k => k.UserID == user.Id && k.Typ == cKwalifikacja).Select(k => k.WydzialID).ToArray(); var missKwal = poczKwal1.Except(poczKwal2); var poczKwalAdd = missKwal .Select(k => new PoczatkoweWydzialy { Typ = cKwalifikacja, UserID = user.Id, WydzialID = k }); context.PoczatkoweWydzialy.AddRange(poczKwalAdd); await context.SaveChangesAsync(); //usuń zbyteczne KOMPETENCJE var surplusKwal = poczKwal2.Except(poczKwal1); var poczKwalDelete = context.PoczatkoweWydzialy.Where(p => surplusKwal.Contains(p.WydzialID) && p.Typ == cKwalifikacja); context.PoczatkoweWydzialy.RemoveRange(poczKwalDelete); await context.SaveChangesAsync(); #endregion #region dodaj - usuń STANOWISKA var poczStan1 = profile.PoczatkoweStanowiska.Select(s => s.ID).ToArray(); var poczStan2 = context.PoczatkoweStanowiska .Where(s => s.UserID == user.Id).Select(s => s.StanowiskoID).ToArray(); var missStan = poczStan1.Except(poczStan2); var poczStanAdd = missStan .Select(s => new PoczatkoweStanowiska { UserID = user.Id, StanowiskoID = s }); context.PoczatkoweStanowiska.AddRange(poczStanAdd); await context.SaveChangesAsync(); //usuń zbyteczne STANOWISKA var surplusStan = poczStan2.Except(poczStan1); //var poczStanDelete = surplusStan.Select(s => new PoczatkoweStanowiska //{ // UserID = user.Id, // StanowiskoID = s //}); var poczStanDelete = context.PoczatkoweStanowiska .Where(s => s.UserID == user.Id && surplusStan.Contains(s.StanowiskoID)); context.PoczatkoweStanowiska.RemoveRange(poczStanDelete); await context.SaveChangesAsync(); #endregion try { await context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProfileExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public void potvrdi(Korisnik k) { _context.Entry(k).State = EntityState.Modified; _context.SaveChanges(); }