public async Task <IActionResult> Edit(int id) { var nalog = await _db.KorisnickiNalozi.FindAsync(id); var pass = Autentifikacija.GenerateRandomPassword(); var model = new KorisnickiNalogVM() { OsobaId = nalog.KorisnickiNalogId, KorisnickiNalogId = nalog.KorisnickiNalogId, UlogaKorisnika = nalog.UlogaKorisnika, KorisnickoIme = nalog.KorisnickoIme, Aktivan = nalog.Aktivan, Lozinka = pass, SendEmail = true, EmailBody = MyEmailHelper.GetKorisnickiPodatciEditEmailBody() }; return(PartialView("_Edit", model)); }
public async Task <IActionResult> Create(KorisnickiNalogVM model) { if (!ModelState.IsValid) { return(PartialView("_Create", model)); } var prom = await _db.Osobe.Where(w => w.OsobaId == model.OsobaId) .Select(s => new { osoba = s, kandidat = s.Kandidat != null, zaposlenik = s.Zaposlenik != null }) .SingleOrDefaultAsync(); if (!(prom.kandidat || prom.zaposlenik)) { return(BadRequest("Osoba mora biti ili kandidat ili zaposlenik da bi se promovisala!")); } var logedNalog = await HttpContext.GetLogiraniKorisnik(); if (model.UlogaKorisnika < UlogeKorisnika.Kandidat && logedNalog.UlogaKorisnika > UlogeKorisnika.Direktor) { return(BadRequest(new { alert = new Alert(Severity.warning, $"Nema pravo da dodjeli ulogu {model.UlogaKorisnika}.", logedNalog.UlogaKorisnika.ToString(), false) })); } // generate a 128-bit salt using a secure PRNG byte[] salt = new byte[128 / 8]; using (var rng = RandomNumberGenerator.Create()) { rng.GetBytes(salt); } KorisnickiNalog nalog = new KorisnickiNalog() { KorisnickiNalogId = model.OsobaId, KorisnickoIme = model.KorisnickoIme, Aktivan = model.Aktivan, UlogaKorisnika = model.UlogaKorisnika, LozinkaSalt = Convert.ToBase64String(salt), LozinkaHash = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: model.Lozinka, salt: salt, prf: KeyDerivationPrf.HMACSHA1, iterationCount: 10000, numBytesRequested: 256 / 8)) }; try { Severity status = Severity.success; string detailsMessage = "Uspješno "; if (model.KorisnickiNalogId != 0) { nalog.KorisnickiNalogId = model.KorisnickiNalogId; _db.KorisnickiNalozi.Attach(nalog); var entry = _db.Entry(nalog); entry.State = EntityState.Modified; entry.Property(p => p.LozinkaHash).IsModified = model.IzmjenaLozinke; entry.Property(p => p.LozinkaSalt).IsModified = model.IzmjenaLozinke; detailsMessage += "editovan."; } else { _db.KorisnickiNalozi.Add(nalog); detailsMessage += "dodan u bazu."; } await _db.SaveChangesAsync(); if (model.SendEmail) { var emailBody = model.EmailBody.Replace("{lozinkaPolje}", model.Lozinka); try { MyEmailHelper email = new MyEmailHelper(_config) { Subject = "Obavjest-CZE Portala", Recipient = prom.osoba, Body = emailBody }; email.SendEmailKorisnickiPodatci(); detailsMessage += "\n ; Email poslan korisniku."; } catch (Exception) { status = Severity.warning; detailsMessage += "\n ; Email nije poslan korisniku."; } } return(RedirectToAction("QuickDetails", "Osoba", new { area = "AdministrativniRadnik", id = model.OsobaId })); } catch (Exception e) { return(BadRequest("Došlo je do greške prilikom snimanja podatka u bazu.; " + e.Message)); } }
private IQueryable <OsobaVMs.OsobaQuickDetailsVM> GetOsobaQuickDetailsVMQuery(int id) { string randomLozinka = Autentifikacija.GenerateRandomPassword(); return(_db.Osobe.AsNoTracking().Where(w => w.OsobaId == id).Select(s => new OsobaVMs.OsobaQuickDetailsVM() { OsobaId = s.OsobaId, Ime = s.Ime, Prezime = s.Prezime, DatumRodjenja = s.DatumRodjenja, MjestoRodjenjaId = s.MjestoRodjenjaId, MjestoRodjenjaNaziv = s.MjestoRodjenja.Naziv, Spol = s.Spol, Email = s.Email, MjestoBoravkaId = s.MjestoBoravkaId, MjestoBoravkaNaziv = s.MjestoBoravka.Naziv, Adresa = s.Adresa, BrojMobitela = s.BrojMobitela, BrojTelefona = s.BrojTelefona, KakoSteSaznaliZaNas = s.KakoSteSaznaliZaNas, PodatciOFirmi = s.PodatciOFirmi, NazivFirme = s.NazivFirme, AdresaFirme = s.AdresaFirme, GradFirmeId = s.GradFirmeId, GradFirmeNaziv = s.GradFirma.Naziv, BrojTelefonaFirme = s.BrojTelefonaFirme, EmailFirme = s.EmailFirme, ZaposlenikCreateVM = new ZaposlenikVMs.ZaposlenikCreateVM() { OsobaId = s.OsobaId, OsobaNaziv = s.Ime + " " + s.Prezime, ZaposlenikVM = _db.Zaposlenici.Where(w => w.ZaposlenikId == s.OsobaId).Select(x => new ZaposlenikVMs.ZaposlenikVM() { ZaposlenikId = x.ZaposlenikId, StepenObrazovanja = x.StepenObrazovanja, BrojRacuna = x.BrojRacuna, BrojLicneKarte = x.BrojLicneKarte }).FirstOrDefault() }, KandidatCreateVM = new KandidatVMs.KandidatCreateVM() { OsobaId = s.OsobaId, OsobaNaziv = s.Ime + " " + s.Prezime, KandidatVM = _db.Kandidati.Where(w => w.KandidatId == s.OsobaId).Select(x => new KandidatVMs.KandidatVM() { KandidatId = x.KandidatId, Biljeske = x.Biljeske, DatumUpisa = x.DatumUpisa }).FirstOrDefault() }, KorisnickiNalog = s.KorisnickiNalog != null, KorisnickiNalogVM = s.KorisnickiNalog != null ? new KorisnickiNalogVM() { KorisnickiNalogId = s.KorisnickiNalog.KorisnickiNalogId, KorisnickoIme = s.KorisnickiNalog.KorisnickoIme, UlogaKorisnika = s.KorisnickiNalog.UlogaKorisnika, Aktivan = s.KorisnickiNalog.Aktivan, } : new KorisnickiNalogVM() { OsobaId = s.OsobaId, UlogaKorisnika = s.Zaposlenik != null ? UlogeKorisnika.AdministrativniRadnik : UlogeKorisnika.Kandidat, KorisnickoIme = s.Ime + " " + s.Prezime, Lozinka = randomLozinka, Aktivan = true, SendEmail = true, EmailBody = MyEmailHelper.GetKorisnickiPodatciCreateEmailBody(new Osoba() { Ime = s.Ime, Prezime = s.Prezime, Spol = s.Spol }) } })); }