Subversion-Projekte lars-tiefland.laravel_shop

Revision

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