HEX
Server: LiteSpeed
System: Linux s917.lon1.mysecurecloudhost.com 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: assibfaf (3034)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/assibfaf/public_html/prox-controllers/Api/Calculator.php
<?php 
/**
 * @package    Proxim
 * @author     Davison Pro <davisonpro.coder@gmail.com | https://davisonpro.dev>
 * @copyright  2019 Proxim
 * @version    1.0.0
 * @since      File available since Release 1.0.0
 */

namespace Proxim\Api;

use Proxim\Route;
use Proxim\Configuration;
use Proxim\Currency;
use Proxim\Preference\Deadline;
use Proxim\Preference\PaperType;
use Proxim\Presenter\Deadline\DeadlinePresenter;
use Proxim\Site\Site;
use Proxim\Validate;
use Proxim\Util\ArrayUtils;

class Calculator extends Route {
    public function getCalculator() {
        global $globals;
        $app = $this->app;
        $smarty = $app->container->smarty;
		$params = $app->request->get();
		$options = ArrayUtils::get($params, 'options', []);

		// default options
		$deafault = ArrayUtils::get($options, 'deafault', []);

		$academicLevelDefault = Configuration::get('DEFAULT_COURSELEVEL', null, 2);
        $paperTypesDefault = ArrayUtils::get($deafault, 'paperTypesDefault', 2);
		$pagesDefault = ArrayUtils::get($deafault, 'pagesDefault', 1);

		$pricingForm = $smarty->fetch("ajax.pricingform.tpl");

		$sitePaperTypes = PaperType::getPaperTypes();

		$paperTypes = array();
		foreach ( $sitePaperTypes as $paperType ) {
			$paperTypes[] = array(
				'id' => (int) $paperType['paper_type_id'],
				'option' => $paperType['title'],
				'enabled' => true,
				'isDissertation' => false,
			);
		}


		$defaultTariffs = array();
		$default_deadlines = (string) Configuration::get('DEFAULT_DEADLINES');
		$default_deadlines = explode(',', $default_deadlines);
		
		foreach($default_deadlines as $deadline_id) {
			$defaultTariffs[] = (int) $deadline_id;
		}
		
		$deadlines = Deadline::getDeadlines( PROX_SITE_ID );

		$tariffs = array();
		foreach($deadlines as $deadline) {
			$tariffs[] = [
				"id" => (int) $deadline['deadline_id'],
				"name" => $deadline['name'],
				"pricePerPage" => (float) $deadline['price_per_page'],
				"minPages" => (int) $deadline['min_pages'],
				"hrs" => (int) $deadline['hrs_customer'],
				"hrsWriter" => (int) $deadline['hrs_writer'],
				"academicLevel" =>  (int) $deadline['academic_level_id'],
				"isDefault" => in_array($deadline['deadline_id'], $defaultTariffs) ? true : false
			];
		}

		$academicLevels = array();
		foreach ( $globals['academicLevels'] as $academicLevelId => $academicLevel ) {
			$academicLevel['id'] = $academicLevelId;
			$academicLevels[] = $academicLevel;
		}

		$currencies = Currency::getCurrencies();

		$availableCurrencies = array();
		foreach ($currencies as $currency) {
			$availableCurrencies[$currency['iso_code']] = array(
				"symbol" => $currency['symbol'],
				"rate" => (float) $currency['conversion_rate'],
			);
		}	

		$defaultCurrencyISO = "USD";
		$defaultCurrencyID = Configuration::get("CURRENCY_DEFAULT");
		$defaultCurrency = new Currency( (int) $defaultCurrencyID );
		if(Validate::isLoadedObject($defaultCurrency)) {
			$defaultCurrencyISO = $defaultCurrency->iso_code;
		}

		$paperTypesReturn = $academicLevelsReturn = array();

		$paperTypesReturn[] = $paperTypes;
		$paperTypesReturn['paperTypeDefault'] = $paperTypesDefault;

		$academicLevelsReturn[] = $academicLevels;
		$academicLevelsReturn['academicLevelDefault'] = $academicLevelDefault;

		return $app->response([
			"html"=> $pricingForm, 
			"siteId" => Configuration::get("SITE_ID"), 
			"siteUrl" => Configuration::get("SITE_DOMAIN"),
			"paperTypes" => $paperTypesReturn,
			"dissertationPaperTypes" => array(),
			"academicLevels" => $academicLevelsReturn,
			"deadlines" => $tariffs,
			"pages" => array(
				"defaultPages" => $pagesDefault
			),
			"environment" => "production",
			"currency" => [
				"defaultCurrency" => $defaultCurrencyISO,
				"currencyInfo" => $availableCurrencies
			]
		]);
    }

    public function getPricingBlock() {
		global $globals;
		$app = $this->app;
		$smarty = $app->container->smarty;
		$academicLevels = $globals['academicLevels'];

		$deadlinesName = array();

		$deadlines = Deadline::getDeadlines( PROX_SITE_ID );
		$tariffs = array();
		foreach($deadlines as $deadline) {
			$tariffs[] = [
				"id" => (int) $deadline['deadline_id'],
				"name" => $deadline['name'],
				"pricePerPage" => (float) $deadline['price_per_page'],
				"minPages" => (int) $deadline['min_pages'],
				"hrs" => (int) $deadline['hrs_customer'],
				"hrsWriter" => (int) $deadline['hrs_writer'],
				"academicLevel" =>  (int) $deadline['academic_level_id'],
			];
		}

		foreach($tariffs as $value) {
            if(is_array($value) && array_key_exists("name", $value)) {
                $deadlinesName[$value["name"]][$value["academicLevel"]] = $value;
            }
		}
		
		$smarty->assign([
			"deadlines" => $deadlinesName,
			"academicLevels" => $academicLevels
		]);

		$app->setTemplate('ajax.pricingtable');
		$app->display(); 
    }
}