diff --git a/airtime_mvc/application/common/Billing.php b/airtime_mvc/application/common/Billing.php index 5a28aff8c..137451172 100644 --- a/airtime_mvc/application/common/Billing.php +++ b/airtime_mvc/application/common/Billing.php @@ -329,150 +329,4 @@ class Billing $result = Billing::makeRequest($credentials["url"], $query_string); } - /** - * Returns an array of the current Airtime Pro plan IDs. - * This excludes any old, free, promotional, or custom plans. - */ - public static function getCurrentPaidProductIds() - { - $products = self::getProducts(); - $productIds = array(); - foreach ($products as $k => $p) { - array_push($productIds, $p["pid"]); - } - - return $productIds; - } - - /** - * Returns an array of the Awesome August 2015 Promotional plans - */ - public static function getAwesomeAugustPromoProducts() - { - $credentials = self::getAPICredentials(); - - $postfields = array(); - $postfields["username"] = $credentials["username"]; - $postfields["password"] = md5($credentials["password"]); - $postfields["action"] = "getproducts"; - $postfields["responsetype"] = "json"; - //gid is the Airtime product group id on whmcs - $postfields["gid"] = WHMCS_AIRTIME_GROUP_ID; - - $query_string = ""; - foreach ($postfields AS $k=>$v) $query_string .= "$k=".urlencode($v)."&"; - - $result = self::makeRequest($credentials["url"], $query_string); - $promoProducts = $result["products"]["product"]; - - foreach ($promoProducts as $k => $p) { - if (strpos($p["name"], "Awesome August 2015") === false) { - unset($promoProducts[$k]); - } - } - - return $promoProducts; - } - - /** - * Returns the eligible promo plan ID that corresponds to the regular paid plan. - * - * i.e. if the client wants to upgrade to the Plus plan this function returns the - * plan id of the Awesome August 2015 Plus plan. - */ - public static function getEligibleAwesomeAugustPromoPlanId($productName) - { - $promoPlans = self::getAwesomeAugustPromoProducts(); - $promoPlanId = ""; - - foreach($promoPlans as $k => $p) { - if (strpos($p["name"], $productName) !== false) { - $promoPlanId = $p["pid"]; - break; - } - } - - return $promoPlanId; - } - - public static function getProductName($productId) - { - $products = self::getProducts(); - $productName = ""; - - foreach($products as $k => $p) { - if ($p["pid"] == $productId) { - $productName = $p["name"]; - break; - } - } - - return $productName; - } - - public static function isClientEligibleForPromo($newProductId, $newProductBillingCycle) - { - // use this to check if client is upgrading from an old plan - $currentPaidPlanProductIds = self::getCurrentPaidProductIds(); - - $currentPlanProduct = self::getClientCurrentAirtimeProduct(); - $currentPlanProductId = $currentPlanProduct["pid"]; - $currentPlanBillingCycle = strtolower($currentPlanProduct["billingcycle"]); - - if (self::isClientOnAwesomeAugustPromoPlan($currentPlanProductId)) { - - $newEligiblePromoId = self::getEligibleAwesomeAugustPromoPlanId( - self::getProductName($newProductId) - ); - - if ($newProductBillingCycle == "annually" || $newEligiblePromoId > $currentPlanProductId) { - return true; - } else { - return false; - } - } - - // if client is on trial plan, YES - if ($currentPlanProductId == AIRTIME_PRO_FREE_TRIAL_PLAN_ID) { - return true; - } - - // if client is currently on monthly or annually or old/free plan AND (upgrading OR upgrading/downgrading to annual plan), YES - if ($currentPlanBillingCycle == "monthly" || $currentPlanBillingCycle == "free account" - || $currentPlanBillingCycle == "annually") { - // is the client changing billing cycle to annual? - if ($newProductBillingCycle == "annually") { - return true; - } - - // Is the client staying on monthly and upgrading? - // This won't hold true if the client is on an old/free plan because the - // old/free plan ids are higher than the current paid plan ids. - if ($newProductBillingCycle == "monthly" && $newProductId > $currentPlanProductId) { - return true; - } - - // Is the client staying on monthly and upgrading from an old plan? - if ($newProductBillingCycle == "monthly" && !in_array($currentPlanProductId, $currentPaidPlanProductIds) - && in_array($newProductId, $currentPaidPlanProductIds)) { - return true; - } - } - - return false; - } - - public static function isClientOnAwesomeAugustPromoPlan($currentPlanId) - { - $promoPlans = self::getAwesomeAugustPromoProducts(); - - foreach ($promoPlans as $k => $p) { - if ($p["pid"] == $currentPlanId) { - return true; - } - } - - return false; - } - } diff --git a/airtime_mvc/application/controllers/BillingController.php b/airtime_mvc/application/controllers/BillingController.php index 2952d70ca..0e135e436 100644 --- a/airtime_mvc/application/controllers/BillingController.php +++ b/airtime_mvc/application/controllers/BillingController.php @@ -10,7 +10,6 @@ class BillingController extends Zend_Controller_Action { //Two of the actions in this controller return JSON because they're used for AJAX: $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->addActionContext('vat-validator', 'json') - ->addActionContext('promo-eligibility-check', 'json') ->addActionContext('is-country-in-eu', 'json') ->initContext(); } @@ -20,33 +19,6 @@ class BillingController extends Zend_Controller_Action { $this->_redirect('billing/upgrade'); } - public function promoEligibilityCheckAction() - { - $this->view->layout()->disableLayout(); - $this->_helper->viewRenderer->setNoRender(true); - - $request = $this->getRequest(); - if (!$request->isPost()) { - throw new Exception("Must POST data to promoEligibilityCheckAction."); - } - $data = $request->getPost(); - - $current_namespace = new Zend_Session_Namespace('csrf_namespace'); - $observed_csrf_token = $this->_getParam('csrf_token'); - $expected_csrf_token = $current_namespace->authtoken; - - if($observed_csrf_token == $expected_csrf_token) { - $eligible = Billing::isClientEligibleForPromo( - $data["newproductid"], $data["newproductbillingcycle"]); - - //Set the return JSON value - $this->_helper->json(array("result"=>$eligible)); - } else { - $this->getResponse()->setHttpResponseCode(403); - $this->_helper->json(array("result"=>false, "error"=>"CSRF token did not match.")); - } - } - public function upgradeAction() { @@ -66,14 +38,6 @@ class BillingController extends Zend_Controller_Action { if ($form->isValid($formData)) { - // Check if client is eligible for promo and update the new product id if so - $eligibleForPromo = Billing::isClientEligibleForPromo( - $formData["newproductid"], $formData["newproductbillingcycle"]); - if ($eligibleForPromo) { - $newProductName = Billing::getProductName($formData["newproductid"]); - $formData["newproductid"] = Billing::getEligibleAwesomeAugustPromoPlanId($newProductName); - } - $credentials = Billing::getAPICredentials(); //Check if VAT should be applied or not to this invoice. diff --git a/airtime_mvc/application/views/scripts/billing/upgrade.phtml b/airtime_mvc/application/views/scripts/billing/upgrade.phtml index dbc031522..9cb428b9b 100644 --- a/airtime_mvc/application/views/scripts/billing/upgrade.phtml +++ b/airtime_mvc/application/views/scripts/billing/upgrade.phtml @@ -120,30 +120,6 @@ function configureByCountry(countryCode) }); } -function promoEligibilityCheck() -{ - var newproductid = $("input[type='radio'][name='newproductid']:checked").val(); - - // newproductid can be undefined if the client is currently on an old plan - // and they just change the billing cycle value without selecting a new plan type. - // In this case, let's not check if they are eligible for the promo because - // they won't be able to upgrade without selecting a new plan first. - if (newproductid === undefined) { - return; - } - var newproductbillingcycle = $("input[type='radio'][name='newproductbillingcycle']:checked").val(); - - $.post("/billing/promo-eligibility-check", {"newproductid": newproductid, - "newproductbillingcycle": newproductbillingcycle, "csrf_token": $("#csrf").attr('value')}) - .success(function(data) { - if (data.result == true) { - $("#promo-plan-eligible").show(); - } else if ($("#promo-plan-eligible").is(":visible")) { - $("#promo-plan-eligible").hide(); - } - }); -} - $(document).ready(function() { configureByCountry($("#country").val()); @@ -152,11 +128,9 @@ $(document).ready(function() { $("input[name='newproductid']").change(function() { validatePlan(); recalculateTotals(); - promoEligibilityCheck(); }); $("input[name='newproductbillingcycle']").change(function() { recalculateTotals(); - promoEligibilityCheck(); }); $("#country").change(function() { @@ -196,17 +170,13 @@ $(document).ready(function() {