public OperationResult Register(RegisterUser command)
        {
            var result = new OperationResult("Users", "Register");

            try
            {
                if (_userManagementRepository.IsDuplicated(x => x.Username == command.Username))
                {
                    return(result.Failed(ApplicationMessages.UserAlreadyRegistered));
                }

                if (_userManagementRepository.IsDuplicated(x => x.NationalCode == command.NationalCode))
                {
                    return(result.Failed(ApplicationMessages.NationalCodeAlreadyRegistered));
                }

                var hashedPassword = _passwordHasher.Hash(command.Password);
                var user           = new User(Guid.NewGuid(), command.OrganizationId, command.NationalCode, command.Fullname,
                                              command.Username, hashedPassword, command.PhoneNumber, command.MobileNumber, command.RoleId);
                _userManagementRepository.BeginTran();
                _userManagementRepository.Create(user);
                _userManagementRepository.CommitTran();
                return(result.Succeeded(ApplicationMessages.Success));
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                _userManagementRepository.RoleBack();
                return(result.Failed(ApplicationMessages.SystemFailure));
            }
        }