private void ValidateUser(string CustomerIdOrEmail, xCompanyUser user) { if (user == null) { ViewBag.Error = $"No User Exist for entered Email or Id - {CustomerIdOrEmail}"; } else if (user.Id <= 0) { ViewBag.Error = $"User Id is 0 - {CustomerIdOrEmail}"; } else if (user.Email == null) { ViewBag.Error = $"User Email is null - {CustomerIdOrEmail}"; } else if (user.FirstName == null) { ViewBag.Error = $"User First name is null - {CustomerIdOrEmail}"; } else if (user.LastName == null) { ViewBag.Error = $"User Last name is null - {CustomerIdOrEmail}"; } else if (user.BankName == null) { ViewBag.Error = $"User Bank name is null - {CustomerIdOrEmail}"; } else if (user.AccountName == null) { ViewBag.Error = $"User Account name is null - {CustomerIdOrEmail}"; } else if (user.AccountType == null) { ViewBag.Error = $"User Account type is null - {CustomerIdOrEmail}"; } else if (user.AccountNumber == null) { ViewBag.Error = $"User Account number is null - {CustomerIdOrEmail}"; } else if (user.RoutingNumber == null) { ViewBag.Error = $"User Routing number is null - {CustomerIdOrEmail}"; } }
public async Task <IActionResult> GetCustomer(string CustomerIdOrEmail) { //get user from xCompany database xCompanyUser user = null; long customerId = 0; if (Int64.TryParse(CustomerIdOrEmail, out customerId)) { user = await _xCompanyRepository.GetUserDetailsByUserId(customerId); } else { user = await _xCompanyRepository.GetUserDetailsByEmail(CustomerIdOrEmail); } ValidateUser(CustomerIdOrEmail, user); if (ViewBag.Error == null) { await Log("User validation success", user, user); //create customer in dwolla var customerLocation = await _dwollaService.CreateCustomerAsync(user.FirstName, user.LastName, user.Email); await Log("Create customer completed", user, customerLocation); var customer = await _dwollaService.GetCustomerAsync(customerLocation); await Log("Get customer completed", user, customer.Id); //add funcding source for the customer var fundingSource = await _dwollaService.CreateFundingSourceAsync(customerLocation, user.RoutingNumber, user.AccountNumber, user.AccountType, user.AccountName); await Log("Create Funding source completed", user, fundingSource); //get fundingsource id var fundingSourceId = fundingSource?.AbsolutePath.Substring(fundingSource.AbsolutePath.LastIndexOf("/") + 1); //initiate micro depolist var statusCode = await _dwollaService.InitiateMicroDepositAsync(fundingSource); await Log("Initiate Micro deposit completed", user, $"Status code: {statusCode}"); //verify micro deposit var microDepositStatusCode = await _dwollaService.VerifyMicroDepositsAsync(fundingSource, 0.01M, 0.02M); await Log("Verify micro deposit completed", user, $"Status code: {microDepositStatusCode}"); if (microDepositStatusCode == HttpStatusCode.OK) { var userProvider = await _xCompanyRepository.GetUserProviderByUserId(user.Id); if (userProvider == null) { userProvider = new UserProvider(); userProvider.ProviderId = 8; userProvider.ProviderName = "dwolla"; userProvider.AccessToken = fundingSourceId; userProvider.TokenType = "Student-Repayment"; userProvider.MerchantId = customer.Id; userProvider.Scope = null; userProvider.xCompanyUserId = user.Id; userProvider.GoCardlessId = null; userProvider.MandateResourceId = null; userProvider.MandateScheme = null; userProvider.WebhookAction = null; userProvider.WebhookCause = null; userProvider.RedirectFlowId = null; //userProvider.MicroDepositBankVerificationId = null; } userProvider.UpdatedOnUtc = DateTime.UtcNow; await _xCompanyRepository.SaveUserProvider(userProvider); await Log("User provider save completed", user, $"User provider id: {userProvider.Id}"); } var logs = await _xCompanyRepository.GetDwollaLogByUserId(user.Id); return(View("Index", logs)); } return(View("Index")); }
private async Task Log(string eventName, xCompanyUser user, Object obj) { var data = obj != null?JsonConvert.SerializeObject(obj) : null; await _xCompanyRepository.SaveDwollaLog(new UtilityDwollaLog { EventName = eventName, UserId = user.Id, LogData = data, CreatedByUser = "******" }); }