Subversion-Projekte lars-tiefland.laravel_shop

Revision

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