public IActionResult Uredi(int korisnikID)
        {
            Osoba        o        = db.Osobe.Include(x => x.Grad).ThenInclude(k => k.Regija).FirstOrDefault(x => x.OsobaID == korisnikID);
            Korisnik     korisnik = db.Korisnici.FirstOrDefault(x => x.KorisnikID == korisnikID);
            TipKorisnika tip;

            if (korisnik.IsAdmin)
            {
                tip = TipKorisnika.Administrator;
            }
            else if (korisnik.IsPoslovodja)
            {
                tip = TipKorisnika.Poslovodja;
            }
            else
            {
                tip = TipKorisnika.ClanUprave;
            }

            KorisniciDodajViewModel vm = GetDefaultViewModel(new KorisniciDodajViewModel()
            {
                Osoba        = o,
                Korisnik     = korisnik,
                DrzavaID     = o.Grad.Regija.DrzavaID,
                RegijaID     = o.Grad.RegijaID,
                TipKorisnika = tip
            });

            return(View(vm));
        }
        private KorisniciDodajViewModel GetDefaultViewModel(KorisniciDodajViewModel model)
        {
            model.Osoba    = model.Osoba ?? new Models.Osoba();
            model.Korisnik = model.Korisnik ?? new Models.Korisnik();
            model.Gradovi  = model.Gradovi ?? dropdown.Gradovi();
            model.Regije   = model.Regije ?? dropdown.Regije();
            model.Drzave   = model.Drzave ?? dropdown.Drzave();
            model.Uloge    = model.Uloge ?? dropdown.Uloge();

            return(model);
        }
        public IActionResult Dodaj(KorisniciDodajViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(GetDefaultViewModel(model)));
            }

            Osoba osoba = model.Osoba;

            db.Osobe.Add(osoba);

            Korisnik korisnik = model.Korisnik;

            korisnik.KorisnikID = osoba.OsobaID;

            string lozinka = Sigurnost.GenerisiPassword(10, false);

            korisnik.LozinkaHash       = Sigurnost.GenerisiHash(lozinka);
            korisnik.DatumRegistracije = DateTime.Now;
            korisnik.Aktivan           = true;
            korisnik.PromijenioLozinku = false;

            string poruka = $"Poštovani {osoba.Ime} {osoba.Prezime}, na sistem se možete logovati sa sljedećim podacima:\nEmail: [<strong>{osoba.Email}</strong>]\nLozinka: [<strong>{lozinka}</strong>]\n\nNapomena: Prilikom prvog logiranja morate promijeniti vašu lozinku.";

            emailSender.SendEmailAsync(osoba.Email, "Pristupni podaci", poruka);

            if (model.TipKorisnika == TipKorisnika.Administrator)
            {
                korisnik.IsAdmin      = true;
                korisnik.IsClanUprave = korisnik.IsPoslovodja = false;
            }
            else if (model.TipKorisnika == TipKorisnika.Poslovodja)
            {
                korisnik.IsPoslovodja = true;
                korisnik.IsAdmin      = korisnik.IsClanUprave = false;
            }
            else
            {
                korisnik.IsClanUprave = true;
                korisnik.IsPoslovodja = korisnik.IsAdmin = false;
            }

            db.Korisnici.Add(korisnik);
            db.SaveChanges();

            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult Uredi(KorisniciDodajViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(GetDefaultViewModel(viewModel)));
            }

            Osoba o = viewModel.Osoba;

            db.Osobe.Update(o);

            Korisnik k = viewModel.Korisnik;

            k.KorisnikID = o.OsobaID;
            db.Korisnici.Update(k);

            db.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }