| Server IP : 95.46.96.79 / Your IP : 216.73.216.84 Web Server : Apache/2.4.41 (Ubuntu) System : Linux zaimer.uz 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : akslabs_uz_usr ( 1001) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/sugurtatrip__usr95/data/www/sugurtatrip.uz/apiv1/policy/src/Api/ |
Upload File : |
<?php
namespace Api;
use Core\PriceLoader;
use Core\ApiActions;
use Apex\ApexPriceModel;
use Apex\ApexPolicyModel;
use Apex\ApexInfoModel;
use Utils\ActivityMapper;
class ApexController extends PriceLoader {
public function handle_request($request) {
if(isset($request['data']['activity_id'])) {
$activity_id = ActivityMapper::getActivityId($request['data']['activity_id'], 'apex');
$request['data']['activity_id'] = $activity_id;
}
switch ($request['action']) {
case ApiActions::REQUEST_OFFERS:
$apexModel = $this->createApexPriceModel($request);
$data = $request['data'];
$result = $apexModel->calculateTravel();
return $result;
case ApiActions::APEX_CALCULATE_POLICY:
$apexModel = $this->createApexPriceModel($request);
$result = $apexModel->calculatePolicy();
return $result;
case ApiActions::GET_PROGRAM_DETAILS:
if ($request['partner'] !== "Apex") {
return [
'message' => 'Action doesn\'t exist for this partner'
];
}
$apexModel = $this->createApexInfoModel($request['data']);
$result = $apexModel->getProgramDetails();
return $result;
case ApiActions::APEX_GET_REGIONS:
$apexModel = $this->createApexInfoModel($request['data']);
$result = $apexModel->getRegions();
return $result;
case ApiActions::APEX_GET_PERSON:
$apexModel = $this->createApexInfoModel($request['data']);
$result = $apexModel->getPersonInfo();
return $result;
case ApiActions::APEX_CREATE_POLICY_LOCAL:
$apexModel = $this->createApexPolicyModel($request['data'], $this->getRequestId() ?? null);
$result = $apexModel->createPolicyLocal();
return $result;
case ApiActions::APEX_CREATE_PAID_POLICY:
$apexModel = $this->createApexPolicyModel($request['data'], $this->getRequestId() ?? null);
$result = $apexModel->createPaidPolicy();
return $result;
case ApiActions::APEX_ISSUE_POLICY:
$apexModel = $this->createApexPolicyModel($request['data'], $this->getRequestId() ?? null);
$result = $apexModel->issuePolicy();
return $result;
case ApiActions::APEX_CHECK_ISSUED_POLICY:
$apexModel = $this->createApexPolicyModel($request['data'], $this->getRequestId() ?? null);
$result = $apexModel->checkIssued();
return $result;
case ApiActions::APEX_GET_POLICY:
$apexModel = $this->createApexPolicyModel($request['data'], $this->getRequestId() ?? null);
$result = $apexModel->getPolicy($request['data']);
return $result;
default:
return [
'message' => 'Action doesn\'t exist for this partner'
];
}
}
public function prepareData($price) {
// Example data preparation
return [
'partner' => 'Apex',
'result' => $price
];
}
// private function mapCountriesToIds($countries) {
// $countryIds = [];
// foreach ($countries as $country) {
// $countryIds[] = $country['iso'];
// }
// return $countryIds;
// }
private function createBirthDates($dates) {
if (empty($dates) || !is_array($dates)) {
return [];
}
$birthDates = [];
foreach ($dates as $date) {
$birthDates[] = [
"birthday" => $date
];
}
return $birthDates;
}
private function createApexPriceModel($data) {
$request_data = $data['data'];
$start_date = $request_data['start_date'] ?? (new \DateTime())->format('d.m.Y');
$end_date = $request_data['end_date'] ?? (new \DateTime('tomorrow'))->format('d.m.Y');
// $country = [
// ["iso" => "DK"]
// ];
$program_id = $request_data['program_id'] ?? 1;
$purpose_id = $request_data['activity_id'] ?? 0;
$group_id = $request_data['group_id'] ?? 1;
$persons_info = isset($request_data['date_births']) ? $this -> createBirthDates($request_data['date_births']) : [];
$country = $this -> mapCountriesToAlpha2($request_data['countries_iso']);
return new ApexPriceModel(
$start_date,
$end_date,
$country,
$program_id,
$purpose_id,
$group_id,
$persons_info
);
}
private function createApexPolicyModel($data, ?int $request_id) {
if (!isset($data['countries_iso'])) {
$data['countries_iso'] = [];
}
if (!isset($data['insured'])) {
$data['insured'] = [];
}
if(!isset($data['applicant'])) {
$data['applicant'] = [];
$data['applicant']['country'] = '';
}
$data['country'] = $this->mapCountriesToAlpha2($data['countries_iso']);
$data['insured'] = array_map(function($insured) {
$insured['country'] = $this->mapCountryToAlpha2($insured['country']);
return $insured;
}, $data['insured']);
$data['applicant']['country'] = $this->mapCountryToAlpha2($data['applicant']['country']);
return new ApexPolicyModel( $data, $request_id);
}
private function createApexInfoModel($data) {
return new ApexInfoModel( $data);
}
private function mapCountriesToAlpha2($countries) {
$countryCodes = [];
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/ApexCountries.json');
$countriesList = json_decode($countriesListJSON, true);
// $countryMap = [];
// foreach ($countriesList as $country) {
// $countryMap[] = $country['id'];
// }
foreach ($countries as $countryCode) {
foreach ($countriesList as $country) {
if ($country['alpha3'] == $countryCode) {
$countryCodes[] = (object) [
'iso' => $country['alpha2']
];
break;
}
}
}
return $countryCodes;
}
private function mapCountryToAlpha2($countryCode) {
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/ApexCountries.json');
$countriesList = json_decode($countriesListJSON, true);
$filteredCountries = array_filter($countriesList, function ($country) use ($countryCode) {
return $country['alpha3'] === $countryCode;
});
$selected_country = reset($filteredCountries);
if ($selected_country === false) {
return $countryCode;
}
return $selected_country['alpha2'];
}
}