403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/sugurtatrip__usr95/data/www/sugurtatrip.uz/apiv1/policy/src/Api/GrossController.php
<?php

namespace Api;

use Core\PriceLoader;
use Core\ApiActions;
use Gross\GrossPriceModel;
use Gross\GrossInfoModel;
use Gross\GrossPolicyModel;
use Utils\ActivityMapper;

class GrossController extends PriceLoader {

    public function handle_request($request) {
        if(isset($request['data']['activity_id'])) {
            $activity_id = ActivityMapper::getActivityId($request['data']['activity_id'], 'gross');
            $request['data']['activity_id'] = $activity_id;
        }

        switch ($request['action']) {
            case ApiActions::REQUEST_OFFERS:
                $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();

                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'], $this->getRequestId());
                $result = $gross_policy_model->createPolicyLocal();

                return $result;
            case ApiActions::GROSS_CREATE_PAID_POLICY:
                $gross_policy_model = $this->createGrossPolicyModel($request['data'], $this->getRequestId());
                $result = $gross_policy_model->createPaidPolicy();

                return $result;
            case ApiActions::GROSS_ISSUE_POLICY:
                $gross_policy_model = $this->createGrossPolicyModel($request['data'], $this->getRequestId());
                $result = $gross_policy_model->issuePolicy();

                return $result;
            case ApiActions::GROSS_CHECK_ISSUED_POLICY:
                $gross_policy_model = $this->createGrossPolicyModel($request['data'], $this->getRequestId());
                $result = $gross_policy_model->checkIssued();

                return $result;
            case ApiActions::GROSS_GET_POLICY:
                $gross_policy_model = $this->createGrossPolicyModel($request['data'], $this->getRequestId());
                $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' => 'Gross',
            'result' => $price
        ];
    }

    private function createGrossInfoModel($data) {
        $countries = $this->mapCountriesToIds($data['countries_iso']);
        $gross_info_model = new GrossInfoModel($countries);

        return $gross_info_model;
    }


    private function createGrossPriceModel($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']);
        $has_covid = $data['has_covid'] ?? false;
        $birthdays = $data['date_births'] ?? [];
        $programs = $data['programs'] ?? [];
        $program_id = $data['program_id'] ?? null;
        $purpose_id = $data['activity_id'] ?? 1;

        $gross_price_model = new GrossPriceModel($begin_date, $end_date, $countries, $birthdays, $has_covid, $programs, $program_id, $purpose_id);

        return $gross_price_model;
    }

    private function createGrossPolicyModel($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 GrossPolicyModel( $data, $request_id);
    }

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

Youez - 2016 - github.com/yon3zu
LinuXploit