public AddStaffResponse AddStaff(AddStaffRequest request) { Platform.CheckForNullReference(request, "request"); Platform.CheckMemberIsSet(request.StaffDetail, "StaffDetail"); // if trying to associate with a user account, check the account is free if (!string.IsNullOrEmpty(request.StaffDetail.UserName)) { ValidateUserNameFree(request.StaffDetail.UserName); } // create new staff var staff = new Staff(); // set properties from request var assembler = new StaffAssembler(); var groupsEditable = Thread.CurrentPrincipal.IsInRole(AuthorityTokens.Admin.Data.StaffGroup); assembler.UpdateStaff(request.StaffDetail, staff, groupsEditable, groupsEditable, PersistenceContext); PersistenceContext.Lock(staff, DirtyState.New); // ensure the new staff is assigned an OID before using it in the return value PersistenceContext.SynchState(); return(new AddStaffResponse(assembler.CreateStaffSummary(staff, PersistenceContext))); }
public ResponseErrorEnum?AddStaff(AddStaffRequest request) { try { var staffEmails = _staffRepository.GetAll().Select(s => s.Email); if (staffEmails.Contains(request.Email)) { return(ResponseErrorEnum.EmailAlreadyUsed); } var passwordHash = BCrypt.Net.BCrypt.HashPassword(request.Password); var staff = new Staff { Address = request.Address, CreatedAt = DateTime.Now, Email = request.Email, FirstName = request.FirstName, LastName = request.LastName, PasswordHash = passwordHash, PhoneNumber = request.PhoneNumber, StaffType = request.StaffType }; _staffRepository.Insert(staff); _staffRepository.Save(); } catch { // TODO: Log the exception. return(ResponseErrorEnum.RepositoryError); } return(null); }