Пример #1
0
        private KycStatus GetTierStatus(KycStatus status)
        {
            switch (status)
            {
            case KycStatus.Pending:
            case KycStatus.ReviewDone:
            case KycStatus.JumioInProgress:
            case KycStatus.JumioOk:
            case KycStatus.JumioFailed:
                return(KycStatus.Pending);

            case KycStatus.NeedToFillData:
                return(KycStatus.NeedToFillData);

            case KycStatus.Ok:
                return(KycStatus.Ok);

            case KycStatus.Rejected:
                return(KycStatus.Rejected);

            case KycStatus.RestrictedArea:
                return(KycStatus.RestrictedArea);

            case KycStatus.Complicated:
                return(status);

            default:
                return(status);
            }
        }
Пример #2
0
 public KycEntity(Guid userId, KycStatus status)
 {
     Id          = Guid.NewGuid();
     UserId      = userId;
     Status      = status;
     RequestDate = DateTime.UtcNow;
 }
Пример #3
0
 public static KycEntity Create(string clientId, KycStatus status)
 {
     return(new KycEntity
     {
         PartitionKey = GeneratePartitionKey(status),
         RowKey = GenerateRowKey(clientId)
     });
 }
 /// <summary>
 /// Initializes a new instance of the UserInfoResponseModel class.
 /// </summary>
 /// <param name="kycStatus">Possible values include: 'NeedToFillData',
 /// 'Pending', 'ReviewDone', 'Ok', 'Rejected', 'RestrictedArea',
 /// 'Complicated', 'JumioInProgress', 'JumioOk', 'JumioFailed'</param>
 public UserInfoResponseModel(string email, string firstName, string lastName, KycStatus kycStatus)
 {
     Email     = email;
     FirstName = firstName;
     LastName  = lastName;
     KycStatus = kycStatus;
     CustomInit();
 }
Пример #5
0
        public async Task <D3KycStatus> GetKycStatusAsync(string irohaUsername)
        {
            ID3User user = await GetUserAsync(irohaUsername);

            KycStatus kycStatus = await _kycStatusService.GetKycStatusAsync(user.ClientId);

            return(kycStatus.GetKycStatus());
        }
Пример #6
0
 public static KycEntity Create(string clientId, KycStatus status)
 {
     return new KycEntity
     {
         PartitionKey = GeneratePartitionKey(status),
         RowKey = GenerateRowKey(clientId)
     };
 }
Пример #7
0
        public async Task UpdateKycStatusAsync(string clientId, KycStatus status)
        {
            var documents = (await _kycDocumentsRepository.GetAsync(clientId)).ToArray();

            if ((status == KycStatus.NeedToFillData) && documents.HasAllTypes())
            {
                await _srvKycManager.ChangeKycStatus(clientId, KycStatus.Pending, RecordChanger.Client);
            }
        }
 public KycStatusLogRecord(string clientId, KycStatus statusCurrent, KycStatus statusPrevious, DateTime date, string kycOfficer, string partnerName)
 {
     ClientId       = clientId;
     StatusCurrent  = statusCurrent;
     StatusPrevious = statusPrevious;
     Date           = date;
     KycOfficer     = kycOfficer;
     PartnerName    = partnerName;
 }
        public async Task AddAsync(string clientId, AccountTier tier, KycStatus status, string comment = null, DateTime?date = null)
        {
            var item = TierUpgradeRequestEntity.Create(clientId, tier, status, comment, date);
            await _tableStorage.InsertOrReplaceAsync(item);

            if (status == KycStatus.Pending)
            {
                var indexEntity = AzureIndex.Create(PendingRequestsIndex, GetPendingRequestIndexRk(clientId, tier), item);
                await _index.InsertOrMergeAsync(indexEntity);
            }
        }
Пример #10
0
        public async Task SetStatusAsync(string clientId, KycStatus status)
        {
            var rowKey = KycEntity.GenerateRowKey(clientId);
            var entity = (await _tableStorage.GetDataRowKeyOnlyAsync(rowKey)).FirstOrDefault();

            if (entity != null)
                await _tableStorage.DeleteAsync(entity);

            if (status == KycEntity.DefaultStatus)
                return;

            entity = KycEntity.Create(clientId, status);
            await _tableStorage.InsertOrReplaceAsync(entity);
        }
Пример #11
0
        public async Task AddAsync(string clientId, AccountTier tier, KycStatus status, string changer)
        {
            ITierUpgradeRequest currentTierRequest = await GetAsync(clientId, tier);

            DateTime?requestDate = null;

            if (currentTierRequest != null && status != KycStatus.Pending)
            {
                requestDate = currentTierRequest.Date;
                await _repository.DeletePendingRequestIndexAsync(clientId, currentTierRequest.Tier);
            }

            await _repository.AddAsync(clientId, tier, status, date : requestDate);

            await _auditLogRepository.InsertRecordAsync(clientId, new AuditLogData
            {
                BeforeJson  = GetStatus(tier, currentTierRequest).ToJson(),
                AfterJson   = (currentTierRequest?.KycStatus == status ? $"{tier}:{status} (updated)" : $"{tier}:{status}").ToJson(),
                CreatedTime = DateTime.UtcNow,
                RecordType  = AuditRecordType.TierUpgradeRequest,
                Changer     = changer
            });

            switch (status)
            {
            case KycStatus.Ok:
                await _clientAccountClient.ClientAccount.ChangeAccountTierAsync(clientId, new AccountTierRequest { Tier = tier });

                break;

            case KycStatus.Rejected:
            case KycStatus.RestrictedArea:
                await _kycStatusService.ChangeKycStatusAsync(clientId, status, nameof(TierUpgradeService));

                break;
            }

            if (currentTierRequest?.KycStatus != status)
            {
                CqrsEngine.PublishEvent(new TierUpgradeRequestChangedEvent
                {
                    ClientId  = clientId,
                    Tier      = tier,
                    OldStatus = currentTierRequest?.KycStatus,
                    NewStatus = status
                }, TierBoundedContext.Name);
            }
        }
Пример #12
0
        public async Task <bool> ChangeKycStatus(string clientId, KycStatus kycStatus, string changer)
        {
            var currentStatus = await _kycRepository.GetKycStatusAsync(clientId);

            if (currentStatus != kycStatus)
            {
                await _kycRepository.SetStatusAsync(clientId, kycStatus);

                await _auditLogRepository.AddAuditRecordAsync(clientId, currentStatus, kycStatus,
                                                              AuditRecordType.KycStatus, changer);
                await UpdateKycBadge();

                return(true);
            }

            return(false);
        }
Пример #13
0
        public static D3KycStatus GetKycStatus(this KycStatus status)
        {
            switch (status)
            {
            case KycStatus.NeedToFillData:
                return(D3KycStatus.Pending);

            case KycStatus.Pending:
                return(D3KycStatus.Processing);

            case KycStatus.ReviewDone:
            case KycStatus.Ok:
                return(D3KycStatus.Ok);

            default:
                return(D3KycStatus.Failed);
            }
        }
Пример #14
0
        public async Task SetStatusAsync(string clientId, KycStatus status)
        {
            var rowKey = KycEntity.GenerateRowKey(clientId);
            var entity = (await _tableStorage.GetDataRowKeyOnlyAsync(rowKey)).FirstOrDefault();

            if (entity != null)
            {
                await _tableStorage.DeleteAsync(entity);
            }

            if (status == KycEntity.DefaultStatus)
            {
                return;
            }

            entity = KycEntity.Create(clientId, status);
            await _tableStorage.InsertOrReplaceAsync(entity);
        }
        public static KycStatus ToApiModel(this KycStatus status)
        {
            switch (status)
            {
            case KycStatus.NeedToFillData:
                return(KycStatus.NeedToFillData);

            case KycStatus.Ok:
            case KycStatus.ReviewDone:
                return(KycStatus.Ok);

            case KycStatus.RestrictedArea:
                return(KycStatus.RestrictedArea);

            default:
                return(KycStatus.Pending);
            }
        }
        internal static string ToSerializedValue(this KycStatus value)
        {
            switch (value)
            {
            case KycStatus.NeedToFillData:
                return("NeedToFillData");

            case KycStatus.Pending:
                return("Pending");

            case KycStatus.ReviewDone:
                return("ReviewDone");

            case KycStatus.Ok:
                return("Ok");

            case KycStatus.Rejected:
                return("Rejected");

            case KycStatus.RestrictedArea:
                return("RestrictedArea");

            case KycStatus.Complicated:
                return("Complicated");

            case KycStatus.JumioInProgress:
                return("JumioInProgress");

            case KycStatus.JumioOk:
                return("JumioOk");

            case KycStatus.JumioFailed:
                return("JumioFailed");
            }
            return(null);
        }
Пример #17
0
        public Task UpdateCountsAsync(string clientId, AccountTier tier, KycStatus?oldStatus, KycStatus newStatus)
        {
            if (newStatus == KycStatus.Ok && oldStatus.HasValue)
            {
                return(DecrementCountAsync(tier));
            }

            if (!oldStatus.HasValue)
            {
                return(IncrementCountAsync(tier));
            }

            return(Task.CompletedTask);
        }
        /// <summary>
        /// send a single email of a customer that their kyc statsu need to be verify
        /// </summary>
        /// <param name="customerEmail">email of customer</param>
        /// <returns>single customer kyc status</returns>
        public KycStatus GetKycStatus(string customerEmail)
        {
            var kyc = new KycStatus();

            return(kyc);
        }
Пример #19
0
        public async Task <IEnumerable <string> > GetClientsByStatus(KycStatus kycStatus)
        {
            var partitionKey = KycEntity.GeneratePartitionKey(kycStatus);

            return((await _tableStorage.GetDataAsync(partitionKey)).Select(itm => itm.GetClientId()));
        }
Пример #20
0
 public async Task ChangeKycStatus(string clientId, KycStatus kycStatus)
 {
     await _kycRepository.SetStatusAsync(clientId, kycStatus);
     await UpdateKycBadge();
 }
Пример #21
0
 public static string GeneratePartitionKey(KycStatus kycStatus)
 {
     return(kycStatus.ToString());
 }
 public static KycInformationStatusChangeEntity Create(Guid partnerId, Guid adminId, DateTime timestamp, string comment, KycStatus?oldStatus, KycStatus newStatus)
 {
     return(new KycInformationStatusChangeEntity
     {
         PartnerId = partnerId,
         AdminUserId = adminId,
         Comment = comment,
         Timestamp = timestamp,
         NewKycStatus = newStatus,
         OldKycStatus = oldStatus,
     });
 }
 public static TierUpgradeRequestEntity Create(string clientId, AccountTier tier, KycStatus status, string comment, DateTime?date = null)
 {
     return(new TierUpgradeRequestEntity
     {
         PartitionKey = GeneratePk(tier),
         RowKey = GenerateRk(clientId),
         ClientId = clientId,
         Tier = tier,
         KycStatus = status,
         Date = date ?? DateTime.UtcNow,
         Comment = comment
     });
 }
Пример #24
0
        public async Task ChangeKycStatus(string clientId, KycStatus kycStatus)
        {
            await _kycRepository.SetStatusAsync(clientId, kycStatus);

            await UpdateKycBadge();
        }
Пример #25
0
 public async Task<IEnumerable<string>> GetClientsByStatus(KycStatus kycStatus)
 {
     var partitionKey = KycEntity.GeneratePartitionKey(kycStatus);
     return (await _tableStorage.GetDataAsync(partitionKey)).Select(itm => itm.GetClientId());
 }
Пример #26
0
 public static string GeneratePartitionKey(KycStatus kycStatus)
 {
     return kycStatus.ToString();
 }