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();
}
}