Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 422 | Revision 433 | 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
 
97
        private function migrateDirs()
98
        {
294 lars 99
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
260 lars 100
            $sql = '
101
                SELECT
102
                    *
103
                FROM
104
                    directory
105
            ';
106
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 107
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
108
            $progressbar->start();
260 lars 109
            foreach ( $dirs as $row )
110
            {
284 lars 111
                $ersteller = $row->erstellt_von;
112
                if ( !$ersteller )
113
                {
114
                    $ersteller = "WebanOS Laravel Upgrade";
115
                }
285 lars 116
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 117
                if ( !$bearbeiter )
118
                {
119
                    $bearbeiter = "WebanOS Laravel Upgrade";
120
                }
303 lars 121
                $dir = new Directory();
122
                $dir->id = $row->ID;
304 lars 123
                $dir->directory_id = $row->Father;
303 lars 124
                $dir->name = $row->Name;
432 lars 125
                $dir->articlemaster = $row->Artikelstamm;
304 lars 126
                $dir->status = $row->status;
303 lars 127
                $dir->kennung = $row->Kennung;
304 lars 128
                $dir->description = $row->Beschreibung;
129
                $dir->short_line_1 = $row->short_line_1;
303 lars 130
                $dir->url = $row->url;
131
                $dir->created_at = $row->erstellt_am;
132
                $dir->created_by = $ersteller;
133
                $dir->updated_by = $bearbeiter;
134
                $dir->updated_at = $row->letzte_Aenderung_am;
135
                $dir->save();
301 lars 136
                $progressbar->advance();
260 lars 137
            }
301 lars 138
            $progressbar->finish();
302 lars 139
            $progressbar->clear();
260 lars 140
        }
141
 
142
        private function migrateItems()
143
        {
294 lars 144
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 145
            $sql = '
146
                SELECT
147
                    *
148
                FROM
149
                    artikel
150
                WHERE
151
                    father>=-1
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
                $item = new Item();
159
                $item->id = $row->ID;
160
                $item->directory_id = $row->Father;
161
                $item->name = $row->kurzbezeichnung;
162
                $item->status = $row->status;
163
                $item->kennung = $row->kennung;
164
                $item->description = $row->beschreibung;
165
                $item->created_at = $row->erstellt_am;
166
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 167
                $ersteller = $row->erstellt_von;
282 lars 168
                if ( !$ersteller )
281 lars 169
                {
282 lars 170
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 171
                }
287 lars 172
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 173
                if ( !$bearbeiter )
281 lars 174
                {
282 lars 175
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 176
                }
284 lars 177
                $item->created_by = $ersteller;
178
                $item->updated_by = $bearbeiter;
179
                $item->save();
301 lars 180
                $progressbar->advance();
260 lars 181
            }
301 lars 182
            $progressbar->finish();
302 lars 183
            $progressbar->clear();
294 lars 184
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
260 lars 185
            $sql = "
186
                SELECT
187
                    p.*
188
                FROM
189
                    preise p
190
                JOIN
191
                    artikel a
192
                ON
193
                    a.id=p.artikel_id
194
                WHERE
195
                    a.father >=-1
196
            ";
197
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 198
            $progressbar = $this->output->createProgressBar( count( $prices ) );
199
            $progressbar->start();
260 lars 200
            foreach ( $prices as $price )
201
            {
202
                Price::factory()->createQuietly( [
203
                    "item_id"     => $price->artikel_id,
204
                    "preis_index" => $price->preis_index,
205
                    "preis"       => $price->preis,
206
                    "staffel"     => $price->staffel,
207
                    "created_at"  => $price->geaendert_am,
288 lars 208
                    "created_by"  => $price->geaendert_von,
209
                    "updated_by"  => $price->geaendert_von,
260 lars 210
                    "updated_at"  => $price->geaendert_am
211
                ] );
301 lars 212
                $progressbar->advance();
260 lars 213
            }
301 lars 214
            $progressbar->finish();
302 lars 215
            $progressbar->clear();
260 lars 216
        }
217
 
218
        private function migrateActions()
219
        {
294 lars 220
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
260 lars 221
            $sql = "
222
                SELECT
223
                    *
224
                FROM
225
                    Aktionen
226
            ";
227
            $actions = DB::connection( 'old' )->select( $sql );
301 lars 228
            $progressbar = $this->output->createProgressBar( count( $actions ) );
229
            $progressbar->start();
260 lars 230
            foreach ( $actions as $action )
231
            {
232
                $actionDB = new Action();
233
                $actionDB->id = $action->ID;
234
                $actionDB->headline = $action->headline;
235
                $actionDB->text = $action->text;
236
                $actionDB->rang = $action->rang;
237
                $actionDB->config = $action->config;
264 lars 238
                $actionDB->category = $action->Kategorie;
260 lars 239
                $actionDB->notes = $action->notizen;
240
                $actionDB->valid_from = $action->von;
241
                $actionDB->valid_to = $action->bis;
291 lars 242
                $actionDB->created_by = "WebanOS Laravel Upgrade";
243
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
265 lars 244
                $actionDB->save();
301 lars 245
                $progressbar->advance();
260 lars 246
            }
301 lars 247
            $progressbar->finish();
302 lars 248
            $progressbar->clear();
260 lars 249
        }
272 lars 250
 
251
        public function migrateMedia()
252
        {
294 lars 253
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
272 lars 254
            $sql = "
255
                SELECT
256
                    *
257
                FROM
258
                    medien
259
            ";
260
            $media = DB::connection( 'old' )->select( $sql );
301 lars 261
            $progressbar = $this->output->createProgressBar( count( $media ) );
262
            $progressbar->start();
272 lars 263
            foreach ( $media as $medium )
264
            {
265
                $mediumDB = new Medium();
266
                $mediumDB->id = $medium->id;
267
                $mediumDB->name = $medium->name;
268
                $mediumDB->folder = $medium->folder;
273 lars 269
                $mediumDB->medium_type_id = $medium->typ;
272 lars 270
                $mediumDB->description = $medium->beschreibung;
277 lars 271
                if ( $medium->erstellt_am )
272
                {
273
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
274
                }
281 lars 275
                $ersteller = $medium->erstellt_von;
276
                if ( !$ersteller )
277
                {
278
                    $ersteller = "WebanOS Laravel Upgrade";
279
                }
280
                $bearbeiter = $medium->letzte_aenderung_von;
281
                if ( !$bearbeiter )
282
                {
283
                    $bearbeiter = "WebanOS Laravel Upgrade";
284
                }
285
                $mediumDB->created_by = $ersteller;
286
                $mediumDB->updated_by = $bearbeiter;
272 lars 287
                $mediumDB->save();
301 lars 288
                $progressbar->advance();
272 lars 289
            }
301 lars 290
            $progressbar->finish();
302 lars 291
            $progressbar->clear();
272 lars 292
        }
304 lars 293
 
294
        private function migrateUsers()
295
        {
296
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );
297
        }
298
 
299
        private function migrateAddresses()
300
        {
301
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Adressen" );
302
        }
303
 
304
        private function migrateOrderAddresses()
305
        {
306
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestelladressen" );
307
        }
308
 
309
        private function migrateOrders()
310
        {
311
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );
312
        }
313
 
314
        private function migrateOrderItems()
315
        {
316
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );
317
        }
422 lars 318
 
319
        public function migrateDirMedia()
320
        {
321
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
322
            $sql = "SELECT
323
                    *
324
                FROM
325
                    directory_medien
326
            ";
327
            $media = DB::connection( 'old' )->select( $sql );
328
            $progressbar = $this->output->createProgressBar( count( $media ) );
329
            $progressbar->start();
330
            foreach ( $media as $row )
331
            {
332
                $medium = new DirectoryMedium();
333
                $medium->directory_id = $row->directory_id;
334
                $medium->medium_id = $row->medien_id;
335
                $medium->rank = $row->rang;
336
                $medium->similar = $row->aehnlich;
337
                $medium->created_at = $row->zugeordnet_am;
338
                $medium->updated_at = $row->zugeordnet_am;
339
                $medium->created_by = "WebanOS Laravel Upgrade";
340
                $medium->updated_by = "WebanOS Laravel Upgrade";
341
                $medium->save();
342
                $progressbar->advance();
343
            }
344
            $progressbar->finish();
345
            $progressbar->clear();
346
        }
347
 
348
        public function migrateItemMedia()
349
        {
350
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
351
            $sql = "SELECT
352
                    *
353
                FROM
354
                    artikel_medien
355
            ";
356
            $media = DB::connection( 'old' )->select( $sql );
357
            $progressbar = $this->output->createProgressBar( count( $media ) );
358
            $progressbar->start();
359
            foreach ( $media as $row )
360
            {
361
                $medium = new ItemMedium();
362
                $medium->item_id = $row->artikel_id;
363
                $medium->medium_id = $row->medien_id;
364
                $medium->rank = $row->rang;
365
                $medium->similar = $row->aehnlich;
366
                $medium->created_at = $row->zugeordnet_am;
367
                $medium->updated_at = $row->zugeordnet_am;
368
                $medium->created_by = "WebanOS Laravel Upgrade";
369
                $medium->updated_by = "WebanOS Laravel Upgrade";
370
                $medium->save();
371
                $progressbar->advance();
372
            }
373
            $progressbar->finish();
374
            $progressbar->clear();
375
        }
376
 
377
        public function migrateActionMedia()
378
        {
379
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
380
            $sql = "SELECT
381
                    *
382
                FROM
383
                    aktionen_medien
384
            ";
385
            $media = DB::connection( 'old' )->select( $sql );
386
            $progressbar = $this->output->createProgressBar( count( $media ) );
387
            $progressbar->start();
388
            foreach ( $media as $row )
389
            {
390
                $medium = new ActionMedium();
391
                $medium->action_id = $row->aktionen_id;
392
                $medium->medium_id = $row->medien_id;
393
                $medium->rank = $row->rang;
394
                $medium->created_by = "WebanOS Laravel Upgrade";
395
                $medium->updated_by = "WebanOS Laravel Upgrade";
396
                $medium->save();
397
                $progressbar->advance();
398
            }
399
            $progressbar->finish();
400
            $progressbar->clear();
401
        }
402
 
233 lars 403
    }