public string PrintFastOverdraftContract(long docId, ulong customerNumber, bool fromApprove = false)
        {
            string                      result       = null;
            LoanProductOrder            productOrder = _xBService.GetCreditLineOrder(docId);
            Card                        card         = _xBService.GetCardWithOutBallance(productOrder.ProductAccount.AccountNumber);
            Dictionary <string, string> contractInfo = _xBService.GetDepositCreditLineContractInfo((int)docId).ToDictionary(x => x.Key, x => x.Value);

            CreditLinePrecontractData precontractData = _xBService.GetCreditLinePrecontractData(productOrder.StartDate, productOrder.EndDate, productOrder.InterestRate,
                                                                                                0, card.CardNumber, productOrder.Currency, productOrder.Amount, 8);
            short  filialCode   = _xBService.GetCustomerFilial();
            double penaltyRate  = _xBInfoService.GetPenaltyRateOfLoans(54, productOrder.StartDate);
            string contractName = "CreditLineContract";

            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add(key: "customerNumberHB", value: customerNumber.ToString());

            Contract contract = null;

            if (fromApprove == true)
            {
                contract = new Contract();

                parameters.Add(key: "attachFile", value: "1");
                contract.AttachDocType  = 12;
                contract.AttachFile     = 1;
                contract.ContractName   = contractName;
                contract.DocID          = (int)docId;
                contract.ParametersList = new List <ContractServiceRef.StringKeyValue>();
            }

            parameters.Add(key: "appID", value: "0");
            parameters.Add(key: "bln_with_enddate", value: "True");
            parameters.Add(key: "visaNumberHB", value: card.CardNumber);
            parameters.Add(key: "HbDocID", value: docId.ToString());
            parameters.Add(key: "dateOfBeginningHB", value: productOrder.StartDate.ToString("dd/MMM/yy"));


            parameters.Add(key: "currencyHB", value: productOrder.Currency);
            parameters.Add(key: "penaltyAddPercentHB", value: penaltyRate.ToString());
            parameters.Add(key: "startCapitalHB", value: productOrder.Amount.ToString());
            parameters.Add(key: "clientTypeHB", value: "");
            parameters.Add(key: "filialCodeHB", value: filialCode.ToString());
            parameters.Add(key: "creditLineTypeHB", value: "54");
            parameters.Add(key: "provisionNumberHB", value: "01");
            parameters.Add(key: "interestRateHB", value: productOrder.InterestRate.ToString());
            parameters.Add(key: "securityCodeHB", value: contractInfo["security_code_2"].ToString());

            parameters.Add(key: "loanProvisionPercentHB", value: "0");

            parameters.Add(key: "interestRateFullHB", value: (precontractData.InterestRate / 100).ToString());
            parameters.Add(key: "connectAccountFullNumberHB", value: productOrder.ProductAccount.AccountNumber);
            parameters.Add(key: "interestRateEffectiveWithoutAccountServiceFee", value: precontractData.InterestRateEffectiveWithoutAccountServiceFee.ToString());
            parameters.Add(key: "dateOfNormalEndHB", value: productOrder.EndDate.ToString("dd/MMM/yy"));
            parameters.Add(key: "RepaymentKurs", value: contractInfo["repayment_kurs"].ToString() == null ? "0" : contractInfo["repayment_kurs"].ToString());

            result = _contractService.RenderContract(contractName, parameters, "FastOverdraftContract.pdf", contract);

            //File.WriteAllBytes(@"C:\YourPDFLoan.pdf", result);
            return(result);
        }
        public string PrintDepositCreditLineContract(long docId, ulong customerNumber, bool fromApprove = false)
        {
            string                    result           = null;
            LoanProductOrder          loanProductOrder = _xBService.GetCreditLineOrder(docId);
            Card                      card             = _xBService.GetCardWithOutBallance(loanProductOrder.ProductAccount.AccountNumber);
            CreditLinePrecontractData preContractDate  = _xBService.GetCreditLinePrecontractData(loanProductOrder.StartDate,
                                                                                                 (loanProductOrder.ProductType == 51 || loanProductOrder.ProductType == 50) ? loanProductOrder.ValidationDate.Value : loanProductOrder.EndDate,
                                                                                                 loanProductOrder.InterestRate, 0, card.CardNumber, loanProductOrder.Currency, loanProductOrder.Amount, 8);
            Dictionary <string, string> contractInfo = _xBService.GetDepositCreditLineContractInfo((int)docId).ToDictionary(x => x.Key, x => x.Value);
            short  fillialCode      = _xBService.GetCustomerFilial();
            int    cardType         = _xBService.GetCardType(card.CardNumber);
            double kursForLoan      = _xBService.GetCBKursForDate(loanProductOrder.StartDate, loanProductOrder.Currency);
            double kursForProvision = _xBService.GetCBKursForDate(loanProductOrder.StartDate, loanProductOrder.PledgeCurrency);
            double decreasingAmount = _xBService.GetCreditLineDecreasingAmount(loanProductOrder.Amount, loanProductOrder.Currency,
                                                                               loanProductOrder.StartDate, (loanProductOrder.ProductType == 51 || loanProductOrder.ProductType == 50) ? loanProductOrder.ValidationDate.Value : loanProductOrder.EndDate);
            double penaltyRate = _xBInfoService.GetPenaltyRateOfLoans(30, loanProductOrder.StartDate);

            string contractName = string.Empty;


            if (cardType != 40)
            {
                contractName = "CreditLineContract";
            }
            else
            {
                contractName = "CreditLineAmex";
            }

            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add(key: "customerNumberHB", value: customerNumber.ToString());
            Contract contract = null;

            if (fromApprove == true)
            {
                contract = new Contract();

                parameters.Add(key: "attachFile", value: "1");
                contract.AttachDocType  = 12;
                contract.AttachFile     = 1;
                contract.ContractName   = contractName;
                contract.DocID          = (int)docId;
                contract.ParametersList = new List <ContractServiceRef.StringKeyValue>();
            }


            parameters.Add(key: "appID", value: "0");
            parameters.Add(key: "bln_with_enddate", value: "True");
            parameters.Add(key: "visaNumberHB", value: card.CardNumber);
            parameters.Add(key: "HbDocID", value: docId.ToString());
            parameters.Add(key: "dateOfBeginningHB", value: loanProductOrder.StartDate.ToString("MM/dd/yyyy"));
            parameters.Add(key: "currencyHB", value: loanProductOrder.Currency);
            parameters.Add(key: "penaltyAddPercentHB", value: penaltyRate.ToString());
            parameters.Add(key: "startCapitalHB", value: loanProductOrder.Amount.ToString());
            parameters.Add(key: "provisionNumberHB", value: "01");
            parameters.Add(key: "clientTypeHB", value: "");
            parameters.Add(key: "filialCodeHB", value: fillialCode.ToString());
            parameters.Add(key: "creditLineTypeHB", value: loanProductOrder.ProductType.ToString());

            parameters.Add(key: "securityCodeHB", value: contractInfo["security_code_2"].ToString());
            parameters.Add(key: "loanProvisionPercentHB", value: ((loanProductOrder.Amount * kursForLoan) / (loanProductOrder.ProvisionAmount * kursForProvision) * 100).ToString());
            parameters.Add(key: "interestRateHB", value: loanProductOrder.InterestRate.ToString());


            parameters.Add(key: "interestRateFullHB", value: (preContractDate.InterestRate / 100).ToString());
            parameters.Add(key: "connectAccountFullNumberHB", value: loanProductOrder.ProductAccount.AccountNumber.ToString());
            parameters.Add(key: "interestRateEffectiveWithoutAccountServiceFeeHB", value: preContractDate.InterestRateEffectiveWithoutAccountServiceFee.ToString());
            if (cardType == 40)
            {
                parameters.Add(key: "contractPersonCountHB", value: "2");
            }

            parameters.Add(key: "repaymentPercentHB", value: contractInfo["repayment_percent"].ToString());
            parameters.Add(key: "RepaymentKurs", value: contractInfo["repayment_kurs"].ToString() == null ? "0" : contractInfo["repayment_kurs"].ToString());
            parameters.Add(key: "decrAmountHB", value: loanProductOrder.ProductType == 50 ? decreasingAmount.ToString() : "0");

            result = _contractService.RenderContract(contractName, parameters, contractName + ".pdf", contract);
            return(result);
        }