| 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 Gross\GrossPriceModel;
// use Gross\GrossInfoModel;
// use Gross\GrossPolicyModel;
use Utils\ActivityMapper;
use Imkon\ImkonPriceModel;
use Imkon\ImkonInfoModel;
class ImkonController extends PriceLoader {
public function handle_request($request) {
if(isset($request['data']['activity_id'])) {
$activity_id = ActivityMapper::getActivityId($request['data']['activity_id'], 'imkon');
$request['data']['activity_id'] = $activity_id;
}
switch ($request['action']) {
case ApiActions::REQUEST_OFFERS:
$imkon_info_model = new ImkonInfoModel();
$imkon_price_model = $this->createImkonPriceModel($request['data']);
// $gross_info_model = $this->createGrossInfoModel($request['data']);
// $programs = $gross_info_model->getPrograms();
// $programs_ids = array_map(function($program) {
// return $program->program_id;
// }, $programs);
// $request['data']['programs'] = $programs_ids;
// $gross_price_model = $this->createGrossPriceModel($request['data']);
// $result = $gross_price_model->calculatePolicyOffers();
$result = $imkon_price_model->calculateOffers();
return $result;
// case ApiActions::GROSS_CALCULATE_POLICY:
// $request['data']['programs'] = [];
// $gross_price_model = $this->createGrossPriceModel($request['data']);
// $result = $gross_price_model->calculatePolicy();
// return $result;
// case ApiActions::GROSS_CREATE_POLICY_LOCAL:
// $gross_policy_model = $this->createGrossPolicyModel($request['data']);
// $result = $gross_policy_model->createPolicyLocal();
// return $result;
// case ApiActions::GROSS_CREATE_PAID_POLICY:
// $gross_policy_model = $this->createGrossPolicyModel($request['data']);
// $result = $gross_policy_model->createPaidPolicy();
// return $result;
// case ApiActions::GROSS_GET_POLICY:
// $gross_policy_model = $this->createGrossPolicyModel($request['data']);
// $result = $gross_policy_model->getPolicy($request['data']);
// return $result;
default:
return [
'message' => 'Action doesn\'t exist for this partner'
];
}
}
public function prepareData($price) {
return [
'partner' => 'Imkon',
'result' => $price
];
}
// private function createGrossInfoModel($data) {
// $countries = $this->mapCountriesToIds($data['countries_iso']);
// $gross_info_model = new GrossInfoModel($countries);
// return $gross_info_model;
// }
private function createImkonPriceModel($data) {
$begin_date = $data['start_date'] ?? (new \DateTime())->format('d.m.Y');
$end_date = $data['end_date'] ?? (new \DateTime('tomorrow'))->format('d.m.Y');
// $countries = $this->mapCountriesToAlpha2($data['countries_iso']);
$countries = $data['countries_iso'];
$has_covid = $data['has_covid'] ?? false;
$birthdays = $this->mapInsuredBirthdays($data['date_births']);
$programs = $data['programs'] ?? [];
$program_id = $data['program_id'] ?? null;
$purpose_id = $data['activity_id'] ?? 1;
$imkon_price_model = new ImkonPriceModel($begin_date, $end_date, $countries, $birthdays, $has_covid, $programs, $program_id, $purpose_id);
return $imkon_price_model;
}
private function createImkonPolicyModel($data) {
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 GrossPolicyModel( $data);
return [];
}
private function mapInsuredBirthdays($birthdays)
{
return array_map(function ($birthday) {
$d = \DateTime::createFromFormat('d.m.Y', $birthday);
$formatted = $d->format('Y-m-d\T00:00:00');
return [
'birthday' => $formatted,
];
}, $birthdays);
}
private function mapCountries($countries) {
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/Countries.json');
$countriesList = json_decode($countriesListJSON, true);
$imconCountriesListJSON = file_get_contents(__DIR__ . '/../Data/ImkonCountries.json');
$imconCountriesList = json_decode($imconCountriesListJSON, true);
$countries_names = array_map(function($alpha3) use ($countriesList) {
$country = array_filter($countriesList, function($item) use ($alpha3) {
return $item['alpha3'] === $alpha3;
});
return reset($country)['name'];
}, $countries);
// $imkon_countries = array_filter($imconCountriesList, function($country) use ($countries_names) {
// return $country['nameEn'] === 0;
// });
}
private function mapCountriesToAlpha2($countries) {
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/Countries.json');
$countriesList = json_decode($countriesListJSON, true);
$countries_alpha2 = array_map(function($alpha3) use ($countriesList) {
$country = array_filter($countriesList, function($item) use ($alpha3) {
return $item['alpha3'] === $alpha3;
});
return reset($country)['alpha2'];
}, $countries);
return $countries_alpha2;
}
private function mapCountryToAlpha2($countryCode) {
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/Countries.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'];
}
private function mapCountriesToIds($countries) {
$countriesListJSON = file_get_contents(__DIR__ . '/../Data/Countries.json');
$grossCountriesListJSON = file_get_contents(__DIR__ . '/../Data/GrossCountries.json');
$countriesList = json_decode($countriesListJSON, true);
$grossCountriesList = json_decode($grossCountriesListJSON, true);
$countries_ids = [];
$countries_alpha2 = array_map(function($alpha3) use ($countriesList) {
$country = array_filter($countriesList, function($item) use ($alpha3) {
return $item['alpha3'] === $alpha3;
});
return reset($country)['alpha2'];
}, $countries);
foreach ($countries_alpha2 as $alpha2) {
$grossCountry = array_filter($grossCountriesList, function($item) use ($alpha2) {
return $item['code'] === $alpha2;
});
$countries_ids[] = reset($grossCountry)['id'];
}
return $countries_ids;
}
}