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); }
public async Task TestAddressEnquiry() { 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() { channelCode = 8, instructedInstitutionCode = "123", instructingInstitutionCode = "402", requestId = "i88hgtbh", targetVPA = "musaarca", updatedOn = DateTime.Now }; VPAEnquiryResponse respose = new VPAEnquiryResponse(); VPAEnquiryController controller = new VPAEnquiryController(getCacheSettings(), getAppSettings(), response, vtr, vInfo, pInfo, aInfo, mInfo, aVpas, req); respose = await controller.AddressEnquiry(req); Assert.NotNull(respose.httpStatusCode); Assert.Equal((int)HttpStatusCode.OK, respose.httpStatusCode); }
public async Task TestVPAEnquiry() { 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(); VPAEnquiryRequest vrequest = new VPAEnquiryRequest() { channelCode = 7, instructedInstitutionCode = "044", instructingInstitutionCode = "230", requestId = "hdfufsh3652", targetVPA = "fuzzytoocool", updatedOn = DateTime.Now }; VPATranslateResponse vpaTranslateResponse = new VPATranslateResponse(); VPAEnquiryController controller = new VPAEnquiryController(getCacheSettings(), getAppSettings(), response, vtr, vInfo, pInfo, aInfo, mInfo, aVpas, req); vpaTranslateResponse = await controller.testvpaEnquiry(vrequest); //Assert.Equal(v, vpaTranslateResponse); Assert.NotNull(vpaTranslateResponse.vpaId); Assert.Equal(vrequest.targetVPA, vpaTranslateResponse.vpaId); }
//public VPAEnquiryController(IVPAEnquiryRequetRepository requestRepository, IVPAEnquiryRequestPostgreRepo requestPostgreRepo // , IDistributedCache distributedCache, IOptions<AppSettings> settings) //{ // _requestRepository = requestRepository; // _requestPostgreRepo = requestPostgreRepo; // _distributedCache = distributedCache; // _settings = settings; //} public VPAEnquiryController(IDistributedCache distributedCache, IOptions <AppSettings> settings, VPAEnquiryResponse response, VPATranslateResponse vpaTranslateResponse , VPAInformation vInfo, PersonalInformation pInfo, AccountInformation aInfo, MerchantInformation mInfo, List <AssociatedVpas> aVpas, VPAEnquiryRequest req) { _distributedCache = distributedCache; _settings = settings; _req = req; _response = response; _vpaTranslateResponse = vpaTranslateResponse; _aVpas = aVpas; _vInfo = vInfo; _pInfo = pInfo; _aInfo = aInfo; _mInfo = mInfo; }
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); }