Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        //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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }