Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 300 | Revision 302 | 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();
295 lars 89
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
299 lars 90
            $sql = "SELECT
295 lars 91
                    *
92
                FROM
93
                    directory_medien
94
            ";
299 lars 95
            $media = DB::connection( 'old' )->select( $sql );
301 lars 96
            $progressbar = $this->output->createProgressBar( count( $media ) );
97
            $progressbar->start();
299 lars 98
            foreach ( $media as $row )
295 lars 99
            {
100
                $medium = new DirectoryMedium();
101
                $medium->directory_id = $row->directory_id;
299 lars 102
                $medium->medium_id = $row->medien_id;
103
                $medium->rank = $row->rang;
104
                $medium->similar = $row->aehnlich;
105
                $medium->created_at = $row->zugeordnet_am;
106
                $medium->updated_at = $row->zugeordnet_am;
107
                $medium->created_by = "WebanOS Laravel Upgrade";
108
                $medium->updated_by = "WebanOS Laravel Upgrade";
109
                $medium->save();
301 lars 110
                $progressbar->advance();
295 lars 111
            }
301 lars 112
            $progressbar->finish();
260 lars 113
        }
114
 
115
        private function migrateItems()
116
        {
294 lars 117
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 118
            $sql = '
119
                SELECT
120
                    *
121
                FROM
122
                    artikel
123
                WHERE
124
                    father>=-1
125
            ';
126
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 127
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
128
            $progressbar->start();
260 lars 129
            foreach ( $dirs as $row )
130
            {
284 lars 131
                $item = new Item();
132
                $item->id = $row->ID;
133
                $item->directory_id = $row->Father;
134
                $item->name = $row->kurzbezeichnung;
135
                $item->status = $row->status;
136
                $item->kennung = $row->kennung;
137
                $item->description = $row->beschreibung;
138
                $item->created_at = $row->erstellt_am;
139
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 140
                $ersteller = $row->erstellt_von;
282 lars 141
                if ( !$ersteller )
281 lars 142
                {
282 lars 143
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 144
                }
287 lars 145
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 146
                if ( !$bearbeiter )
281 lars 147
                {
282 lars 148
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 149
                }
284 lars 150
                $item->created_by = $ersteller;
151
                $item->updated_by = $bearbeiter;
152
                $item->save();
301 lars 153
                $progressbar->advance();
260 lars 154
            }
301 lars 155
            $progressbar->finish();
294 lars 156
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
260 lars 157
            $sql = "
158
                SELECT
159
                    p.*
160
                FROM
161
                    preise p
162
                JOIN
163
                    artikel a
164
                ON
165
                    a.id=p.artikel_id
166
                WHERE
167
                    a.father >=-1
168
            ";
169
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 170
            $progressbar = $this->output->createProgressBar( count( $prices ) );
171
            $progressbar->start();
260 lars 172
            foreach ( $prices as $price )
173
            {
174
                Price::factory()->createQuietly( [
175
                    "item_id"     => $price->artikel_id,
176
                    "preis_index" => $price->preis_index,
177
                    "preis"       => $price->preis,
178
                    "staffel"     => $price->staffel,
179
                    "created_at"  => $price->geaendert_am,
288 lars 180
                    "created_by"  => $price->geaendert_von,
181
                    "updated_by"  => $price->geaendert_von,
260 lars 182
                    "updated_at"  => $price->geaendert_am
183
                ] );
301 lars 184
                $progressbar->advance();
260 lars 185
            }
301 lars 186
            $progressbar->finish();
300 lars 187
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
188
            $sql = "SELECT
189
                    *
190
                FROM
191
                    artikel_medien
192
            ";
193
            $media = DB::connection( 'old' )->select( $sql );
301 lars 194
            $progressbar = $this->output->createProgressBar( count( $media ) );
195
            $progressbar->start();
300 lars 196
            foreach ( $media as $row )
197
            {
198
                $medium = new ItemMedium();
199
                $medium->item_id = $row->artikel_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();
301 lars 208
                $progressbar->advance();
300 lars 209
            }
301 lars 210
            $progressbar->finish();
260 lars 211
        }
212
 
213
        private function migrateActions()
214
        {
294 lars 215
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
260 lars 216
            $sql = "
217
                SELECT
218
                    *
219
                FROM
220
                    Aktionen
221
            ";
222
            $actions = DB::connection( 'old' )->select( $sql );
301 lars 223
            $progressbar = $this->output->createProgressBar( count( $actions ) );
224
            $progressbar->start();
260 lars 225
            foreach ( $actions as $action )
226
            {
227
                $actionDB = new Action();
228
                $actionDB->id = $action->ID;
229
                $actionDB->headline = $action->headline;
230
                $actionDB->text = $action->text;
231
                $actionDB->rang = $action->rang;
232
                $actionDB->config = $action->config;
264 lars 233
                $actionDB->category = $action->Kategorie;
260 lars 234
                $actionDB->notes = $action->notizen;
235
                $actionDB->valid_from = $action->von;
236
                $actionDB->valid_to = $action->bis;
291 lars 237
                $actionDB->created_by = "WebanOS Laravel Upgrade";
238
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
265 lars 239
                $actionDB->save();
301 lars 240
                $progressbar->advance();
260 lars 241
            }
301 lars 242
            $progressbar->finish();
300 lars 243
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
244
            $sql = "SELECT
245
                    *
246
                FROM
247
                    aktionen_medien
248
            ";
249
            $media = DB::connection( 'old' )->select( $sql );
301 lars 250
            $progressbar = $this->output->createProgressBar( count( $media ) );
251
            $progressbar->start();
300 lars 252
            foreach ( $media as $row )
253
            {
254
                $medium = new ActionMedium();
255
                $medium->action_id = $row->aktionen_id;
256
                $medium->medium_id = $row->medien_id;
257
                $medium->rank = $row->rang;
258
                $medium->created_at = $row->zugeordnet_am;
259
                $medium->updated_at = $row->zugeordnet_am;
260
                $medium->created_by = "WebanOS Laravel Upgrade";
261
                $medium->updated_by = "WebanOS Laravel Upgrade";
262
                $medium->save();
301 lars 263
                $progressbar->advance();
300 lars 264
            }
301 lars 265
            $progressbar->finish();
260 lars 266
        }
272 lars 267
 
268
        public function migrateMedia()
269
        {
294 lars 270
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
272 lars 271
            $sql = "
272
                SELECT
273
                    *
274
                FROM
275
                    medien
276
            ";
277
            $media = DB::connection( 'old' )->select( $sql );
301 lars 278
            $progressbar = $this->output->createProgressBar( count( $media ) );
279
            $progressbar->start();
272 lars 280
            foreach ( $media as $medium )
281
            {
282
                $mediumDB = new Medium();
283
                $mediumDB->id = $medium->id;
284
                $mediumDB->name = $medium->name;
285
                $mediumDB->folder = $medium->folder;
273 lars 286
                $mediumDB->medium_type_id = $medium->typ;
272 lars 287
                $mediumDB->description = $medium->beschreibung;
277 lars 288
                if ( $medium->erstellt_am )
289
                {
290
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
291
                }
281 lars 292
                $ersteller = $medium->erstellt_von;
293
                if ( !$ersteller )
294
                {
295
                    $ersteller = "WebanOS Laravel Upgrade";
296
                }
297
                $bearbeiter = $medium->letzte_aenderung_von;
298
                if ( !$bearbeiter )
299
                {
300
                    $bearbeiter = "WebanOS Laravel Upgrade";
301
                }
302
                $mediumDB->created_by = $ersteller;
303
                $mediumDB->updated_by = $bearbeiter;
272 lars 304
                $mediumDB->save();
301 lars 305
                $progressbar->advance();
272 lars 306
            }
301 lars 307
            $progressbar->finish();
272 lars 308
        }
233 lars 309
    }