Subversion-Projekte lars-tiefland.laravel_shop

Revision

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