Revision 303 | Revision 422 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace App\Console\Commands;use App\Models\Directory;use App\Models\Item;use App\Models\Action;use App\Models\Medium;use App\Models\Price;use App\Models\ActionMedium;use App\Models\ItemMedium;use App\Models\DirectoryMedium;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" );$this->migrateMedia();$this->migrateDirs();$this->migrateItems();$this->migrateActions();$this->migarteUsers();$this->migrateAddresses();$this->migrateOrderAdresses();$this->migrateOrders();$this->migrateOrderItems();$this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );}private function migrateDirs(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );$sql = 'SELECT*FROMdirectory';$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->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();$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );$sql = "SELECT*FROMdirectory_medien";$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" );$sql = 'SELECT*FROMartikelWHEREfather>=-1';$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" );$sql = "SELECTp.*FROMpreise pJOINartikel aONa.id=p.artikel_idWHEREa.father >=-1";$prices = DB::connection( 'old' )->select( $sql );$progressbar = $this->output->createProgressBar( count( $prices ) );$progressbar->start();foreach ( $prices as $price ){Price::factory()->createQuietly( ["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();$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );$sql = "SELECT*FROMartikel_medien";$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" );$sql = "SELECT*FROMAktionen";$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();$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );$sql = "SELECT*FROMaktionen_medien";$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();}public function migrateMedia(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );$sql = "SELECT*FROMmedien";$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 migrateUsers(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );}private function migrateAddresses(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Adressen" );}private function migrateOrderAddresses(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestelladressen" );}private function migrateOrders(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );}private function migrateOrderItems(){$this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );}}