Subversion-Projekte lars-tiefland.laravel_shop

Revision

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