public async Task <IActionResult> enquiry([FromBody] AccountEnquiryRequest request) { Models.Response b = new Models.Response(); try { if (!ModelState.IsValid) { return(BadRequest(AgencyBanking.Helpers.Utility.GetResponse(ModelState))); } var tuple = await _orclRepo.GetAccountEnquiryByAccountNumber(request); if (!tuple.Item2.status) { return(StatusCode((int)HttpStatusCode.InternalServerError, tuple.Item2)); } b = tuple.Item1; } catch (Exception ex) { _logger.LogError($"{request.accountNumber}:- {Environment.NewLine} {ex.ToString()}"); return(StatusCode((int)HttpStatusCode.InternalServerError, AgencyBanking.Helpers.Utility.GetResponse(ex))); } return(CreatedAtAction("enquiry", b)); }
public async Task TestAccountEnquiry() { VPAEnquiryResponse response = new VPAEnquiryResponse(); VPATranslateResponse vtr = new VPATranslateResponse(); VPAInformation vInfo = new VPAInformation(); PersonalInformation pInfo = new PersonalInformation(); AccountInformation aInfo = new AccountInformation(); MerchantInformation mInfo = new MerchantInformation(); List <AssociatedVpas> aVpas = new List <AssociatedVpas>(); VPAEnquiryRequest req = new VPAEnquiryRequest(); AccountEnquiryRequest arequest = new AccountEnquiryRequest() { channelCode = 5, instructedInstitutionCode = "202", instructingInstitutionCode = "11", requestId = "jh3r4y75hui", targetAccountNumber = "2024878029" }; AccountInformation ainf = new AccountInformation(); VPAEnquiryController controller = new VPAEnquiryController(getCacheSettings(), getAppSettings(), response, vtr, vInfo, pInfo, aInfo, mInfo, aVpas, req); ainf = await controller.testAccountEnquiry(arequest); Assert.NotNull(ainf.accountNumber); Assert.Equal(arequest.targetAccountNumber, ainf.accountNumber); }
//Unit test Methods public async Task <AccountInformation> testAccountEnquiry(AccountEnquiryRequest arequest) { AccountInformation ai = new AccountInformation(); try { // Open database (or create if not exits) PersonalInformation pi = new PersonalInformation(); pi.email = "*****@*****.**"; pi.mobilePhoneNumber = "2348012345678"; AccountInformation a = new AccountInformation(); a.accountCategory = 1; a.accountCurrency = "NGN"; a.accountEntityName = "Eddy Murphy"; a.accountFirstName = "Eddy"; a.accountLastName = "Murphy"; a.accountMiddleName = "Olawale"; a.accountNumber = arequest.targetAccountNumber; a.accountStatus = "Active"; a.accountType = "Savings"; a.authorizationCredentialsAllowed = arequest.instructedInstitutionCode; a.authorizationCredentialsLength = "4"; a.authorizationCredentialsType = "PIN"; a.error = ""; a.error_description = ""; a.http_status_code = 200; a.personalinformation = pi; a.verificationNumber = "12345678909876543210"; a.verificationNumberType = "BVN"; string json = JsonHelper.toJson(a); try { var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); string result = await content.ReadAsStringAsync(); ai = JsonHelper.fromJson <AccountInformation>(result); } catch (Exception ec) { testLogException(new VPAEnquiryException() { action = "Error deserializing translate response: " + json, exception = ec.ToString(), requestId = "Test", logTime = DateTime.Now }); } } catch (Exception ex) { } return(ai); }
public async Task <AccountInformation> accountEnquiry(AccountEnquiryRequest request) { AccountInformation ai = new AccountInformation(); string reqString = string.Empty; string resultContent = string.Empty; string _ContentType = "application/json"; string baseUri = _settings.Value.accountEnquiryUri; try { using (var client = new HttpClient()) { AccountEnquiryRequest areq = new AccountEnquiryRequest() { channelCode = request.channelCode, instructedInstitutionCode = request.instructedInstitutionCode, instructingInstitutionCode = request.instructingInstitutionCode, requestId = request.requestId, targetAccountNumber = request.targetAccountNumber }; reqString = JsonHelper.toJson(areq); var content = new StringContent(reqString, Encoding.UTF8, _ContentType); var result = await client.PostAsync(baseUri + "accountenquiry", content); resultContent = await result.Content.ReadAsStringAsync(); }; try { ai = JsonHelper.fromJson <AccountInformation>(resultContent); } catch (Exception ec) { await logException(new VPAEnquiryException() { action = "Error deserializing account enquiry response: " + resultContent, exception = ec.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } } catch (Exception ex) { } return(ai); }
public async Task <IActionResult> enquirybyaccountno([FromBody] AccountEnquiryRequest request) { AccountEnquiryResponse b = new AccountEnquiryResponse(); try { if (!ModelState.IsValid) { return(BadRequest(Commons.Helpers.Utility.GetResponse(ModelState))); } b = await _orclRepo.GetAccountEnquiryByAccountNumber(request); } catch (Exception ex) { _logger.LogError($"{request.accountNumber}:- {Environment.NewLine} {ex.ToString()}"); return(StatusCode((int)HttpStatusCode.InternalServerError, Commons.Helpers.Utility.GetResponse(ex))); } return(CreatedAtAction("enquirybyaccountno", b)); }
public async Task <VPAEnquiryResponse> AddressEnquiry([FromBody] VPAEnquiryRequest request) { //VPAEnquiryResponse response = new VPAEnquiryResponse(); //VPATranslateResponse vpaTranslateResponse = new VPATranslateResponse(); //VPAInformation vInfo = new VPAInformation(); //PersonalInformation pInfo = new PersonalInformation(); //AccountInformation aInfo = new AccountInformation(); //MerchantInformation mInfo = new MerchantInformation(); //List<AssociatedVpas> aVpas = new List<AssociatedVpas>(); //log request on mongo try { //VPAEnquiryRequest req = new VPAEnquiryRequest() //{ // channelCode = request.channelCode, // instructedInstitutionCode = request.instructedInstitutionCode, // instructingInstitutionCode = request.instructingInstitutionCode, // requestId = request.requestId, // targetVPA = request.targetVPA, // updatedOn = DateTime.Now //}; _req.channelCode = request.channelCode; _req.instructedInstitutionCode = request.instructedInstitutionCode; _req.instructingInstitutionCode = request.instructingInstitutionCode; _req.requestId = request.requestId; _req.targetVPA = request.targetVPA; _req.updatedOn = DateTime.Now; VPAEnquiryRequestValidator validator = new VPAEnquiryRequestValidator(); ValidationResult results = validator.Validate(_req); bool validationSucceeded = results.IsValid; IList <ValidationFailure> failures = results.Errors; if (!validationSucceeded) { string desc = string.Empty; foreach (var f in failures) { desc = desc + f.ErrorMessage; } _response.httpStatusCode = (int)HttpStatusCode.BadRequest; _response.error = "Bad Request"; _response.errorDescription = desc; return(_response); } //if (!_settings.Value.isTest) if (_settings.Value.isTest) { string bs = testLogRequest(_req); } else { await _requestRepository.AddVPAEnquiryRequest(_req); } } catch (Exception ex) { await logException(new VPAEnquiryException() { action = "Error Logging Incoming Request: " + request.targetVPA, exception = ex.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } //check cache for details try { _response = await vpaEnquiry(request.targetVPA); if (_response != null && _response.httpStatusCode != 0) { return(_response); } } catch (Exception ex) { await logException(new VPAEnquiryException() { action = "Error Fetching Request From Cache: " + request.targetVPA, exception = ex.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } //assume OK _response.httpStatusCode = (int)HttpStatusCode.OK; ///vpa translate call try { if (_settings.Value.isTest) { //testLogtranslate(request.targetVPA); _vpaTranslateResponse = await testvpaEnquiry(request); } else { _vpaTranslateResponse = await vpaEnquiry(request); } bool OK = _vpaTranslateResponse.httpStatusCode == (int)HttpStatusCode.OK || _vpaTranslateResponse.httpStatusCode == (int)HttpStatusCode.Created || _vpaTranslateResponse.httpStatusCode == (int)HttpStatusCode.Accepted; if (_vpaTranslateResponse == null || !OK) { _response.httpStatusCode = _vpaTranslateResponse.httpStatusCode; _response.error = _vpaTranslateResponse.error; _response.errorDescription = _vpaTranslateResponse.errorDescription; return(_response); } _aVpas = new List <AssociatedVpas>(); foreach (var avpa in _vpaTranslateResponse.associatedVpas) { AssociatedVpas aVpa = new AssociatedVpas() { limit = avpa.limit, vpaId = avpa.vpaId }; _aVpas.Add(aVpa); } _vInfo = new VPAInformation() { associatedVpas = _aVpas, hasAssociatedVPA = _vpaTranslateResponse.hasAssociatedVpas, virtualPaymentAddress = _vpaTranslateResponse.vpaId }; _response.vpaInformation = _vInfo; _pInfo = new PersonalInformation() { email = _vpaTranslateResponse.contactInformation.email, mobilePhoneNumber = _vpaTranslateResponse.contactInformation.phone }; _response.personalInformation = _pInfo; _mInfo = new MerchantInformation() { companyName = _vpaTranslateResponse.merchantInformation.companyName, rcNumber = _vpaTranslateResponse.merchantInformation.rcNumber, tin = _vpaTranslateResponse.merchantInformation.tin }; _response.merchantInformation = _mInfo; } catch (Exception ex) { await logException(new VPAEnquiryException() { action = "Error Translating VPA: " + request.targetVPA, exception = ex.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } //account enquiry call try { if (_vpaTranslateResponse != null && !string.IsNullOrEmpty(_vpaTranslateResponse.accountNumber)) { AccountEnquiryRequest arequest = new AccountEnquiryRequest() { channelCode = request.channelCode, instructedInstitutionCode = request.instructedInstitutionCode, instructingInstitutionCode = request.instructingInstitutionCode, requestId = request.requestId, targetAccountNumber = _vpaTranslateResponse.accountNumber }; if (_settings.Value.isTest) { _aInfo = await testAccountEnquiry(arequest); } else { _aInfo = await accountEnquiry(arequest); } bool OK = _aInfo.http_status_code == (int)HttpStatusCode.OK || _aInfo.http_status_code == (int)HttpStatusCode.Created || _aInfo.http_status_code == (int)HttpStatusCode.Accepted; if (_aInfo == null || !OK) { _response.httpStatusCode = _aInfo.http_status_code; _response.error = _aInfo.error; _response.errorDescription = _aInfo.error_description; return(_response); } _pInfo = new PersonalInformation() { email = _aInfo.personalinformation.email, mobilePhoneNumber = _aInfo.personalinformation.mobilePhoneNumber }; //AccountInformation ai = new AccountInformation() //{ // accountCategory = aInfo.accountCategory, // accountCurrency = aInfo.accountCurrency, // accountEntityName = aInfo.accountEntityName, // accountFirstName = aInfo.accountFirstName, // accountLastName = aInfo.accountLastName, // accountMiddleName = aInfo.accountMiddleName, // accountNumber = aInfo.accountNumber, // accountStatus = aInfo.accountStatus, // accountType = aInfo.accountType, // authorizationCredentialsAllowed = aInfo.authorizationCredentialsAllowed, // authorizationCredentialsLength = aInfo.authorizationCredentialsLength, // authorizationCredentialsType = aInfo.authorizationCredentialsType, // personalinformation = pInfo, // verificationNumber = aInfo.verificationNumber, // verificationNumberType = aInfo.verificationNumberType //}; _response.personalInformation = _pInfo; _response.accountInformation = _aInfo; } } catch (Exception ex) { await logException(new VPAEnquiryException() { action = "Error on Account Enquiry: " + request.targetVPA, exception = ex.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } //add to cache try { string cacheKey = _vpaTranslateResponse.vpaId; string cacheValue = JsonHelper.toJson(_response); await _distributedCache.SetStringAsync(cacheKey, cacheValue); } catch (Exception ex) { await logException(new VPAEnquiryException() { action = "Error Writing Response to Cache: " + request.targetVPA, exception = ex.ToString(), requestId = request.requestId, logTime = DateTime.Now }); } return(_response); }