Exemplo n.º 1
0
        public static KorisnikModel ToKorisnikModel(this Entities.Models.Korisnik.Korisnik korisnik)
        {
            return(new KorisnikModel()
            {
                KorisnickoIme = korisnik.KorisnickoIme,
                Email = korisnik.Email,
                PunoIme = korisnik.PunoIme,
                DatumKreiranja = korisnik.DatumKreiranja,
                PolId = korisnik.PolId,
                Onemogucen = korisnik.Onemogucen,
                Jezik = korisnik.Jezik,
                Uloge = korisnik.KorisnikUloge.Select(a => new KorisnikUlogaModel
                {
                    VrstaUloge = new PravoUpravljanjaKorisnikomListModelItem
                    {
                        Id = a.UlogaId,
                        Uloga = a.Uloga.Naziv,
                        PotrebneDodatneInformacije = a.Uloga
                                                     .TipoviDodatneInformacije
                                                     .Select(u => u.KorisnikTipDodatneInformacije?.Sifra)
                                                     .ToList()
                    }
                }).ToList(),

                //vraca projekte samo za prvu nadjenu ulogu
                Projekti = korisnik.KorisnikUloge
                           .Select(
                    k => k.KorisnikProjekti.Select(
                        p => new KorisnikProjekatModel
                {
                    Id = p.Projekat.Id,
                    Naziv = p.Projekat.Naziv
                }).ToList()).FirstOrDefault(),

                /*  Kategorije = korisnik.KorisnikUloge.
                 * Select(
                 *    k => k.KorisnikProjekti.Select(
                 *        p => p.KorisnikKategorije.Select(
                 *            z => new ZahtjevKategorijaModel
                 *            {
                 *                Id = z.ZahtjevKategorijaId,
                 *                Naziv = z.ZahtjevKategorija.Naziv
                 *            }).ToList())).FirstOrDefault())*/
            });
        }
Exemplo n.º 2
0
        public ServiceResult <KorisnikModel> Kreiraj(KreirajKorisnikaRequestModel model)
        {
            model.KorisnickoIme = model.KorisnickoIme.Trim().ToLower();

            if (model.Uloge == null || !model.Uloge.Any()) //null ili prazna lista
            {
                return(Error("Ne može se dodati korisnik bez definisane uloge."));
            }

            //Provjeri da li je korisničko ime zauzeto
            if (context.Korisnici.Include(k => k.KorisnikUloge).FirstOrDefault(x => x.KorisnickoIme == model.KorisnickoIme) != null)
            {
                return(Error("Korisničko ime zauzeto."));
            }

            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 da dodate korisnika sa tim ulogama"));
            }

            var hashProvider = Scope.Resolve <IHashProvider>();
            var tajna        = hashProvider.HashPassword(model.Lozinka);

            Entities.Models.Korisnik.Korisnik korisnik = new Entities.Models.Korisnik.Korisnik
            {
                KorisnickoIme  = model.KorisnickoIme,
                Tajna          = tajna,
                DatumKreiranja = DateTime.Now,
                Email          = model.Email,
                PunoIme        = model.PunoIme,
                PolId          = model.PolId,
                KorisnikUloge  = new List <KorisnikUloga>(),
                Onemogucen     = false,
                Jezik          = (int)Jezici.bs
            };

            try
            {
                foreach (var uloga in model.Uloge)
                {
                    var korisnikUloga = new KorisnikUloga
                    {
                        UlogaId = uloga.VrstaUlogeId,
                        KorisnikUlogaDodatnaInformacija = new List <KorisnikUlogaDodatnaInformacija>()
                    };

                    korisnik.KorisnikUloge.Add(korisnikUloga);
                }
                context.Add(korisnik);


                //SaveChanges(context);



                var korisnikUloge = korisnik.KorisnikUloge.ToList();

                var korisnikUlogaNajveca = korisnikUloge[0].KorisnikUlogaId;

                //provjera koja vrsta uloge se dodaje
                var vrijednostUAplikaciji = context.Uloge.Where(u => u.Id == model.Uloge[0].VrstaUlogeId).Select(u => u.VrijednostUAplikaciji).FirstOrDefault();

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

                    foreach (var kat in model.Kategorije)
                    {
                        kategorije.Add(kat.ZahtjevKategorijaId);
                    }
                    var projekti = context.ZahtjevKategorije.Where(z => kategorije.Contains(z.Id)).Select(z => z.DioProjekta.ProjekatId).Distinct();

                    foreach (var projekat in projekti)
                    {
                        var korisnikProjekat = new KorisnikProjekat
                        {
                            ProjekatId      = projekat,
                            KorisnikUlogaId = korisnikUlogaNajveca
                        };

                        context.KorisnikProjekti.Add(korisnikProjekat);
                    }
                    foreach (var kategorija in kategorije)
                    {
                        var zahtjevKategorija = new KorisnikKategorija
                        {
                            KorisnickoIme       = model.KorisnickoIme,
                            ZahtjevKategorijaId = kategorija
                        };

                        context.KorisnikKategorije.Add(zahtjevKategorija);
                    }
                }
                else if (vrijednostUAplikaciji != (int)Uloga.Administrator)
                {
                    var korisnikProjekti = context.KorisnikProjekti.ToList();

                    foreach (var projekat in model.Projekti)
                    {
                        var korisnikProjekat = new KorisnikProjekat
                        {
                            ProjekatId      = projekat.ProjekatId,
                            KorisnikUlogaId = korisnikUlogaNajveca
                        };

                        context.KorisnikProjekti.Add(korisnikProjekat);
                    }
                }


                SaveChanges(context);
            }
            catch (Exception e)
            {
                return(Error("Greška", false));
            }
            return(VratiKorisnikaPoKorisnickomImenu(korisnik.KorisnickoIme));
        }