protected override object GetDataFromSource()
    {
        var gateways          = PaymentAccountDetails.AllGateways;
        var availableGateways = new HashSet <PaymentProcessor>();

        foreach (var gateway in gateways)
        {
            if (gateway.IsActive && (gateway.Cashflow == GatewayCashflowDirection.ToGate || gateway.Cashflow == GatewayCashflowDirection.Both))
            {
                availableGateways.Add(gateway.GetProcessorType());
            }
        }

        var cryptocurrencies = CryptocurrencyFactory.GetAllAvailable();

        foreach (var crypto in cryptocurrencies)
        {
            if (crypto.DepositApiProcessor != 0 && CryptocurrencyApiFactory.Get(crypto.DepositApiProcessor).AllowToUsePaymentButtons())
            {
                if (crypto.DepositApiProcessor == CryptocurrencyAPIProvider.CoinPayments)
                {
                    availableGateways.Add(PaymentProcessor.CoinPayments);
                }
                if (crypto.DepositApiProcessor == CryptocurrencyAPIProvider.Coinbase)
                {
                    availableGateways.Add(PaymentProcessor.Coinbase);
                }
            }
        }

        return(availableGateways.Distinct().ToList());
    }