public async Task SystemVerifyArcForRegisterProcess(long userId)
        {
            UserArc userArc = GetUserArcById(userId);

            if (userArc.ArcIssueDate == null || userArc.ArcExpireDate == null)
            {
                logger.LogError("ARC data error");
                throw new Exception("ARC Data not sufficient");
            }
            ArcValidationResult arcValidationResult = arcValidationTask.Validate(workingRootPath, userArc.ArcNo, ((DateTime)userArc.ArcIssueDate).ToString("yyyyMMdd"), ((DateTime)userArc.ArcExpireDate).ToString("yyyyMMdd"), userArc.BackSequence).Result;

            logger.LogInformation("IsSuccessful:{1}", arcValidationResult.IsSuccessful);
            logger.LogInformation("result:{1}", arcValidationResult.Result);

            if (arcValidationResult.IsSuccessful)
            {
                ArcScanRecord record = new ArcScanRecord()
                {
                    ArcStatus   = (short)SystemArcVerifyStatusEnum.PASS,
                    ScanTime    = DateTime.UtcNow,
                    Description = arcValidationResult.Result,
                    Event       = (byte)ArcScanEvent.Register
                };


                userArc.KycStatus = (short)KycStatusEnum.ARC_PASS_VERIFY;
                // for demo
                if (configuration["IsDemo"] != null && bool.Parse(configuration["IsDemo"]) == true)
                {
                    userArc.KycStatus = (short)KycStatusEnum.AML_PASS_VERIFY;
                }
                //
                userArc.KycStatusUpdateTime = DateTime.UtcNow;
                AddScanRecordAndUpdateUserKycStatus(record, userArc);
                // send mail
                await SendMailForRegisterArc(true, receivers, userId);
            }
            else
            {
                ArcScanRecord record = new ArcScanRecord()
                {
                    ArcStatus   = (short)SystemArcVerifyStatusEnum.FAIL,
                    ScanTime    = DateTime.UtcNow,
                    Description = arcValidationResult.Result,
                    Event       = (byte)ArcScanEvent.Register
                };
                userArc.KycStatus           = (short)KycStatusEnum.FAILED_KYC;
                userArc.KycStatusUpdateTime = DateTime.UtcNow;
                AddScanRecordAndUpdateUserKycStatus(record, userArc);
                // send mail
                await SendMailForRegisterArc(false, receivers, userId);
            }
        }
Exemple #2
0
        public async Task SystemVerifyArcForRemitProcess(RemitRecord remitRecord, long userId)
        {
            UserArc userArc = userService.GetUserArcById(userId);

            if (userArc.ArcIssueDate == null || userArc.ArcExpireDate == null)
            {
                throw new Exception("ARC Data not sufficient");
            }
            ArcValidationResult arcValidationResult = arcValidationTask.Validate(workingRootPath, userArc.ArcNo, ((DateTime)userArc.ArcIssueDate).ToString("yyyyMMdd"), ((DateTime)userArc.ArcExpireDate).ToString("yyyyMMdd"), userArc.BackSequence).Result;

            if (arcValidationResult.IsSuccessful)
            {
                ArcScanRecord record = new ArcScanRecord()
                {
                    ArcStatus   = (short)SystemArcVerifyStatusEnum.PASS,
                    ScanTime    = DateTime.UtcNow,
                    Description = arcValidationResult.Result,
                    Event       = (byte)ArcScanEvent.Remit
                };

                remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.SuccessfulArcVerification;
                // for demo
                if (configuration["IsDemo"] != null && bool.Parse(configuration["IsDemo"]) == true)
                {
                    remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.SuccessfulAmlVerification;
                }
                //
                AddScanRecordAndUpdateUserKycStatus(record, userArc, remitRecord);
                // send mail
                await SendMailForRemitArc(true, receivers, userId);
            }
            else
            {
                ArcScanRecord record = new ArcScanRecord()
                {
                    ArcStatus   = (short)SystemArcVerifyStatusEnum.FAIL,
                    ScanTime    = DateTime.UtcNow,
                    Description = arcValidationResult.Result,
                    Event       = (byte)ArcScanEvent.Remit
                };
                remitRecord.TransactionStatus = (short)RemitTransactionStatusEnum.FailedVerified;
                userArc.KycStatus             = (short)KycStatusEnum.FAILED_KYC;
                userArc.KycStatusUpdateTime   = DateTime.UtcNow;
                AddScanRecordAndUpdateUserKycStatus(record, userArc, remitRecord);
                // send mail
                await SendMailForRemitArc(false, receivers, userId);

                // push notification
                await notificationService.SaveAndSendNotification((int)userId, "Unsuccessful Remit", "You do not pass The KYC procedure", "en-US");
            }
        }