Subversion-Projekte lars-tiefland.laravel_shop

Revision

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