Revision 510 | Revision 517 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace App\Console\Commands;use App\Models\Address;use App\Models\Directory;use App\Models\Item;use App\Models\Action;use App\Models\Medium;use App\Models\Order;use App\Models\OrderAddress;use App\Models\OrderType;use App\Models\PaymentMethod;use App\Models\Price;use App\Models\ActionMedium;use App\Models\ItemMedium;use App\Models\DirectoryMedium;use App\Models\Shipping;use App\Models\ShippingGroup;use App\Models\Shop;use App\Models\User;use Illuminate\Console\Command;use Illuminate\Support\Facades\DB;class convertDB extends Command{/*** The name and signature of the console command.** @var string*/protected $signature = 'command:convertDB';/*** The console command description.** @var string*/protected $description = 'Converts the old webanOS-DB to laravel';/*** Execute the console command.** @return void*/public function handle(): void{$this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung gestartet" );$migrateDirs = true;/*if ( !$this->confirm( "Kategorien migrieren?" ) ){$migrateDirs = false;}*/$migrateItems = true;/*if ( !$this->confirm( "Artikel migrieren?" ) ){$migrateItems = false;}*/$migrateActions = true;/*if ( !$this->confirm( "Aktionen migrieren?" ) ){$migrateActions = false;}*/$migrateMedia = true;/*if ( !$this->confirm( "Medien migrieren?" ) ){$migrateMedia = false;}*/$this->migrateShops();$this->migrateOrderTypes();$this->migratePaymentMethods();$this->migrateShippingGroups();if ( $migrateActions ){$this->migrateActions();}if ( $migrateDirs ){$this->migrateDirs();}if ( $migrateItems ){$this->migrateItems();}if ( $migrateMedia ){$this->migrateMedia();$this->migrateActionMedia();$this->migrateDirMedia();$this->migrateItemMedia();}if ( env( 'site' ) == env( 'shop' ) ){$this->migrateUsers();$this->migrateAddresses();$this->migrateOrderAddresses();$this->migrateOrders();$this->migrateOrderItems();}$this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );}public function migrateMedia(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );$start = 0;$sql = "SELECTMAX(id) AS startFROMmedia";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMmedienWHEREid>" . $start . "";$media = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $media ) );$progressbar->start();foreach ( $media as $medium ){$mediumDB = new Medium();$mediumDB->id = $medium->id;$mediumDB->name = $medium->name;$mediumDB->folder = $medium->folder;$mediumDB->medium_type_id = $medium->typ;$mediumDB->description = $medium->beschreibung;if ( $medium->erstellt_am ){$mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );}$ersteller = $medium->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $medium->letzte_aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$mediumDB->created_by = $ersteller;$mediumDB->updated_by = $bearbeiter;$mediumDB->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateDirs(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );$start = 0;$sql = "SELECTMAX(id) AS startFROMdirectories";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = 'SELECT*FROMdirectoryWHERE id>' . $start . '';$dirs = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $dirs ) );$progressbar->start();foreach ( $dirs as $row ){$ersteller = $row->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $row->letzte_Aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$dir = new Directory();$dir->id = $row->ID;$dir->directory_id = $row->Father;$dir->name = $row->Name;$dir->articlemaster = $row->Artikelstamm;$dir->status = $row->status;$dir->kennung = $row->Kennung;$dir->description = $row->Beschreibung;$dir->short_line_1 = $row->short_line_1;$dir->url = $row->url;$dir->created_at = $row->erstellt_am;$dir->created_by = $ersteller;$dir->updated_by = $bearbeiter;$dir->updated_at = $row->letzte_Aenderung_am;$dir->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}public function migrateDirMedia(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );$start = 0;$sql = "SELECTMAX(medium_id) AS startFROMdirectory_media";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMdirectory_medienWHEREmedien_id>" . $start . "";$media = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $media ) );$progressbar->start();foreach ( $media as $row ){$medium = new DirectoryMedium();$medium->directory_id = $row->directory_id;$medium->medium_id = $row->medien_id;$medium->rank = $row->rang;$medium->similar = $row->aehnlich;$medium->created_at = $row->zugeordnet_am;$medium->updated_at = $row->zugeordnet_am;$medium->created_by = "WebanOS Laravel Upgrade";$medium->updated_by = "WebanOS Laravel Upgrade";$medium->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateItems(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );$start = 0;$sql = "SELECTMAX(id) AS startFROMitems";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = 'SELECT*FROMartikelWHEREfather >= -1ANDid>' . $start . '';$dirs = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $dirs ) );$progressbar->start();foreach ( $dirs as $row ){$item = new Item();$item->id = $row->ID;$item->directory_id = $row->Father;$item->name = $row->kurzbezeichnung;$item->status = $row->status;$item->kennung = $row->kennung;$item->description = $row->beschreibung;$item->created_at = $row->erstellt_am;$item->updated_at = $row->letzte_Aenderung_am;$ersteller = $row->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $row->letzte_Aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$item->created_by = $ersteller;$item->updated_by = $bearbeiter;$item->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );$start = 0;$sql = "SELECTMAX(id) AS startFROMprices";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECTp.*FROMpreise pJOINartikel aONa.id=p.artikel_idWHEREa.father >=-1ANDp.id>" . $start . "";$prices = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $prices ) );$progressbar->start();foreach ( $prices as $price ){Price::factory()->createQuietly( ["id" => $price->id,"item_id" => $price->artikel_id,"preis_index" => $price->preis_index,"preis" => $price->preis,"staffel" => $price->staffel,"created_at" => $price->geaendert_am,"created_by" => $price->geaendert_von,"updated_by" => $price->geaendert_von,"updated_at" => $price->geaendert_am] );$progressbar->advance();}$progressbar->finish();$progressbar->clear();}public function migrateItemMedia(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );$start = 0;$sql = "SELECTMAX(medium_id) AS startFROMitem_media";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMartikel_medienWHEREmedien_id>" . $start . "";$media = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $media ) );$progressbar->start();foreach ( $media as $row ){$medium = new ItemMedium();$medium->item_id = $row->artikel_id;$medium->medium_id = $row->medien_id;$medium->rank = $row->rang;$medium->similar = $row->aehnlich;$medium->created_at = $row->zugeordnet_am;$medium->updated_at = $row->zugeordnet_am;$medium->created_by = "WebanOS Laravel Upgrade";$medium->updated_by = "WebanOS Laravel Upgrade";$medium->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateActions(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );$start = 0;$sql = "SELECTMAX(id) AS startFROMactions";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMAktionenWHEREid>" . $start . "";$actions = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $actions ) );$progressbar->start();foreach ( $actions as $action ){$actionDB = new Action();$actionDB->id = $action->ID;$actionDB->headline = $action->headline;$actionDB->text = $action->text;$actionDB->rang = $action->rang;$actionDB->config = $action->config;$actionDB->category = $action->Kategorie;$actionDB->notes = $action->notizen;$actionDB->valid_from = $action->von;$actionDB->valid_to = $action->bis;$actionDB->created_by = "WebanOS Laravel Upgrade";$actionDB->updated_by = "WebanOS Laravel Upgrade";$actionDB->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}public function migrateActionMedia(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );$start = 0;$sql = "SELECTMAX(id) AS startFROMaction_media";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMaktionen_medienWHEREid>" . $start . "";$media = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $media ) );$progressbar->start();foreach ( $media as $row ){$medium = new ActionMedium();$medium->action_id = $row->aktionen_id;$medium->medium_id = $row->medien_id;$medium->rank = $row->rang;$medium->created_by = "WebanOS Laravel Upgrade";$medium->updated_by = "WebanOS Laravel Upgrade";$medium->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateUsers(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );$start = 0;$sql = "SELECTMAX(id) AS startFROMusers";$row = DB::connection( "order" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMLoginsWHEREid>" . $start . "";$users = DB::connection( "oldOrder" )->select( $sql );$progressbar = $this->output->createProgressBar( count( $users ) );$progressbar->start();foreach ( $users as $oldUser ){$ersteller = $oldUser->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $oldUser->letzte_Aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$user = new User();$user->id = $oldUser->ID;$user->email = $oldUser->E_Mail;$user->created_at = $oldUser->erstellt_am;$user->created_by = $ersteller;$user->updated_by = $bearbeiter;$user->updated_at = $oldUser->letzte_Aenderung_am;$user->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateAddresses( bool $isOrder = false ){$typ = "Adressen";$table = "addresses";$oldTable = "adresse";if ( $isOrder === true ){$typ = "Bestelladressen";$table = "order_addresses";$oldTable = "bestelladresse";}$this->info( date( "d.m.Y H:i:s" ) . ": Migriere " . $typ );$start = 0;$sql = "SELECTMAX(id) AS startFROM" . $table . "";$row = DB::connection( "order" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROM" . $oldTable . "WHEREid>" . $start . "";$addresses = DB::connection( "oldOrder" )->select( $sql );$progressbar = $this->output->createProgressBar( count( $addresses ) );$progressbar->start();foreach ( $addresses as $oldAddress ){$ersteller = "WebanOS Laravel Upgrade";$bearbeiter = "WebanOS Laravel Upgrade";if ( $isOrder === true ){$address = new OrderAddress();}else{$address = new Address();}$address->id = $oldAddress->id;$address->user_id = $oldAddress->logins_id;$address->salutation = $oldAddress->anrede;$address->pro_title = $oldAddress->pro_title;$address->name = $oldAddress->vorname;$address->lastname = $oldAddress->nachname;$address->company = $oldAddress->firma;$address->company2 = $oldAddress->firma2;$address->street = $oldAddress->strasse1;$address->houseno = $oldAddress->str_nr1;$address->street2 = $oldAddress->strasse2;$address->zip = $oldAddress->plz;$address->city = $oldAddress->ort;$address->country_id = $oldAddress->land;$address->state_id = $oldAddress->state;$address->phone = $oldAddress->telefon;$address->fax = $oldAddress->fax;$address->email = $oldAddress->email;$address->nettocalculation = $oldAddress->nettoberechnung;$address->hr_nr = $oldAddress->hr_nr;$address->vat_id = $oldAddress->vat_id;$address->vat_free = $oldAddress->mwst_befreiung;$address->legal_form = $oldAddress->legal_form;$address->comment = $oldAddress->comment;$address->created_at = $oldAddress->letzte_aenderung_am;$address->created_by = $ersteller;$address->updated_by = $bearbeiter;$address->updated_at = $oldAddress->letzte_aenderung_am;$address->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateOrderAddresses(){$this->migrateAddresses( true );}private function migrateOrders(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );$start = 0;$sql = "SELECTMAX(id) AS startFROMorders";$row = DB::connection( "order" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMBestellungWHEREid>" . $start . "";$orders = DB::connection( "oldOrder" )->select( $sql );$progressbar = $this->output->createProgressBar( count( $orders ) );$progressbar->start();foreach ( $orders as $oldOrder ){$paidAt = $oldOrder->bezahlt_am;if ( $paidAt == "0000-00-00 00:00:00" ){$paidAt = null;}$order = new Order();$order->id = $oldOrder->ID;$order->shop_id = $oldOrder->shops_ID;$order->order_type_id = $oldOrder->bestellart_id;$order->payment_method_id = $oldOrder->zahlart_id;$order->user_id = $oldOrder->Login;$order->ship_addr_id = $oldOrder->ship_addr_id;$order->bill_addr_id = $oldOrder->bill_addr_id;$order->paid = $oldOrder->bezahlt;$order->paid_at = $paidAt;$order->paid_comment = $oldOrder->bezahlt_bemerkung;$order->foreign_id = $oldOrder->fremd_id;$order->foreign_payment_id = $oldOrder->bezahlt_fremdid;$order->status = $oldOrder->status;$order->total_amount_buffer = $oldOrder->gesamtsumme_buffer;$order->item_status_buffer = $oldOrder->artikelstatus_buffer;$order->invoice_status_buffer = $oldOrder->rechnungsstatus_buffer;$order->delivery_note_status_buffer = $oldOrder->lieferscheinStatus_buffer;$order->tax = $oldOrder->tax;$order->comment = $oldOrder->Bemerkung;$order->external_comment = $oldOrder->Bemerkung_extern;$order->note = $oldOrder->notiz;$order->additional_info = $oldOrder->zusatzInfo;$order->shipping_group_id = $oldOrder->versandgruppen_id;$order->kk_info = $oldOrder->kk_info;$order->created_by = $oldOrder->erstellt_von;$order->updated_by = $oldOrder->letzte_Aenderung_von;$order->updated_at = $oldOrder->letzte_Aenderung_am;$order->created_at = $oldOrder->erstellt_am;$order->save();$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateOrderItems(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );$start = 0;$sql = "SELECTMAX(id) AS startFROMorder_items";$row = DB::connection( "order" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMartikel_to_BestellungWHEREid>" . $start . "";$orderItems = DB::connection( "oldOrder" )->select( $sql );$progressbar = $this->output->createProgressBar( count( $orderItems ) );$progressbar->start();foreach ( $orderItems as $oldOrderItem ){$progressbar->advance();}$progressbar->finish();$progressbar->clear();}private function migrateShops(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Shops" );$start = 0;$sql = "SELECTMAX(id) AS startFROMshops";$row = DB::connection( 'mysql' )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMshopsWHEREid>" . $start . "";$shops = DB::connection( 'old' )->select( $sql );foreach ( $shops as $oldShop ){$shop = new Shop();$shop->id = $oldShop->ID;$shop->name = $oldShop->Name;$shop->short = $oldShop->short;$shop->re_short = '';if ( isset( $oldShop->re_short ) && $oldShop->re_short ){$shop->re_short = $oldShop->re_short;}if ( isset( $oldShop->preisindex_ek ) && $oldShop->preisindex_ek ){$shop->preisindex_ek = $oldShop->preisindex_ek;}$shop->ebay = $oldShop->ebay;$shop->erfassung = $oldShop->erfassung;if ( isset( $oldShop->status ) && $oldShop->status ){$shop->status = $oldShop->status;}if ( isset( $oldShop->rang ) && $oldShop->rang ){$shop->rank = $oldShop->rang;}$shop->klonziel = $oldShop->klonziel;$shop->konroot = $oldShop->konroot;if ( isset( $oldShop->home ) && $oldShop->home ){$shop->home = $oldShop->home;}$shop->database = $oldShop->database;$shop->domain = $oldShop->domain;$shop->mail_server = $oldShop->mail_server;$shop->mail_user = $oldShop->mail_user;$shop->mail_password = $oldShop->mail_passwort;$shop->save();}}private function migratePaymentMethods(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Zahlungsmethoden" );$start = 0;$sql = "SELECTMAX(id) AS startFROMpayment_methods";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMzahlungsartenWHEREid>" . $start . "";$methods = DB::connection( 'old' )->select( $sql );foreach ( $methods as $method ){PaymentMethod::factory()->create( ["id" => $method->id,"name" => $method->name,"discount" => $method->abschlag,"internal_name" => $method->interner_name,"info_in_shop" => $method->info_im_shop,"shipping_text" => $method->versandtextbaustein,] );}}private function migrateOrderTypes(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellarten" );$start = 0;$sql = "SELECTMAX(id) AS startFROMorder_types";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMbestellartWHEREid>" . $start . "";$methods = DB::connection( 'old' )->select( $sql );foreach ( $methods as $method ){OrderType::factory()->create( ["id" => $method->id,"internal_name" => $method->rufname,"name" => $method->name,"short" => $method->short,] );}}private function migrateShippingGroups(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandgruppen" );$start = 0;$sql = "SELECTMAX(id) AS startFROMshipping_groups";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMversandgruppenWHEREid>" . $start . "";$methods = DB::connection( 'old' )->select( $sql );foreach ( $methods as $group ){ShippingGroup::factory()->create( ["id" => $group->id,"name" => $group->name,"conditions" => $group->bedingungen,"icon" => $group->icon,"rank" => $group->rang,"shipping_text" => $group->versandtextbaustein,"created_by" => $group->erstellt_von,"updated_by" => $group->geaendert_von,"updated_at" => $group->geaendert_am,"created_at" => $group->erstellt_am,] );}}private function migrateShippings(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandoptionen" );$start = 0;$sql = "SELECTMAX(id) AS startFROMshippings";$row = DB::connection( "mysql" )->select( $sql );if ( $row[ 0 ]->start ){$start = $row[ 0 ]->start;}$sql = "SELECT*FROMversandWHEREid>" . $start . "";$methods = DB::connection( 'old' )->select( $sql );foreach ( $methods as $group ){ShippingGroup::factory()->create( ["id" => $group->id,"rank" => $group->rang,"shipping_group_id" => $group->versandgruppen_id,"name" => $group->name,"info_shop" => $group->info_shop,"info_mail" => $group->info_mail,"info_internal" => $group->info_intern,"island_shipping" => $group->inselversand,"additions" => $group->zusaetze,"status" => $group->status,"price" => $group->preis,"calc_weight_from" => $group->berechnung_kg_von,"calc_weight_to" => $group->berechnung_kg_bis,"calc_price_from" => $group->berechnung_preis_von,"calc_price_to" => $group->berechnung_preis_bis,"conditions" => $group->bedingungen,"tax_rate" => $group->steuersatz,"created_by" => $group->erstellt_von,"updated_by" => $group->geaendert_von,"updated_at" => $group->geaendert_am,"created_at" => $group->erstellt_am,] );}}}