public KycStatusResponse GetClientKycStatus(KycStatusRequest request)
        {
            var existingEntity = _readerKycStatuses.Get(
                KycProfileNoSqlEntity.GeneratePartitionKey(),
                KycProfileNoSqlEntity.GenerateRowKey(request.ClientId));

            if (existingEntity != null)
            {
                return(new KycStatusResponse
                {
                    ClientId = existingEntity.Profile.ClientId,
                    Level = existingEntity.Profile.KycLevel,
                    RequiredDocuments = KycLevelHelper.GetRequiredDocuments(existingEntity.Profile),
                    RequiredVerifications = existingEntity.Profile.RequiredVerifications,
                    DepositStatus = existingEntity.Profile.DepositStatus,
                    TradeStatus = existingEntity.Profile.TradeStatus,
                    WithdrawalStatus = existingEntity.Profile.WithdrawalStatus,
                    VerificationInProgress = !string.IsNullOrEmpty(existingEntity.Profile.ActiveVerificationId)
                });
            }

            var entity = _kycStatusService.GetKycStatusAsync(new KycStatusRequest()
            {
                ClientId = request.ClientId
            }).Result;

            return(entity);
        }
        public async Task UpdateProfile(KycProfile profile, string operation, string agent, string comment)
        {
            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            await context.UpsertAsync(new[] { profile });

            await _cache.InsertOrReplaceAsync(KycProfileNoSqlEntity.Create(profile));

            await _cache.CleanAndKeepMaxRecords(KycProfileNoSqlEntity.GeneratePartitionKey(), 10000);

            context.AuditLogs.Add(KycAuditLog.Create(profile, operation, agent, comment));
            await context.SaveChangesAsync();
        }