public async Task <KlijentDataDisplayModel> UpdateKlijentData(int klijentId, KlijentDataUpdateModel model) { try { var klijent = _context.Klijent .Include(k => k.ApplicationUser) .ThenInclude(a => a.Opcina) .Include(k => k.ClanarineKlijenta) .Where(k => k.Id == klijentId) .FirstOrDefault(); if (model.Email != null) { klijent.ApplicationUser.Email = model.Email; } if (model.Slika != null && model.Slika.Length > 0) { klijent.ApplicationUser.Slika = model.Slika; } if (model.Password != null) { klijent.ApplicationUser.PasswordHash = UserAuthHelpers.GenerateHash(klijent.ApplicationUser.PasswordSalt, model.Password); } if (model.OpcinaId != null && model.OpcinaId != klijent.ApplicationUser.OpcinaId) { klijent.ApplicationUser.OpcinaId = (int)model.OpcinaId; } await _context.SaveChangesAsync(); return(MapKlijentToDataDisplayModel(klijent)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <ApplicationUserModel> Authenticate(string username, string password) { var user = await _context.ApplicationUser .Include(au => au.ApplicationUserRoles) .ThenInclude(r => r.Role) .FirstOrDefaultAsync(x => x.Username == username && x.Active == true); if (user != null) { if (user.PasswordHash == UserAuthHelpers.GenerateHash(user.PasswordSalt, password)) { var rolesModel = new List <RoleModel>(); foreach (var x in user.ApplicationUserRoles) { rolesModel.Add(new RoleModel { Naziv = x.Role.Naziv, Id = x.RoleId }); } var model = new ApplicationUserModel { ApplicationUserRoles = rolesModel, Email = user.Email, Id = user.Id, Username = user.Username }; if (rolesModel.Where(r => r.Naziv == "Klijent").Any()) { model.KlijentId = _context.Klijent.Where(k => k.ApplicationUserId == model.Id).First().Id; } else if (rolesModel.Where(r => r.Naziv == "AdministrativnoOsoblje" || r.Naziv == "Predavač").Any()) { model.UposlenikId = _context.Uposlenik.Where(k => k.ApplicationUserId == model.Id).First().Id; } return(model); } } return(null); }
public async Task <KlijentModel> AddKlijent(ApplicationUserInsertModel model) { try { if (model.Password != model.PasswordConfirm) { throw new Exception("Lozinke nisu iste."); } if (!(IsUsernameUnique(model.Username))) { throw new Exception("Username je već zauzet."); } var user = new ApplicationUser { Email = model.Email, PasswordSalt = UserAuthHelpers.GenerateSalt(), Username = model.Username, DatumRodjenja = model.DatumRodjenja, Ime = model.Ime, JMBG = model.JMBG, OpcinaId = model.OpcinaId, Prezime = model.Prezime, Spol = model.Spol, DatumRegistracije = DateTime.Now, Active = true }; if (model.Slika != null && model.Slika.Length > 0) { user.Slika = model.Slika; } user.PasswordHash = UserAuthHelpers.GenerateHash(user.PasswordSalt, model.Password); _context.ApplicationUser.Add(user); var roleKlijent = _context.Role.Where(r => r.Naziv == "Klijent").First(); _context.ApplicationUserRole.Add(new ApplicationUserRole { ApplicationUser = user, Role = roleKlijent }); var klijent = new Klijent { ApplicationUser = user }; _context.Klijent.Add(klijent); await _context.SaveChangesAsync(); var created = new KlijentModel { DatumRodjenja = user.DatumRodjenja, Email = user.Email, Id = user.Id, Ime = user.Ime, JMBG = user.JMBG, OpcinaId = user.OpcinaId, Prezime = user.Prezime, Spol = user.Spol, Slika = user.Slika, Username = user.Username, Role = new List <RoleModel> { new RoleModel { Id = roleKlijent.Id, Naziv = roleKlijent.Naziv } }, KlijentId = klijent.Id }; created.OpcinaNaziv = _context.Opcina .Find(created.OpcinaId) .Naziv; return(created); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <OsobljeModel> AddOsoblje(OsobljeInsertModel model) { try { if (model.Password != model.PasswordConfirm) { throw new Exception("Lozinke nisu iste."); } if (!(IsUsernameUnique(model.Username))) { throw new Exception("Username je već zauzet."); } var user = new ApplicationUser { Email = model.Email, PasswordSalt = UserAuthHelpers.GenerateSalt(), Slika = model.Slika, Username = model.Username, DatumRodjenja = model.DatumRodjenja, Ime = model.Ime, JMBG = model.JMBG, OpcinaId = model.OpcinaId, Prezime = model.Prezime, Spol = model.Spol, DatumRegistracije = DateTime.Now, Active = model.Active }; user.PasswordHash = UserAuthHelpers.GenerateHash(user.PasswordSalt, model.Password); _context.ApplicationUser.Add(user); foreach (var r in model.ApplicationUserRoles) { _context.ApplicationUserRole.Add(new ApplicationUserRole { ApplicationUser = user, RoleId = r.Id }); } var uposlenik = new Uposlenik { DatumZaposlenja = model.DatumZaposlenja, ApplicationUser = user }; _context.Uposlenik.Add(uposlenik); await _context.SaveChangesAsync(); var created = new OsobljeModel { DatumRodjenja = user.DatumRodjenja, DatumZaposlenja = uposlenik.DatumZaposlenja, Active = user.Active, Email = user.Email, Id = user.Id, Ime = user.Ime, JMBG = user.JMBG, OpcinaId = user.OpcinaId, Prezime = user.Prezime, Spol = user.Spol, UposlenikId = uposlenik.Id, Slika = user.Slika, Username = user.Username, Role = model.ApplicationUserRoles }; created.OpcinaNaziv = _context.Opcina .Find(created.OpcinaId) .Naziv; return(created); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <OsobljeModel> UpdateOsoblje(int id, OsobljeUpdateModel model) { try { var uposlenik = _context.Uposlenik .Include(u => u.ApplicationUser) .ThenInclude(au => au.ApplicationUserRoles) .ThenInclude(aur => aur.Role) .Include(u => u.ApplicationUser) .ThenInclude(au => au.Opcina) .Where(u => u.ApplicationUserId == id) .FirstOrDefault(); uposlenik.ApplicationUser.Active = model.Active; uposlenik.ApplicationUser.DatumRodjenja = model.DatumRodjenja; uposlenik.DatumZaposlenja = model.DatumZaposlenja; uposlenik.ApplicationUser.Email = model.Email; uposlenik.ApplicationUser.Ime = model.Ime; uposlenik.ApplicationUser.JMBG = model.JMBG; if (uposlenik.ApplicationUser.OpcinaId != model.OpcinaId) { uposlenik.ApplicationUser.OpcinaId = model.OpcinaId; uposlenik.ApplicationUser.Opcina = _context.Opcina.Find(model.OpcinaId); } uposlenik.ApplicationUser.Prezime = model.Prezime; if (model.Slika != null && model.Slika.Length > 0) { uposlenik.ApplicationUser.Slika = model.Slika; } uposlenik.ApplicationUser.Spol = model.Spol; //new password if not empty if (!string.IsNullOrEmpty(model.Password) && !string.IsNullOrEmpty(model.PasswordConfirm)) { if (model.Password != model.PasswordConfirm) { throw new Exception("Passwords are not a match."); } uposlenik.ApplicationUser.PasswordHash = UserAuthHelpers.GenerateHash(uposlenik.ApplicationUser.PasswordSalt, model.Password); } //removing all roles var existingRoles = await _context.ApplicationUserRole .Where(a => a.ApplicationUserId == uposlenik.ApplicationUser.Id) .ToListAsync(); foreach (var er in existingRoles) { _context.ApplicationUserRole.Remove(er); } //adding updated roles foreach (var r in model.ApplicationUserRoles) { uposlenik.ApplicationUser.ApplicationUserRoles.Add(new ApplicationUserRole { ApplicationUserId = uposlenik.ApplicationUser.Id, RoleId = r.Id, Role = _context.Role.Find(r.Id) }); } await _context.SaveChangesAsync(); return(MapUposlenikToOsobljeModel(uposlenik)); } catch (Exception ex) { throw new Exception(ex.Message); } }