Exemple #1
0
        internal AccountTier?GetNextTier(AccountTier clientTier, string country, TierUpgradeRequest upgradeRequest)
        {
            AccountTier tier = clientTier;

            if (upgradeRequest != null)
            {
                switch (upgradeRequest.Status)
                {
                case nameof(KycStatus.Rejected):
                case nameof(KycStatus.RestrictedArea):
                    return(upgradeRequest.Tier);

                case nameof(KycStatus.Pending):
                    tier = upgradeRequest.Tier;
                    break;
                }
            }

            if (tier == AccountTier.ProIndividual)
            {
                return(null);
            }

            bool isHighRiskCountry = _settingsService.IsHighRiskCountry(country);

            if (isHighRiskCountry)
            {
                return(AccountTier.ProIndividual);
            }

            var values = (AccountTier[])Enum.GetValues(typeof(AccountTier));

            return(values[(int)tier + 1]);
        }
Exemple #2
0
        internal async Task <NextTier> GetNextTierAsync(string clientId, AccountTier clientTier, string country, TierUpgradeRequest upgradeRequest)
        {
            AccountTier?nextTier = GetNextTier(clientTier, country, upgradeRequest);

            if (nextTier.HasValue)
            {
                var nextTierLimits = await _limitsService.GetClientLimitSettingsAsync(clientId, nextTier.Value, country);

                if (nextTierLimits != null)
                {
                    return(new NextTier
                    {
                        Tier = nextTier.Value,
                        MaxLimit = nextTierLimits.MaxLimit ?? 0,
                        Documents = nextTierLimits.Documents.Select(x => x.ToString()).ToArray(),
                    });
                }
            }

            return(null);
        }