Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 450 | Revision 452 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
233 lars 1
<?php
2
 
260 lars 3
    namespace App\Console\Commands;
233 lars 4
 
445 lars 5
    use App\Models\Address;
260 lars 6
    use App\Models\Directory;
7
    use App\Models\Item;
8
    use App\Models\Action;
272 lars 9
    use App\Models\Medium;
437 lars 10
    use App\Models\Order;
263 lars 11
    use App\Models\Price;
260 lars 12
    use App\Models\ActionMedium;
13
    use App\Models\ItemMedium;
14
    use App\Models\DirectoryMedium;
437 lars 15
    use App\Models\User;
260 lars 16
    use Illuminate\Console\Command;
17
    use Illuminate\Support\Facades\DB;
233 lars 18
 
260 lars 19
    class convertDB extends Command
20
    {
21
        /**
22
         * The name and signature of the console command.
23
         *
24
         * @var string
25
         */
26
        protected $signature = 'command:convertDB';
233 lars 27
 
260 lars 28
        /**
29
         * The console command description.
30
         *
31
         * @var string
32
         */
33
        protected $description = 'Converts the old webanOS-DB to laravel';
233 lars 34
 
260 lars 35
        /**
36
         * Execute the console command.
37
         *
38
         * @return void
39
         */
40
 
41
        public function handle(): void
238 lars 42
        {
294 lars 43
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung gestartet" );
439 lars 44
            /*$migrateDirs = true;
422 lars 45
            if ( !$this->confirm( "Kategorien migrieren?" ) )
46
            {
47
                $migrateDirs = false;
48
            }
49
            $migrateItems = true;
50
            if ( !$this->confirm( "Artikel migrieren?" ) )
51
            {
52
                $migrateItems = false;
53
            }
54
            $migrateActions = true;
55
            if ( !$this->confirm( "Aktionen migrieren?" ) )
56
            {
57
                $migrateActions = false;
58
            }
59
            $migrateMedia = true;
60
            if ( !$this->confirm( "Medien migrieren?" ) )
61
            {
62
                $migrateMedia = false;
63
            }
64
            if ( $migrateActions )
65
            {
66
                $this->migrateMedia();
67
            }
68
            if ( $migrateDirs )
69
            {
70
                $this->migrateDirs();
71
                if ( $migrateMedia )
72
                {
73
                    $this->migrateDirMedia();
74
                }
75
            }
76
            if ( $migrateItems )
77
            {
78
                $this->migrateItems();
79
                if ( $migrateMedia )
80
                {
81
                    $this->migrateItemMedia();
82
                }
83
            }
84
            if ( $migrateActions )
85
            {
86
                $this->migrateActions();
87
                if ( $migrateMedia )
88
                {
89
                    $this->migrateActionMedia();
90
                }
439 lars 91
            }*/
421 lars 92
            $this->migrateUsers();
304 lars 93
            $this->migrateAddresses();
421 lars 94
            $this->migrateOrderAddresses();
304 lars 95
            $this->migrateOrders();
96
            $this->migrateOrderItems();
294 lars 97
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );
234 lars 98
        }
260 lars 99
 
433 lars 100
        public function migrateMedia()
101
        {
102
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
103
            $sql = "
104
                SELECT
105
                    *
106
                FROM
107
                    medien
108
            ";
109
            $media = DB::connection( 'old' )->select( $sql );
110
            $progressbar = $this->output->createProgressBar( count( $media ) );
111
            $progressbar->start();
112
            foreach ( $media as $medium )
113
            {
114
                $mediumDB = new Medium();
115
                $mediumDB->id = $medium->id;
116
                $mediumDB->name = $medium->name;
117
                $mediumDB->folder = $medium->folder;
118
                $mediumDB->medium_type_id = $medium->typ;
119
                $mediumDB->description = $medium->beschreibung;
120
                if ( $medium->erstellt_am )
121
                {
122
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
123
                }
124
                $ersteller = $medium->erstellt_von;
125
                if ( !$ersteller )
126
                {
127
                    $ersteller = "WebanOS Laravel Upgrade";
128
                }
129
                $bearbeiter = $medium->letzte_aenderung_von;
130
                if ( !$bearbeiter )
131
                {
132
                    $bearbeiter = "WebanOS Laravel Upgrade";
133
                }
134
                $mediumDB->created_by = $ersteller;
135
                $mediumDB->updated_by = $bearbeiter;
136
                $mediumDB->save();
137
                $progressbar->advance();
138
            }
139
            $progressbar->finish();
140
            $progressbar->clear();
141
        }
142
 
260 lars 143
        private function migrateDirs()
144
        {
294 lars 145
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
260 lars 146
            $sql = '
147
                SELECT
148
                    *
149
                FROM
150
                    directory
151
            ';
152
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 153
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
154
            $progressbar->start();
260 lars 155
            foreach ( $dirs as $row )
156
            {
284 lars 157
                $ersteller = $row->erstellt_von;
158
                if ( !$ersteller )
159
                {
160
                    $ersteller = "WebanOS Laravel Upgrade";
161
                }
285 lars 162
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 163
                if ( !$bearbeiter )
164
                {
165
                    $bearbeiter = "WebanOS Laravel Upgrade";
166
                }
303 lars 167
                $dir = new Directory();
168
                $dir->id = $row->ID;
304 lars 169
                $dir->directory_id = $row->Father;
303 lars 170
                $dir->name = $row->Name;
432 lars 171
                $dir->articlemaster = $row->Artikelstamm;
304 lars 172
                $dir->status = $row->status;
303 lars 173
                $dir->kennung = $row->Kennung;
304 lars 174
                $dir->description = $row->Beschreibung;
175
                $dir->short_line_1 = $row->short_line_1;
303 lars 176
                $dir->url = $row->url;
177
                $dir->created_at = $row->erstellt_am;
178
                $dir->created_by = $ersteller;
179
                $dir->updated_by = $bearbeiter;
180
                $dir->updated_at = $row->letzte_Aenderung_am;
181
                $dir->save();
301 lars 182
                $progressbar->advance();
260 lars 183
            }
301 lars 184
            $progressbar->finish();
302 lars 185
            $progressbar->clear();
260 lars 186
        }
187
 
433 lars 188
        public function migrateDirMedia()
189
        {
190
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
191
            $sql = "SELECT
192
                    *
193
                FROM
194
                    directory_medien
195
            ";
196
            $media = DB::connection( 'old' )->select( $sql );
197
            $progressbar = $this->output->createProgressBar( count( $media ) );
198
            $progressbar->start();
199
            foreach ( $media as $row )
200
            {
201
                $medium = new DirectoryMedium();
202
                $medium->directory_id = $row->directory_id;
203
                $medium->medium_id = $row->medien_id;
204
                $medium->rank = $row->rang;
205
                $medium->similar = $row->aehnlich;
206
                $medium->created_at = $row->zugeordnet_am;
207
                $medium->updated_at = $row->zugeordnet_am;
208
                $medium->created_by = "WebanOS Laravel Upgrade";
209
                $medium->updated_by = "WebanOS Laravel Upgrade";
210
                $medium->save();
211
                $progressbar->advance();
212
            }
213
            $progressbar->finish();
214
            $progressbar->clear();
215
        }
216
 
260 lars 217
        private function migrateItems()
218
        {
294 lars 219
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 220
            $sql = '
221
                SELECT
222
                    *
223
                FROM
224
                    artikel
225
                WHERE
226
                    father>=-1
227
            ';
228
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 229
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
230
            $progressbar->start();
260 lars 231
            foreach ( $dirs as $row )
232
            {
284 lars 233
                $item = new Item();
234
                $item->id = $row->ID;
235
                $item->directory_id = $row->Father;
236
                $item->name = $row->kurzbezeichnung;
237
                $item->status = $row->status;
238
                $item->kennung = $row->kennung;
239
                $item->description = $row->beschreibung;
240
                $item->created_at = $row->erstellt_am;
241
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 242
                $ersteller = $row->erstellt_von;
282 lars 243
                if ( !$ersteller )
281 lars 244
                {
282 lars 245
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 246
                }
287 lars 247
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 248
                if ( !$bearbeiter )
281 lars 249
                {
282 lars 250
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 251
                }
284 lars 252
                $item->created_by = $ersteller;
253
                $item->updated_by = $bearbeiter;
254
                $item->save();
301 lars 255
                $progressbar->advance();
260 lars 256
            }
301 lars 257
            $progressbar->finish();
302 lars 258
            $progressbar->clear();
294 lars 259
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
260 lars 260
            $sql = "
261
                SELECT
262
                    p.*
263
                FROM
264
                    preise p
265
                JOIN
266
                    artikel a
267
                ON
268
                    a.id=p.artikel_id
269
                WHERE
270
                    a.father >=-1
271
            ";
272
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 273
            $progressbar = $this->output->createProgressBar( count( $prices ) );
274
            $progressbar->start();
260 lars 275
            foreach ( $prices as $price )
276
            {
277
                Price::factory()->createQuietly( [
278
                    "item_id"     => $price->artikel_id,
279
                    "preis_index" => $price->preis_index,
280
                    "preis"       => $price->preis,
281
                    "staffel"     => $price->staffel,
282
                    "created_at"  => $price->geaendert_am,
288 lars 283
                    "created_by"  => $price->geaendert_von,
284
                    "updated_by"  => $price->geaendert_von,
260 lars 285
                    "updated_at"  => $price->geaendert_am
286
                ] );
301 lars 287
                $progressbar->advance();
260 lars 288
            }
301 lars 289
            $progressbar->finish();
302 lars 290
            $progressbar->clear();
260 lars 291
        }
292
 
433 lars 293
        public function migrateItemMedia()
294
        {
295
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
296
            $sql = "SELECT
297
                    *
298
                FROM
299
                    artikel_medien
300
            ";
301
            $media = DB::connection( 'old' )->select( $sql );
302
            $progressbar = $this->output->createProgressBar( count( $media ) );
303
            $progressbar->start();
304
            foreach ( $media as $row )
305
            {
306
                $medium = new ItemMedium();
307
                $medium->item_id = $row->artikel_id;
308
                $medium->medium_id = $row->medien_id;
309
                $medium->rank = $row->rang;
310
                $medium->similar = $row->aehnlich;
311
                $medium->created_at = $row->zugeordnet_am;
312
                $medium->updated_at = $row->zugeordnet_am;
313
                $medium->created_by = "WebanOS Laravel Upgrade";
314
                $medium->updated_by = "WebanOS Laravel Upgrade";
315
                $medium->save();
316
                $progressbar->advance();
317
            }
318
            $progressbar->finish();
319
            $progressbar->clear();
320
        }
321
 
260 lars 322
        private function migrateActions()
323
        {
294 lars 324
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
260 lars 325
            $sql = "
326
                SELECT
327
                    *
328
                FROM
329
                    Aktionen
330
            ";
331
            $actions = DB::connection( 'old' )->select( $sql );
301 lars 332
            $progressbar = $this->output->createProgressBar( count( $actions ) );
333
            $progressbar->start();
260 lars 334
            foreach ( $actions as $action )
335
            {
336
                $actionDB = new Action();
337
                $actionDB->id = $action->ID;
338
                $actionDB->headline = $action->headline;
339
                $actionDB->text = $action->text;
340
                $actionDB->rang = $action->rang;
341
                $actionDB->config = $action->config;
264 lars 342
                $actionDB->category = $action->Kategorie;
260 lars 343
                $actionDB->notes = $action->notizen;
344
                $actionDB->valid_from = $action->von;
345
                $actionDB->valid_to = $action->bis;
291 lars 346
                $actionDB->created_by = "WebanOS Laravel Upgrade";
347
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
265 lars 348
                $actionDB->save();
301 lars 349
                $progressbar->advance();
260 lars 350
            }
301 lars 351
            $progressbar->finish();
302 lars 352
            $progressbar->clear();
260 lars 353
        }
272 lars 354
 
433 lars 355
        public function migrateActionMedia()
272 lars 356
        {
433 lars 357
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
358
            $sql = "SELECT
272 lars 359
                    *
360
                FROM
433 lars 361
                    aktionen_medien
272 lars 362
            ";
363
            $media = DB::connection( 'old' )->select( $sql );
301 lars 364
            $progressbar = $this->output->createProgressBar( count( $media ) );
365
            $progressbar->start();
433 lars 366
            foreach ( $media as $row )
272 lars 367
            {
433 lars 368
                $medium = new ActionMedium();
369
                $medium->action_id = $row->aktionen_id;
370
                $medium->medium_id = $row->medien_id;
371
                $medium->rank = $row->rang;
372
                $medium->created_by = "WebanOS Laravel Upgrade";
373
                $medium->updated_by = "WebanOS Laravel Upgrade";
374
                $medium->save();
301 lars 375
                $progressbar->advance();
272 lars 376
            }
301 lars 377
            $progressbar->finish();
302 lars 378
            $progressbar->clear();
272 lars 379
        }
304 lars 380
 
381
        private function migrateUsers()
382
        {
383
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );
433 lars 384
            $start = 0;
385
            $sql = "SELECT
386
                    MAX(id) AS start
387
                FROM
434 lars 388
                    users
433 lars 389
            ";
390
            $row = DB::connection( "order" )->select( $sql );
449 lars 391
            if ( $row[0]->start )
433 lars 392
            {
435 lars 393
                $start = $row[0]->start;
433 lars 394
            }
395
            $sql = "SELECT
396
                    *
397
                FROM
434 lars 398
                    Logins
433 lars 399
                WHERE
400
                    id>" . $start . "
401
            ";
437 lars 402
            $users = DB::connection( "oldOrder" )->select( $sql );
403
            $progressbar = $this->output->createProgressBar( count( $users ) );
448 lars 404
            $progressbar->start();
437 lars 405
            foreach ( $users as $oldUser )
433 lars 406
            {
443 lars 407
                $ersteller = $oldUser->erstellt_von;
442 lars 408
                if ( !$ersteller )
409
                {
410
                    $ersteller = "WebanOS Laravel Upgrade";
411
                }
443 lars 412
                $bearbeiter = $oldUser->letzte_Aenderung_von;
442 lars 413
                if ( !$bearbeiter )
414
                {
415
                    $bearbeiter = "WebanOS Laravel Upgrade";
416
                }
437 lars 417
                $user = new User();
438 lars 418
                $user->id = $oldUser->ID;
437 lars 419
                $user->email = $oldUser->E_Mail;
420
                $user->created_at = $oldUser->erstellt_am;
442 lars 421
                $user->created_by = $ersteller;
422
                $user->updated_by = $bearbeiter;
437 lars 423
                $user->updated_at = $oldUser->letzte_Aenderung_am;
424
                $user->save();
441 lars 425
                $progressbar->advance();
433 lars 426
            }
441 lars 427
            $progressbar->finish();
428
            $progressbar->clear();
304 lars 429
        }
430
 
445 lars 431
        private function migrateAddresses( bool $isOrder = false )
304 lars 432
        {
445 lars 433
            $typ = "Adressen";
434
            $table = "addresses";
435
            $oldTable = "adresse";
436
            if ( $isOrder === true )
437
            {
438
                $typ = "Bestelladressen";
439
                $table = "order_addresses";
440
                $oldTable = "bestelladresse";
441
            }
442
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere " . $typ );
443
            $start = 0;
444
            $sql = "SELECT
445
                    MAX(id) AS start
446
                FROM
447
                    " . $table . "
448
            ";
449
            $row = DB::connection( "order" )->select( $sql );
449 lars 450
            if ( $row[0]->start )
445 lars 451
            {
452
                $start = $row[0]->start;
453
            }
454
            $sql = "SELECT
455
                    *
456
                FROM
457
                    " . $oldTable . "
458
                WHERE
459
                    id>" . $start . "
460
            ";
461
            $addresses = DB::connection( "oldOrder" )->select( $sql );
462
            $progressbar = $this->output->createProgressBar( count( $addresses ) );
447 lars 463
            $progressbar->start();
445 lars 464
            foreach ( $addresses as $oldAddress )
465
            {
466
                $ersteller = "WebanOS Laravel Upgrade";
467
                $bearbeiter = "WebanOS Laravel Upgrade";
468
                $address = new Address();
469
                $address->id = $oldAddress->id;
470
                $address->user_id = $oldAddress->logins_id;
471
                $address->salutation = $oldAddress->anrede;
472
                $address->pro_title = $oldAddress->pro_title;
473
                $address->name = $oldAddress->vorname;
474
                $address->lastname = $oldAddress->nachname;
475
                $address->company = $oldAddress->firma;
476
                $address->company2 = $oldAddress->firma2;
477
                $address->street = $oldAddress->strasse1;
478
                $address->houseno = $oldAddress->str_nr1;
479
                $address->street2 = $oldAddress->strasse2;
480
                $address->zip = $oldAddress->plz;
481
                $address->city = $oldAddress->ort;
482
                $address->country_id = $oldAddress->land;
483
                $address->state_id = $oldAddress->state;
484
                $address->phone = $oldAddress->telefon;
485
                $address->fax = $oldAddress->fax;
486
                $address->email = $oldAddress->email;
487
                $address->nettocalculation = $oldAddress->nettoberechnung;
450 lars 488
                $address->hr_nr = $oldAddress->hr_nr;
445 lars 489
                $address->vat_id = $oldAddress->vat_id;
490
                $address->vat_free = $oldAddress->mwst_befreiung;
491
                $address->legal_form = $oldAddress->legal_form;
492
                $address->comment = $oldAddress->comment;
451 lars 493
                $address->created_at = $oldAddress->letzte_aenderung_am;
445 lars 494
                $address->created_by = $ersteller;
495
                $address->updated_by = $bearbeiter;
496
                $address->updated_at = $oldAddress->letzte_aenderung_am;
497
                $address->save();
498
                $progressbar->advance();
499
            }
500
            $progressbar->finish();
501
            $progressbar->clear();
304 lars 502
        }
503
 
504
        private function migrateOrderAddresses()
505
        {
445 lars 506
            $this->migrateAddresses( true );
304 lars 507
        }
508
 
509
        private function migrateOrders()
510
        {
511
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );
512
        }
513
 
514
        private function migrateOrderItems()
515
        {
516
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );
517
        }
422 lars 518
 
233 lars 519
    }