Beispiel #1
0
 public Task <ExecuteConsumerLoanFulfillmentArrangementWithdrawalResponse> ExecuteConsumerLoanFulfillmentArrangementWithdrawalCreateAsync(string cr_reference_id, ExecuteConsumerLoanFulfillmentArrangementWithdrawalRequest body = null)
 {
     return(CreateUpdateWithdrawal(cr_reference_id, body));
 }
Beispiel #2
0
 public Task <ExecuteConsumerLoanFulfillmentArrangementWithdrawalResponse> ExecuteConsumerLoanFulfillmentArrangementWithdrawalUpdateAsync(string cr_reference_id, string bq_reference_id, ExecuteConsumerLoanFulfillmentArrangementWithdrawalRequest body = null)
 {
     return(CreateUpdateWithdrawal(cr_reference_id, body,
                                   () => ParseGuid(bq_reference_id, "bq_reference_id")));
 }
Beispiel #3
0
        private Task <ExecuteConsumerLoanFulfillmentArrangementWithdrawalResponse> CreateUpdateWithdrawal(string cr_reference_id, ExecuteConsumerLoanFulfillmentArrangementWithdrawalRequest body, Func <Guid> retrieveWithdrawalId = null)
        {
            return(Task.Run(() =>
            {
                if (body == null)
                {
                    return new ExecuteConsumerLoanFulfillmentArrangementWithdrawalResponse();
                }
                var loanId = ParseGuid(cr_reference_id, "cr_reference_id");
                ValidateCurrencyIsUSD(body.Currency, body.Amount?.Currency);

                var disbursment = new CdsEntity()
                {
                    Id = loanId,
                    Attributes =
                    {
                        ["msfsi_loanid"] = new CdsEntityReference("msfsi_financialproducts", loanId)
                    }
                };

                if (retrieveWithdrawalId == null || string.IsNullOrEmpty(body.ValueDate) == false)
                {
                    disbursment.Attributes["msfsi_name"] = $"Withdrawal - {body.ValueDate ?? DateTime.Now.ToString(_dateTimeFormat)}";;
                }

                SetDecimalField(disbursment, body?.Amount?.Value, "Amount Value", "msfsi_amount");

                if (string.IsNullOrEmpty(body.PayeeBankReference) == false)
                {
                    disbursment.Attributes["msfsi_bankid"] = FindBank(body.PayeeBankReference);
                }

                Guid id;
                if (retrieveWithdrawalId == null)
                {
                    id = _cdsWebApi.Create("msfsi_syndicateses", disbursment);
                }
                else
                {
                    id = retrieveWithdrawalId();
                    disbursment.Id = id;
                    _cdsWebApi.Update("msfsi_syndicateses", disbursment);
                }

                return new ExecuteConsumerLoanFulfillmentArrangementWithdrawalResponse()
                {
                    Amount = body.Amount,
                    Currency = body.Currency,
                    CustomerReference = body.CustomerReference,
                    WithdrawlInstructionReference = id.ToString(),
                    PayeeBankReference = body.PayeeBankReference,
                    PayeeProductInstanceReference = body.PayeeProductInstanceReference,
                    PayeeReference = body.PayeeReference,
                    ValueDate = body.ValueDate
                };
            }));
        }