public ActionResult PrePaymentConfirmation(int id)
        {
            AdhocUserPackageAddOn userAndAddon = new AdhocUserPackageAddOn();

            userAndAddon.UserPackge    = db.AdhocUserPackages.Where(a => a.Id == id).FirstOrDefault();
            userAndAddon.Addons        = db.AdhocUserPackagesAddons.Where(a => a.UserPackageID == id);
            userAndAddon.UserPackageID = id.ToString();
            //adding tax
            if (db.Taxes != null && db.Taxes.Count() > 0)
            {
                var taxPercentage = db.Taxes.Select(a => a.TaxPercentage).Sum();
                userAndAddon.UserPackge.TaxAmount = userAndAddon.TaxAmount = userAndAddon.UserPackge.TotalPrice * (taxPercentage / 100);
                userAndAddon.TaxPercentage        = taxPercentage;
                db.SaveChanges();
            }
            return(View(userAndAddon));
        }
        public ActionResult PrePaymentConfirmation(AdhocUserPackageAddOn package, string UserPackageID)
        {
            if (package.AcceptAgreement == "true")
            {
                var userid    = User.Identity.GetUserId();
                var packageid = Convert.ToInt32(UserPackageID);
                //Get Adhoc Package Details
                var packageDetails = db.AdhocUserPackages.Where(a => a.Id == packageid).FirstOrDefault();
                //Check adhoc package get existing package id which is not processed and latest one.

                var finalPrice        = packageDetails.TotalPrice + packageDetails.TaxAmount + packageDetails.TipAmount;
                var existingPackageID = packageDetails.ExistingPackageId;
                var paymentInfo       = db.PayPalLogs.Where(a => a.UserId == userid && a.ACK == "BillingAgreement").FirstOrDefault();
                //Get Billing Agreement ID
                var billingAgreementID = paymentInfo.BillingAggrementID;
                //Post payment Request to Paypal
                GreenPro.PayPalSystem.DoReferenceTrasaction doRefrenceTransaction = new PayPalSystem.DoReferenceTrasaction();
                string message  = string.Empty;
                var    response = doRefrenceTransaction.DoTransaction(billingAgreementID, packageDetails.Package.Package_Description, packageDetails.Package.Package_Name, Convert.ToDouble(finalPrice), packageDetails.Package.Package_Description, out message);
                if (response.ApiStatus == "SUCCESS")
                {
                    //redirect to success & Log response in AdhocPayment
                    packageDetails.PaymentRecieved = true;
                    db.SaveChanges();
                    return(RedirectToAction("Success", new { id = UserPackageID }));
                }
                else
                {
                    //Redirect to Failure
                    return(View("Failure", new { id = UserPackageID }));
                }

                //return RedirectToAction("ProcessPaypalPayment", "Paypal", new { userpackageid = UserPackageID });
            }
            else
            {
                return(View());
            }
        }