Exemple #1
0
        public IActionResult Azuriraj(String korisnickoIme, [FromBody] AzurirajKorisnikaRequestModel model)
        {
            var result = korisnikService.AzurirajKorisnika(korisnickoIme, model);

            if (result.IsOk)
            {
                logService.Akcija(Core.Constants.LogLevel.Info,
                                  Core.Constants.LogKategorija.korisnik,
                                  Core.Constants.LogAkcija.korisnik_izmijeni,
                                  "KorisnickoIme: " + result.Value.KorisnickoIme,
                                  authService.TrenutniKorisnik().UserName
                                  );
            }
            return(Convert(result));
        }
Exemple #2
0
        public ServiceResult <KorisnikModel> AzurirajKorisnika(String korisnickoIme, AzurirajKorisnikaRequestModel model)
        {
            var securityLevel = new SecurityLevel();

            var korisnik = Secure(context.Korisnici.Include(k => k.KorisnikUloge).AsQueryable(), securityLevel)
                           .SingleOrDefault(k => k.KorisnickoIme == korisnickoIme);

            /*context.Korisnici.AsQueryable()
             *              .SingleOrDefault(k => k.KorisnickoIme == korisnickoIme);*/
            if (korisnik == null)
            {
                return(NotFound());
            }

            var trenutni = authService.TrenutniKorisnik();


            //za sada je podeseno da može imati jednu ulogu samo
            var korisnikUlogaId = korisnik.KorisnikUloge.Select(k => k.KorisnikUlogaId).FirstOrDefault();


            var korisnikProjektiKorisnika = context.KorisnikProjekti.Where(k => k.KorisnikUlogaId == korisnikUlogaId).ToList();

            var vrijednostUAplikaciji = context.Uloge.Where(u => u.Id == model.Uloge[0].VrstaUloge.Id).Select(u => u.VrijednostUAplikaciji).FirstOrDefault();

            if (vrijednostUAplikaciji == (int)Uloga.Support)
            {
                var kategorije = new List <int>();

                foreach (var kat in model.Kategorije)
                {
                    kategorije.Add(kat.Id);
                }

                var kategorijeKorisnika = context.KorisnikKategorije.Include(z => z.ZahtjevKategorija).Where(k => korisnickoIme == k.KorisnickoIme).ToList();

                var obrisatiKategorijeKorisnika = context.KorisnikKategorije.Include(z => z.ZahtjevKategorija).Where(k => !kategorije.Contains(k.ZahtjevKategorijaId) && korisnickoIme == k.KorisnickoIme).Distinct();
                var dodatiKategorijeKorisnika   = kategorije.Where(p => !kategorijeKorisnika.Any(a => a.ZahtjevKategorijaId == p)).ToList();

                context.KorisnikKategorije.RemoveRange(obrisatiKategorijeKorisnika);
                context.KorisnikKategorije.AddRange(dodatiKategorijeKorisnika.Select(n => new KorisnikKategorija
                {
                    KorisnickoIme       = korisnickoIme,
                    ZahtjevKategorijaId = n
                }));

                var noviProjekti = context.ZahtjevKategorije.Where(z => kategorije.Contains(z.Id)).Select(z => z.DioProjekta.ProjekatId).Distinct();

                var obrisatiProjekte = korisnikProjektiKorisnika.Where(p => !noviProjekti.Any(a => a == p.ProjekatId)).ToList();


                var dodatiProjekte = noviProjekti.Where(p => !korisnikProjektiKorisnika.Any(a => a.ProjekatId == p)).ToList();

                context.KorisnikProjekti.RemoveRange(obrisatiProjekte);

                context.KorisnikProjekti.AddRange(dodatiProjekte.Select(n => new KorisnikProjekat
                {
                    ProjekatId      = n,
                    KorisnikUlogaId = korisnikUlogaId
                }));
            }
            else
            {
                var obrisatiKorisnikProjekte = korisnikProjektiKorisnika.Where(p => !model.Projekti.Any(a => a.Id == p.ProjekatId)).ToList();

                var dodatiKorisnikProjekte = model.Projekti.Where(p => !korisnikProjektiKorisnika.Any(a => a.ProjekatId == p.Id)).ToList();

                context.KorisnikProjekti.RemoveRange(obrisatiKorisnikProjekte);

                context.KorisnikProjekti.AddRange(dodatiKorisnikProjekte.Select(n => new KorisnikProjekat
                {
                    ProjekatId      = n.Id,
                    KorisnikUlogaId = korisnikUlogaId
                }));
            }

            // Provjeriti pravo dodavanja uloge
            var dozvoljeneUloge = pravoUpravljanjaKorisnikomService.VratiPravaUpravljanjaKorisnikom(trenutni.TrenutnaUlogaId);

            if (model.Uloge.Any(a => dozvoljeneUloge.All(doz => doz.UlogaUpravljanogId != a.VrstaUloge.Id)))
            {
                return(Error("Nemate prava izmjene korisnika sa tim ulogama"));
            }

            var stareUloge = context.KorisnikUloge
                             .Where(a => a.KorisnickoIme == korisnickoIme).ToList();

            // Koristi se transakcija zato sto se brisu uloge pa se onda ponovo dodaju
            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    // Obirisi uloge i dodatne informacije

                    /*foreach (var uloga in stareUloge)
                     * {
                     *  context.KorisnikUloge.Remove(uloga);
                     * }
                     * context.KorisnikUloge.RemoveRange(stareUloge);
                     *
                     * context.SaveChanges();
                     *
                     * foreach (var novaUloga in model.Uloge)
                     * {
                     *  var nova = new KorisnikUloga
                     *  {
                     *      UlogaId = novaUloga.VrstaUloge.Id,
                     *      KorisnickoIme = korisnickoIme
                     *      // KorisnikUlogaDodatnaInformacija = new List<KorisnikUlogaDodatnaInformacija>()
                     *  };
                     *
                     *  context.KorisnikUloge.Add(nova);
                     * }*/

                    // postavi vrijednosti
                    korisnik.Email   = model.Email;
                    korisnik.PunoIme = model.PunoIme;


                    SaveChanges(context);

                    if (!string.IsNullOrEmpty(model.Lozinka) && model.Lozinka.Length >= 6)
                    {
                        PostaviLozinku(korisnickoIme, model.Lozinka);
                    }

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    return(Error("Greška", false));
                }
            }

            // vrati azuriranog korisnika
            return(VratiKorisnikaPoKorisnickomImenu(korisnickoIme));
        }
Exemple #3
0
        public ServiceResult <KorisnikModel> AzurirajKorisnika(String korisnickoIme, AzurirajKorisnikaRequestModel model)
        {
            var securityLevel = new SecurityLevel();
            // dobavi razred ako postoji
            var korisnik = Secure(context.Users.AsQueryable(), securityLevel)
                           .SingleOrDefault(k => k.UserName == korisnickoIme);

            if (korisnik == null)
            {
                return(NotFound());
            }

            var trenutni = authService.TrenutniKorisnik();

            // Provjeriti pravo dodavanja uloge
            var dozvoljeneUloge = pravoUpravljanjaKorisnikomService.VratiPravaUpravljanjaKorisnikom(trenutni.TrenutnaUlogaId);

            if (model.Uloge.Any(a => dozvoljeneUloge.All(doz => doz.UlogaUpravljanogId != a.VrstaUlogeId)))
            {
                return(Error("Nemate prava izmjene korisnika sa tim ulogama"));
            }

            var stareUloge = context.UserRoles
                             .Include(x => x.KorisnikUlogaDodatnaInformacija)
                             .Where(a => a.UserId == korisnik.Id).ToList();

            // Koristi se transakcija zato sto se brisu uloge pa se onda ponovo dodaju
            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    // Obirisi uloge i dodatne informacije
                    foreach (var uloga in stareUloge)
                    {
                        context.KorisnikUlogaDodatneInformacije.RemoveRange(uloga.KorisnikUlogaDodatnaInformacija);
                    }
                    context.UserRoles.RemoveRange(stareUloge);

                    context.SaveChanges();

                    foreach (var novaUloga in model.Uloge)
                    {
                        var nova = new KorisnikUloga
                        {
                            RoleId = novaUloga.VrstaUlogeId,
                            UserId = korisnik.Id,
                            KorisnikUlogaDodatnaInformacija = new List <KorisnikUlogaDodatnaInformacija>()
                        };

                        context.UserRoles.Add(nova);
                    }

                    // postavi vrijednosti
                    korisnik.Email   = model.Email;
                    korisnik.PunoIme = model.PunoIme;

                    SaveChanges(context);

                    if (!string.IsNullOrEmpty(model.Lozinka) && model.Lozinka.Length >= 6)
                    {
                        PostaviLozinku(korisnickoIme, model.Lozinka);
                    }

                    transaction.Commit();
                }
                catch (Exception)
                {
                    return(Error("Greška", false));
                }
            }

            // vrati azuriranog korisnika
            return(VratiKorisnikaPoKorisnickomImenu(korisnickoIme));
        }