//First User Creation public async Task <string> CreateUserAsync(RegisterModel reg) { var newUser = new Admin(); var dept = new Department() { Name = reg.Department }; var per = new Person() { firstName = reg.firstName, LastName = reg.LastName, Gender = reg.Gender, DateOfBirth = reg.DateOfBirth, }; newUser.Email = reg.EmailAddress; newUser.Address = reg.Address; newUser.Phone = reg.Phone; newUser.Status = true; // Password Hash // var message = reg.Password; var message = reg.LastName.ToLower(); var salt = Salt.Create(); var hash = Hash.Create(message, salt); newUser.PasswordHash = hash; newUser.salt = salt; newUser.Person = per; newUser.Department = dept; newUser.SearchString = (newUser.Person.LastName + " " + newUser.Person.firstName + " " + newUser.Person.Gender + " " + newUser.Email + " " + newUser.Phone + " Administrator" + " " + "Active").ToUpper(); await _context.Users.AddAsync(newUser); await _context.SaveChangesAsync(); // retrieve id of newly created item var thisUser = _context.Admins. Where(x => x.Email.CompareTo(reg.EmailAddress) == 0 && x.PasswordHash.CompareTo(hash) == 0).FirstOrDefault(); int thisUserID = thisUser.Id; var change = new Change() { Table = "Users", ChangeType = "Create", EntryId = thisUserID, OnlineTimeStamp = DateTime.Now, OfflineTimeStamp = DateTime.Now, }; var changeDept = new Change() { Table = "Departments", ChangeType = "Create", EntryId = thisUserID, OnlineTimeStamp = DateTime.Now, OfflineTimeStamp = DateTime.Now }; await _context.Changes.AddAsync(changeDept); await _context.SaveChangesAsync(); await _context.Changes.AddAsync(change); await _context.SaveChangesAsync(); return("done"); }
public async Task CreateAdmin(RegisterModel reg, int userId) { var newUser = new Admin(); var per = new Person() { firstName = reg.firstName, LastName = reg.LastName, Gender = reg.Gender, DateOfBirth = reg.DateOfBirth, }; newUser.Email = reg.EmailAddress; newUser.Address = reg.Address; newUser.Phone = reg.Phone; // Password Hash //var message = reg.Password; var message = reg.LastName.ToLower(); var salt = Salt.Create(); var hash = Hash.Create(message, salt); newUser.PasswordHash = hash; newUser.salt = salt; newUser.Status = true; newUser.Person = per; // var DeptCheck = await _context.Departments.Where(x => x.Id == reg.DepartmentId).FirstOrDefaultAsync(); // string errMessage = "Department does not exist"; // if (DeptCheck == null) // { // throw new Exception(errMessage); // } newUser.DepartmentId = reg.DepartmentId.Value;//_context.Departments.SingleOrDefaultAsync(x => x.Name.ToUpper().CompareTo(reg.Department.ToUpper()) == 0).Id; //await _context.SaveChangesAsync(); newUser.SearchString = (newUser.Person.LastName + " " + newUser.Person.firstName + " " + newUser.Person.Gender + " " + newUser.Email + " " + newUser.Phone + " " + newUser.Status + " Administrator" + " " + "Active").ToUpper(); await _context.Admins.AddAsync(newUser); await _context.SaveChangesAsync(); var thisUser = _context.Admins. Where(x => x.Email.CompareTo(reg.EmailAddress) == 0 && x.PasswordHash.CompareTo(hash) == 0).FirstOrDefault(); int thisUserID = thisUser.Id; var change = new Change() { Table = "Users", EntryId = thisUserID, ChangeType = "Create", OnlineTimeStamp = DateTime.Now, OfflineTimeStamp = DateTime.Now, UserId = userId, }; await _context.Changes.AddAsync(change);; await _context.SaveChangesAsync(); }