Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 304 | Revision 422 | 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" );
272 lars 41
            $this->migrateMedia();
260 lars 42
            $this->migrateDirs();
43
            $this->migrateItems();
44
            $this->migrateActions();
421 lars 45
            $this->migrateUsers();
304 lars 46
            $this->migrateAddresses();
421 lars 47
            $this->migrateOrderAddresses();
304 lars 48
            $this->migrateOrders();
49
            $this->migrateOrderItems();
294 lars 50
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );
234 lars 51
        }
260 lars 52
 
53
        private function migrateDirs()
54
        {
294 lars 55
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
260 lars 56
            $sql = '
57
                SELECT
58
                    *
59
                FROM
60
                    directory
61
            ';
62
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 63
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
64
            $progressbar->start();
260 lars 65
            foreach ( $dirs as $row )
66
            {
284 lars 67
                $ersteller = $row->erstellt_von;
68
                if ( !$ersteller )
69
                {
70
                    $ersteller = "WebanOS Laravel Upgrade";
71
                }
285 lars 72
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 73
                if ( !$bearbeiter )
74
                {
75
                    $bearbeiter = "WebanOS Laravel Upgrade";
76
                }
303 lars 77
                $dir = new Directory();
78
                $dir->id = $row->ID;
304 lars 79
                $dir->directory_id = $row->Father;
303 lars 80
                $dir->name = $row->Name;
304 lars 81
                $dir->status = $row->status;
303 lars 82
                $dir->kennung = $row->Kennung;
304 lars 83
                $dir->description = $row->Beschreibung;
84
                $dir->short_line_1 = $row->short_line_1;
303 lars 85
                $dir->url = $row->url;
86
                $dir->created_at = $row->erstellt_am;
87
                $dir->created_by = $ersteller;
88
                $dir->updated_by = $bearbeiter;
89
                $dir->updated_at = $row->letzte_Aenderung_am;
90
                $dir->save();
301 lars 91
                $progressbar->advance();
260 lars 92
            }
301 lars 93
            $progressbar->finish();
302 lars 94
            $progressbar->clear();
295 lars 95
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
299 lars 96
            $sql = "SELECT
295 lars 97
                    *
98
                FROM
99
                    directory_medien
100
            ";
299 lars 101
            $media = DB::connection( 'old' )->select( $sql );
301 lars 102
            $progressbar = $this->output->createProgressBar( count( $media ) );
103
            $progressbar->start();
299 lars 104
            foreach ( $media as $row )
295 lars 105
            {
106
                $medium = new DirectoryMedium();
107
                $medium->directory_id = $row->directory_id;
299 lars 108
                $medium->medium_id = $row->medien_id;
109
                $medium->rank = $row->rang;
110
                $medium->similar = $row->aehnlich;
111
                $medium->created_at = $row->zugeordnet_am;
112
                $medium->updated_at = $row->zugeordnet_am;
113
                $medium->created_by = "WebanOS Laravel Upgrade";
114
                $medium->updated_by = "WebanOS Laravel Upgrade";
115
                $medium->save();
301 lars 116
                $progressbar->advance();
295 lars 117
            }
301 lars 118
            $progressbar->finish();
302 lars 119
            $progressbar->clear();
260 lars 120
        }
121
 
122
        private function migrateItems()
123
        {
294 lars 124
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 125
            $sql = '
126
                SELECT
127
                    *
128
                FROM
129
                    artikel
130
                WHERE
131
                    father>=-1
132
            ';
133
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 134
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
135
            $progressbar->start();
260 lars 136
            foreach ( $dirs as $row )
137
            {
284 lars 138
                $item = new Item();
139
                $item->id = $row->ID;
140
                $item->directory_id = $row->Father;
141
                $item->name = $row->kurzbezeichnung;
142
                $item->status = $row->status;
143
                $item->kennung = $row->kennung;
144
                $item->description = $row->beschreibung;
145
                $item->created_at = $row->erstellt_am;
146
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 147
                $ersteller = $row->erstellt_von;
282 lars 148
                if ( !$ersteller )
281 lars 149
                {
282 lars 150
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 151
                }
287 lars 152
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 153
                if ( !$bearbeiter )
281 lars 154
                {
282 lars 155
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 156
                }
284 lars 157
                $item->created_by = $ersteller;
158
                $item->updated_by = $bearbeiter;
159
                $item->save();
301 lars 160
                $progressbar->advance();
260 lars 161
            }
301 lars 162
            $progressbar->finish();
302 lars 163
            $progressbar->clear();
294 lars 164
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
260 lars 165
            $sql = "
166
                SELECT
167
                    p.*
168
                FROM
169
                    preise p
170
                JOIN
171
                    artikel a
172
                ON
173
                    a.id=p.artikel_id
174
                WHERE
175
                    a.father >=-1
176
            ";
177
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 178
            $progressbar = $this->output->createProgressBar( count( $prices ) );
179
            $progressbar->start();
260 lars 180
            foreach ( $prices as $price )
181
            {
182
                Price::factory()->createQuietly( [
183
                    "item_id"     => $price->artikel_id,
184
                    "preis_index" => $price->preis_index,
185
                    "preis"       => $price->preis,
186
                    "staffel"     => $price->staffel,
187
                    "created_at"  => $price->geaendert_am,
288 lars 188
                    "created_by"  => $price->geaendert_von,
189
                    "updated_by"  => $price->geaendert_von,
260 lars 190
                    "updated_at"  => $price->geaendert_am
191
                ] );
301 lars 192
                $progressbar->advance();
260 lars 193
            }
301 lars 194
            $progressbar->finish();
302 lars 195
            $progressbar->clear();
300 lars 196
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
197
            $sql = "SELECT
198
                    *
199
                FROM
200
                    artikel_medien
201
            ";
202
            $media = DB::connection( 'old' )->select( $sql );
301 lars 203
            $progressbar = $this->output->createProgressBar( count( $media ) );
204
            $progressbar->start();
300 lars 205
            foreach ( $media as $row )
206
            {
207
                $medium = new ItemMedium();
208
                $medium->item_id = $row->artikel_id;
209
                $medium->medium_id = $row->medien_id;
210
                $medium->rank = $row->rang;
211
                $medium->similar = $row->aehnlich;
212
                $medium->created_at = $row->zugeordnet_am;
213
                $medium->updated_at = $row->zugeordnet_am;
214
                $medium->created_by = "WebanOS Laravel Upgrade";
215
                $medium->updated_by = "WebanOS Laravel Upgrade";
216
                $medium->save();
301 lars 217
                $progressbar->advance();
300 lars 218
            }
301 lars 219
            $progressbar->finish();
302 lars 220
            $progressbar->clear();
260 lars 221
        }
222
 
223
        private function migrateActions()
224
        {
294 lars 225
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
260 lars 226
            $sql = "
227
                SELECT
228
                    *
229
                FROM
230
                    Aktionen
231
            ";
232
            $actions = DB::connection( 'old' )->select( $sql );
301 lars 233
            $progressbar = $this->output->createProgressBar( count( $actions ) );
234
            $progressbar->start();
260 lars 235
            foreach ( $actions as $action )
236
            {
237
                $actionDB = new Action();
238
                $actionDB->id = $action->ID;
239
                $actionDB->headline = $action->headline;
240
                $actionDB->text = $action->text;
241
                $actionDB->rang = $action->rang;
242
                $actionDB->config = $action->config;
264 lars 243
                $actionDB->category = $action->Kategorie;
260 lars 244
                $actionDB->notes = $action->notizen;
245
                $actionDB->valid_from = $action->von;
246
                $actionDB->valid_to = $action->bis;
291 lars 247
                $actionDB->created_by = "WebanOS Laravel Upgrade";
248
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
265 lars 249
                $actionDB->save();
301 lars 250
                $progressbar->advance();
260 lars 251
            }
301 lars 252
            $progressbar->finish();
302 lars 253
            $progressbar->clear();
300 lars 254
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
255
            $sql = "SELECT
256
                    *
257
                FROM
258
                    aktionen_medien
259
            ";
260
            $media = DB::connection( 'old' )->select( $sql );
301 lars 261
            $progressbar = $this->output->createProgressBar( count( $media ) );
262
            $progressbar->start();
300 lars 263
            foreach ( $media as $row )
264
            {
265
                $medium = new ActionMedium();
266
                $medium->action_id = $row->aktionen_id;
267
                $medium->medium_id = $row->medien_id;
268
                $medium->rank = $row->rang;
269
                $medium->created_by = "WebanOS Laravel Upgrade";
270
                $medium->updated_by = "WebanOS Laravel Upgrade";
271
                $medium->save();
301 lars 272
                $progressbar->advance();
300 lars 273
            }
301 lars 274
            $progressbar->finish();
302 lars 275
            $progressbar->clear();
260 lars 276
        }
272 lars 277
 
278
        public function migrateMedia()
279
        {
294 lars 280
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
272 lars 281
            $sql = "
282
                SELECT
283
                    *
284
                FROM
285
                    medien
286
            ";
287
            $media = DB::connection( 'old' )->select( $sql );
301 lars 288
            $progressbar = $this->output->createProgressBar( count( $media ) );
289
            $progressbar->start();
272 lars 290
            foreach ( $media as $medium )
291
            {
292
                $mediumDB = new Medium();
293
                $mediumDB->id = $medium->id;
294
                $mediumDB->name = $medium->name;
295
                $mediumDB->folder = $medium->folder;
273 lars 296
                $mediumDB->medium_type_id = $medium->typ;
272 lars 297
                $mediumDB->description = $medium->beschreibung;
277 lars 298
                if ( $medium->erstellt_am )
299
                {
300
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
301
                }
281 lars 302
                $ersteller = $medium->erstellt_von;
303
                if ( !$ersteller )
304
                {
305
                    $ersteller = "WebanOS Laravel Upgrade";
306
                }
307
                $bearbeiter = $medium->letzte_aenderung_von;
308
                if ( !$bearbeiter )
309
                {
310
                    $bearbeiter = "WebanOS Laravel Upgrade";
311
                }
312
                $mediumDB->created_by = $ersteller;
313
                $mediumDB->updated_by = $bearbeiter;
272 lars 314
                $mediumDB->save();
301 lars 315
                $progressbar->advance();
272 lars 316
            }
301 lars 317
            $progressbar->finish();
302 lars 318
            $progressbar->clear();
272 lars 319
        }
304 lars 320
 
321
        private function migrateUsers()
322
        {
323
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );
324
        }
325
 
326
        private function migrateAddresses()
327
        {
328
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Adressen" );
329
        }
330
 
331
        private function migrateOrderAddresses()
332
        {
333
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestelladressen" );
334
        }
335
 
336
        private function migrateOrders()
337
        {
338
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );
339
        }
340
 
341
        private function migrateOrderItems()
342
        {
343
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );
344
        }
233 lars 345
    }