Example #1
0
        //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());
        }
Example #2
0
        //Post: /api.UserProfile
        public async Task <ActionResult <UserModelProfil> > SetUserProfile(UserModelProfil profile)
        {
            if (string.IsNullOrEmpty(profile.Id))
            {
                return(BadRequest(new { message = "Brak ID użytkownika!" }));
            }
            var oldUser = await userManager.FindByIdAsync(profile.Id);

            await userManager.UpdateAsync(oldUser);

            var oldRoles = await userManager.GetRolesAsync(oldUser);

            //dodaj brakujące ROLE
            var missRoles = profile.Role.Except(oldRoles);
            await userManager.AddToRolesAsync(oldUser, missRoles);

            //usuń zbyteczne ROLE
            var surplusRoles = oldRoles.Except(profile.Role);
            await userManager.RemoveFromRolesAsync(oldUser, 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 == oldUser.Id && p.Typ == cWydzial).Select(p => p.WydzialID).ToArray();
            var missWydzialy = poczWyd1.Except(poczWyd2);
            var poczWydzADD  = missWydzialy
                               .Select(p => new PoczatkoweWydzialy
            {
                Typ       = cWydzial,
                UserID    = oldUser.Id,
                WydzialID = p
            });
            context.PoczatkoweWydzialy.AddRange(poczWydzADD);
            await context.SaveChangesAsync();

            //usun zbyteczne WYdzialy
            var surplusWydz    = poczWyd2.Except(poczWyd1);
            var poczWydzDelete = surplusWydz
                                 .Select(p => new PoczatkoweWydzialy
            {
                Typ       = cWydzial,
                UserID    = oldUser.Id,
                WydzialID = p
            });
            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 == oldUser.Id && k.Typ == cKwalifikacja).Select(k => k.WydzialID).ToArray();
            var missKwal    = poczKwal1.Except(poczKwal2);
            var poczKwalAdd = missKwal
                              .Select(k => new PoczatkoweWydzialy
            {
                Typ       = cKwalifikacja,
                UserID    = oldUser.Id,
                WydzialID = k
            });
            context.PoczatkoweWydzialy.AddRange(poczKwalAdd);
            await context.SaveChangesAsync();

            //usuń zbyteczne KOMPETENCJE
            var surplusKwal    = poczKwal2.Except(poczKwal1);
            var poczKwalDelete = surplusKwal.Select(k => new PoczatkoweWydzialy
            {
                Typ       = cKwalifikacja,
                UserID    = oldUser.Id,
                WydzialID = k
            });
            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 == oldUser.Id).Select(s => s.StanowiskoID).ToArray();
            var missStan    = poczStan1.Except(poczStan2);
            var poczStanAdd = missStan
                              .Select(s => new PoczatkoweStanowiska
            {
                UserID       = oldUser.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       = oldUser.Id,
                StanowiskoID = s
            });
            context.PoczatkoweStanowiska.RemoveRange(poczStanDelete);
            await context.SaveChangesAsync();

            #endregion

            return(Ok(profile));
        }