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]); }
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); }