public UserDto Create(RegisterDto userData)
        {
            // validation
            if (userData == null)
            {
                throw new ArgumentNullException("Password is required");
            }

            if (this.dbContext.Users.Any(x => x.Email == userData.Email))
            {
                throw new ArgumentException("Email \"" + userData.Email + "\" is already taken");
            }

            byte[] passwordHash, passwordSalt;
            AuthUtils.CreatePasswordHash(userData.Password, out passwordHash, out passwordSalt);

            User user = new User()
            {
                Id             = Guid.NewGuid(),
                Email          = userData.Email,
                FirstName      = userData.FirstName,
                LastName       = userData.LastName,
                PasswordHashed = passwordHash,
                PasswordSalted = passwordSalt
            };

            this.dbContext.Users.Add(user);
            this.dbContext.SaveChanges();

            return(new UserDto(user));
        }