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())*/ }); }
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)); }