Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 301 | Revision 303 | 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();
294 lars 45
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );
234 lars 46
        }
260 lars 47
 
48
        private function migrateDirs()
49
        {
294 lars 50
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
260 lars 51
            $sql = '
52
                SELECT
53
                    *
54
                FROM
55
                    directory
56
            ';
57
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 58
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
59
            $progressbar->start();
260 lars 60
            foreach ( $dirs as $row )
61
            {
284 lars 62
                $ersteller = $row->erstellt_von;
63
                if ( !$ersteller )
64
                {
65
                    $ersteller = "WebanOS Laravel Upgrade";
66
                }
285 lars 67
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 68
                if ( !$bearbeiter )
69
                {
70
                    $bearbeiter = "WebanOS Laravel Upgrade";
71
                }
260 lars 72
                Directory::factory()->createQuietly( [
73
                    "id"           => $row->ID,
74
                    "directory_id" => $row->Father,
75
                    "name"         => $row->Name,
76
                    "status"       => $row->status,
77
                    "kennung"      => $row->Kennung,
78
                    "description"  => $row->Beschreibung,
79
                    "short_line_1" => $row->short_line_1,
80
                    "url"          => $row->url,
286 lars 81
                    "created_at"   => $row->erstellt_am,
82
                    "created_by"   => $ersteller,
284 lars 83
                    "updated_by"   => $bearbeiter,
260 lars 84
                    "updated_at"   => $row->letzte_Aenderung_am,
85
                ] );
301 lars 86
                $progressbar->advance();
260 lars 87
            }
301 lars 88
            $progressbar->finish();
302 lars 89
            $progressbar->clear();
295 lars 90
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
299 lars 91
            $sql = "SELECT
295 lars 92
                    *
93
                FROM
94
                    directory_medien
95
            ";
299 lars 96
            $media = DB::connection( 'old' )->select( $sql );
301 lars 97
            $progressbar = $this->output->createProgressBar( count( $media ) );
98
            $progressbar->start();
299 lars 99
            foreach ( $media as $row )
295 lars 100
            {
101
                $medium = new DirectoryMedium();
102
                $medium->directory_id = $row->directory_id;
299 lars 103
                $medium->medium_id = $row->medien_id;
104
                $medium->rank = $row->rang;
105
                $medium->similar = $row->aehnlich;
106
                $medium->created_at = $row->zugeordnet_am;
107
                $medium->updated_at = $row->zugeordnet_am;
108
                $medium->created_by = "WebanOS Laravel Upgrade";
109
                $medium->updated_by = "WebanOS Laravel Upgrade";
110
                $medium->save();
301 lars 111
                $progressbar->advance();
295 lars 112
            }
301 lars 113
            $progressbar->finish();
302 lars 114
            $progressbar->clear();
260 lars 115
        }
116
 
117
        private function migrateItems()
118
        {
294 lars 119
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 120
            $sql = '
121
                SELECT
122
                    *
123
                FROM
124
                    artikel
125
                WHERE
126
                    father>=-1
127
            ';
128
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 129
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
130
            $progressbar->start();
260 lars 131
            foreach ( $dirs as $row )
132
            {
284 lars 133
                $item = new Item();
134
                $item->id = $row->ID;
135
                $item->directory_id = $row->Father;
136
                $item->name = $row->kurzbezeichnung;
137
                $item->status = $row->status;
138
                $item->kennung = $row->kennung;
139
                $item->description = $row->beschreibung;
140
                $item->created_at = $row->erstellt_am;
141
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 142
                $ersteller = $row->erstellt_von;
282 lars 143
                if ( !$ersteller )
281 lars 144
                {
282 lars 145
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 146
                }
287 lars 147
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 148
                if ( !$bearbeiter )
281 lars 149
                {
282 lars 150
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 151
                }
284 lars 152
                $item->created_by = $ersteller;
153
                $item->updated_by = $bearbeiter;
154
                $item->save();
301 lars 155
                $progressbar->advance();
260 lars 156
            }
301 lars 157
            $progressbar->finish();
302 lars 158
            $progressbar->clear();
294 lars 159
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
260 lars 160
            $sql = "
161
                SELECT
162
                    p.*
163
                FROM
164
                    preise p
165
                JOIN
166
                    artikel a
167
                ON
168
                    a.id=p.artikel_id
169
                WHERE
170
                    a.father >=-1
171
            ";
172
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 173
            $progressbar = $this->output->createProgressBar( count( $prices ) );
174
            $progressbar->start();
260 lars 175
            foreach ( $prices as $price )
176
            {
177
                Price::factory()->createQuietly( [
178
                    "item_id"     => $price->artikel_id,
179
                    "preis_index" => $price->preis_index,
180
                    "preis"       => $price->preis,
181
                    "staffel"     => $price->staffel,
182
                    "created_at"  => $price->geaendert_am,
288 lars 183
                    "created_by"  => $price->geaendert_von,
184
                    "updated_by"  => $price->geaendert_von,
260 lars 185
                    "updated_at"  => $price->geaendert_am
186
                ] );
301 lars 187
                $progressbar->advance();
260 lars 188
            }
301 lars 189
            $progressbar->finish();
302 lars 190
            $progressbar->clear();
300 lars 191
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
192
            $sql = "SELECT
193
                    *
194
                FROM
195
                    artikel_medien
196
            ";
197
            $media = DB::connection( 'old' )->select( $sql );
301 lars 198
            $progressbar = $this->output->createProgressBar( count( $media ) );
199
            $progressbar->start();
300 lars 200
            foreach ( $media as $row )
201
            {
202
                $medium = new ItemMedium();
203
                $medium->item_id = $row->artikel_id;
204
                $medium->medium_id = $row->medien_id;
205
                $medium->rank = $row->rang;
206
                $medium->similar = $row->aehnlich;
207
                $medium->created_at = $row->zugeordnet_am;
208
                $medium->updated_at = $row->zugeordnet_am;
209
                $medium->created_by = "WebanOS Laravel Upgrade";
210
                $medium->updated_by = "WebanOS Laravel Upgrade";
211
                $medium->save();
301 lars 212
                $progressbar->advance();
300 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();
300 lars 249
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
250
            $sql = "SELECT
251
                    *
252
                FROM
253
                    aktionen_medien
254
            ";
255
            $media = DB::connection( 'old' )->select( $sql );
301 lars 256
            $progressbar = $this->output->createProgressBar( count( $media ) );
257
            $progressbar->start();
300 lars 258
            foreach ( $media as $row )
259
            {
260
                $medium = new ActionMedium();
261
                $medium->action_id = $row->aktionen_id;
262
                $medium->medium_id = $row->medien_id;
263
                $medium->rank = $row->rang;
264
                $medium->created_by = "WebanOS Laravel Upgrade";
265
                $medium->updated_by = "WebanOS Laravel Upgrade";
266
                $medium->save();
301 lars 267
                $progressbar->advance();
300 lars 268
            }
301 lars 269
            $progressbar->finish();
302 lars 270
            $progressbar->clear();
260 lars 271
        }
272 lars 272
 
273
        public function migrateMedia()
274
        {
294 lars 275
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
272 lars 276
            $sql = "
277
                SELECT
278
                    *
279
                FROM
280
                    medien
281
            ";
282
            $media = DB::connection( 'old' )->select( $sql );
301 lars 283
            $progressbar = $this->output->createProgressBar( count( $media ) );
284
            $progressbar->start();
272 lars 285
            foreach ( $media as $medium )
286
            {
287
                $mediumDB = new Medium();
288
                $mediumDB->id = $medium->id;
289
                $mediumDB->name = $medium->name;
290
                $mediumDB->folder = $medium->folder;
273 lars 291
                $mediumDB->medium_type_id = $medium->typ;
272 lars 292
                $mediumDB->description = $medium->beschreibung;
277 lars 293
                if ( $medium->erstellt_am )
294
                {
295
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
296
                }
281 lars 297
                $ersteller = $medium->erstellt_von;
298
                if ( !$ersteller )
299
                {
300
                    $ersteller = "WebanOS Laravel Upgrade";
301
                }
302
                $bearbeiter = $medium->letzte_aenderung_von;
303
                if ( !$bearbeiter )
304
                {
305
                    $bearbeiter = "WebanOS Laravel Upgrade";
306
                }
307
                $mediumDB->created_by = $ersteller;
308
                $mediumDB->updated_by = $bearbeiter;
272 lars 309
                $mediumDB->save();
301 lars 310
                $progressbar->advance();
272 lars 311
            }
301 lars 312
            $progressbar->finish();
302 lars 313
            $progressbar->clear();
272 lars 314
        }
233 lars 315
    }