public AccountProvider AddProvider(Provider provider, User user, Guid?correlationId)
        {
            EnsureProviderHasNotAlreadyBeenAdded(provider);

            var accountProvider = new AccountProvider(this, provider, user, correlationId);

            _accountProviders.Add(accountProvider);

            return(accountProvider);
        }
        public AccountProviderLegalEntity(AccountProvider accountProvider, AccountLegalEntity accountLegalEntity, User user, HashSet <Operation> grantedOperations)
        {
            AccountProvider      = accountProvider;
            AccountProviderId    = accountProvider.Id;
            AccountLegalEntity   = accountLegalEntity;
            AccountLegalEntityId = accountLegalEntity.Id;
            _permissions.AddRange(grantedOperations.Select(o => new Permission(this, o)));

            Created = DateTime.UtcNow;

            Publish(() => new UpdatedPermissionsEvent(
                        AccountProvider.AccountId,
                        AccountLegalEntity.Id,
                        AccountProvider.Id,
                        Id,
                        AccountProvider.ProviderUkprn,
                        user.Ref,
                        user.Email,
                        user.FirstName,
                        user.LastName,
                        grantedOperations,
                        new HashSet <Operation>(),
                        Created));
        }