Example #1
0
        public void FromXmlTest()
        {
            /*
             * Assume:     ToXml(string) is correct.
             */
            var kycRequest = new KycRequest();
            var xml        = XElement.Parse(File.ReadAllText(Data.KycRequestXml)).Elements().ToArray();

            // Validate null argument.
            Assert.Throws <ArgumentNullException>("element", () => kycRequest.FromXml(null));

            // XML must be same after loading and deserializing it.
            foreach (var element in xml)
            {
                kycRequest.FromXml(element);
                Assert.True(XNode.DeepEquals(element, kycRequest.ToXml("Kyc")));
            }
        }
Example #2
0
        public static async Task <Models.ApiViewModels.ApiAccountKycRequest> CreateKycRequest(ILogger logger, ApplicationDbContext context,
                                                                                              UserManager <ApplicationUser> userManager, KycSettings kycSettings, string applicationUserId, string email)
        {
            // check request does not already exist
            var kycReq = context.KycRequests.Where(r => r.ApplicationUserId == applicationUserId).FirstOrDefault();

            if (kycReq != null)
            {
                return(await CheckKycRequest(logger, context, userManager, kycSettings, applicationUserId, kycReq.Token));
            }
            // call kyc server to create request
            var token    = Utils.CreateToken();
            var jsonBody = JsonConvert.SerializeObject(new { api_key = kycSettings.KycServerApiKey, token = token, email = email });
            var response = RestUtils.ServiceRequest(kycSettings.KycServerUrl, "request", kycSettings.KycServerApiSecret, jsonBody);

            if (response.IsSuccessful)
            {
                var json = JsonConvert.DeserializeObject <Dictionary <string, string> >(response.Content);
                if (json.ContainsKey("status"))
                {
                    var status = json["status"];
                    // save to database
                    var date = DateTimeOffset.Now.ToUnixTimeSeconds();
                    kycReq = new KycRequest {
                        ApplicationUserId = applicationUserId, Date = date, Token = token
                    };
                    context.KycRequests.Add(kycReq);
                    context.SaveChanges();
                    // return to user
                    var model = new viafront3.Models.ApiViewModels.ApiAccountKycRequest
                    {
                        Token      = token,
                        ServiceUrl = $"{kycSettings.KycServerUrl}/request/{token}",
                        Status     = status,
                    };
                    return(model);
                }
            }
            else
            {
                logger.LogError($"kyc request ({kycSettings.KycServerUrl}) failed with http statuscode: {response.StatusCode}");
            }
            return(null);
        }
        public ActionResult <MessageModel <Object> > ChangeUserKyc([FromBody] KycRequest kycRequest, [FromRoute, SwaggerParameter("使用者ID", Required = true)] long userId)
        {
            UserArc userArc = userService.GetUserArcById(userId);

            if (userArc == null)
            {
                return(BadRequest(new MessageModel <Object>
                {
                    Status = (int)HttpStatusCode.BadRequest,
                    Success = false,
                    Msg = "User does not exist"
                }));;
            }

            var result = new MessageModel <Object>
            {
                Status  = (int)HttpStatusCode.BadRequest,
                Success = false,
                Msg     = "Fail to Operate"
            };

            if (userService.ChangeKycStatusByUserId((KycStatusEnum)kycRequest.KycStatus, userId))
            {
                if ((KycStatusEnum)kycRequest.KycStatus == KycStatusEnum.PASSED_KYC_FORMAL_MEMBER)
                {
                    notificationService.SaveAndSendNotification((int)userId, "Successful Registration", "Your registration have been confirmed", "en-US");
                }
                if ((KycStatusEnum)kycRequest.KycStatus == KycStatusEnum.FAILED_KYC)
                {
                    notificationService.SaveAndSendNotification((int)userId, "Unsuccessful Registration", "You do not pass The KYC procedure", "en-US");
                }


                result.Status  = (int)HttpStatusCode.OK;
                result.Success = true;
                result.Msg     = "Successful Operation";
                return(Ok(result));
            }

            return(BadRequest(result));
        }