<?php

/*
 * Adding ChargeBee php librariesand configuration files.
 */
require_once dirname(__FILE__) . "/Config.php";
require_once dirname(__FILE__) . "/ErrorHandler.php";
require_once dirname(__FILE__) . "/Util.php";
if ($_POST) {
    validateParameters($_POST);
    try {
        $result = createSubscription();
        addShippingAddress($result->subscription(), $result->customer());
        $jsonResp = array();
        /*
         * Forwarding to success page after successful create subscription in ChargeBee.
         */
        $queryParameters = "name=" . urlencode($result->customer()->firstName) . "&planId=" . urlencode($result->subscription()->planId);
        $jsonResp["forward"] = "thankyou.html";
        echo json_encode($jsonResp, true);
    } catch (ChargeBee_PaymentException $e) {
        handleTempTokenErrors($e);
    } catch (ChargeBee_InvalidRequestException $e) {
        handleInvalidRequestErrors($e, "plan_id");
    } catch (Exception $e) {
        handleGeneralErrors($e);
    }
}
/* Creates the subscription in ChargeBee using the checkout details and 
 * stripe temporary token provided by stripe.
 */
 } else {
     if ($demoName == "stripe_js") {
         createPlan("Annual", "annual", 2000);
         $returnParameters = "demo_name=Stripe Js&plan=Basic";
     } else {
         if ($demoName == "estimate") {
             $addon1 = createAddon("Wall Posters", "wall-posters", 300, "quantity");
             $addon2 = createAddon("E Book", "e-book", 200);
             $plan = createPlan("Monthly", "monthly", 600);
             $returnParameters = "demo_name=Estimate api&plan=Monthly&addon=E-book&addon=Wall Posters";
         } else {
             if ($demoName == "usage_based_billing") {
                 $returnParameters = "msg=To generate a <b>\"Pending\" </b> invoice, you need to enable <b>\"Notify and wait to close invoice\"</b> " . "in your site settings. Once enabled, try to generate an invoice for a subscription by changing " . "the subscription's plan.";
             } else {
                 if ($demoName == "ssp") {
                     createSubscription("John", "Doe", "*****@*****.**");
                     $returnParameters = "demo_name=Self service portal&plan=Basic&customer=John Doe";
                 } else {
                     if ($demoName == "stripe-popup-js") {
                         createPlan("Basic", "basic", 1000, 15);
                         $returnParameters = "demo_name=Stripe checkout popup&plan=Basic";
                     } else {
                         if ($demoName == "braintree-js") {
                             createPlan("Professional", "professional", 20, 10);
                             $returnParameters = "demo_name=Braintree js Checkout&plan=Professional";
                         } else {
                             if ($demoName == "checkout_iframe") {
                                 createPlan("Basic", "basic", 1000, 15);
                                 $returnParameters = "demo_name=Checkout using iFrame&plan=Basic";
                             } else {
                                 header("HTTP/1.0 400 Error");