Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 283 | Revision 285 | 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
        {
272 lars 40
            $this->migrateMedia();
260 lars 41
            $this->migrateDirs();
42
            $this->migrateItems();
43
            $this->migrateActions();
234 lars 44
        }
260 lars 45
 
46
        private function migrateDirs()
47
        {
48
            $this->info( "Migriere Kategorien" );
49
            $sql = '
50
                SELECT
51
                    *
52
                FROM
53
                    directory
54
            ';
55
            $dirs = DB::connection( 'old' )->select( $sql );
56
            foreach ( $dirs as $row )
57
            {
284 lars 58
                $ersteller = $row->erstellt_von;
59
                if ( !$ersteller )
60
                {
61
                    $ersteller = "WebanOS Laravel Upgrade";
62
                }
63
                $bearbeiter = $row->letzte_aenderung_von;
64
                if ( !$bearbeiter )
65
                {
66
                    $bearbeiter = "WebanOS Laravel Upgrade";
67
                }
260 lars 68
                Directory::factory()->createQuietly( [
69
                    "id"           => $row->ID,
70
                    "directory_id" => $row->Father,
71
                    "name"         => $row->Name,
72
                    "status"       => $row->status,
73
                    "kennung"      => $row->Kennung,
74
                    "description"  => $row->Beschreibung,
75
                    "short_line_1" => $row->short_line_1,
76
                    "url"          => $row->url,
284 lars 77
                    "created_at"   => $ersteller,
279 lars 78
                    "created_by"   => $row->erstellt_von,
284 lars 79
                    "updated_by"   => $bearbeiter,
260 lars 80
                    "updated_at"   => $row->letzte_Aenderung_am,
81
                ] );
82
            }
83
        }
84
 
85
        private function migrateItems()
86
        {
87
            $this->info( "Migriere Artikel" );
88
            $sql = '
89
                SELECT
90
                    *
91
                FROM
92
                    artikel
93
                WHERE
94
                    father>=-1
95
            ';
96
            $dirs = DB::connection( 'old' )->select( $sql );
97
            foreach ( $dirs as $row )
98
            {
284 lars 99
                $item = new Item();
100
                $item->id = $row->ID;
101
                $item->directory_id = $row->Father;
102
                $item->name = $row->kurzbezeichnung;
103
                $item->status = $row->status;
104
                $item->kennung = $row->kennung;
105
                $item->description = $row->beschreibung;
106
                $item->created_at = $row->erstellt_am;
107
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 108
                $ersteller = $row->erstellt_von;
282 lars 109
                if ( !$ersteller )
281 lars 110
                {
282 lars 111
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 112
                }
283 lars 113
                $bearbeiter = $row->letzte_aenderung_von;
282 lars 114
                if ( !$bearbeiter )
281 lars 115
                {
282 lars 116
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 117
                }
284 lars 118
                $item->created_by = $ersteller;
119
                $item->updated_by = $bearbeiter;
120
                $item->save();
260 lars 121
            }
122
            $sql = "
123
                SELECT
124
                    p.*
125
                FROM
126
                    preise p
127
                JOIN
128
                    artikel a
129
                ON
130
                    a.id=p.artikel_id
131
                WHERE
132
                    a.father >=-1
133
            ";
134
            $prices = DB::connection( 'old' )->select( $sql );
135
            foreach ( $prices as $price )
136
            {
137
                Price::factory()->createQuietly( [
138
                    "item_id"     => $price->artikel_id,
139
                    "preis_index" => $price->preis_index,
140
                    "preis"       => $price->preis,
141
                    "staffel"     => $price->staffel,
142
                    "created_at"  => $price->geaendert_am,
281 lars 143
                    "created_by"  => $price->erstellt_von,
144
                    "updated_by"  => $price->letzte_Aenderung_von,
260 lars 145
                    "updated_at"  => $price->geaendert_am
146
                ] );
147
            }
148
 
149
        }
150
 
151
        private function migrateActions()
152
        {
272 lars 153
            $this->info( "Migriere Aktionen" );
260 lars 154
            $sql = "
155
                SELECT
156
                    *
157
                FROM
158
                    Aktionen
159
            ";
160
            $actions = DB::connection( 'old' )->select( $sql );
161
            foreach ( $actions as $action )
162
            {
163
                $actionDB = new Action();
164
                $actionDB->id = $action->ID;
165
                $actionDB->headline = $action->headline;
166
                $actionDB->text = $action->text;
167
                $actionDB->rang = $action->rang;
168
                $actionDB->config = $action->config;
264 lars 169
                $actionDB->category = $action->Kategorie;
260 lars 170
                $actionDB->notes = $action->notizen;
171
                $actionDB->valid_from = $action->von;
172
                $actionDB->valid_to = $action->bis;
281 lars 173
                if ( $action->erstellt_von )
174
                {
175
                    $actionDB->created_by = $action->erstellt_von;
176
                }
177
                if ( $action->letzte_Aenderung_von )
178
                {
179
                    $actionDB->updated_by = $action->letzte_Aenderung_von;
180
                }
265 lars 181
                $actionDB->save();
260 lars 182
            }
183
        }
272 lars 184
 
185
        public function migrateMedia()
186
        {
187
            $this->info( "Migriere Medien" );
188
            $sql = "
189
                SELECT
190
                    *
191
                FROM
192
                    medien
193
            ";
194
            $media = DB::connection( 'old' )->select( $sql );
195
            foreach ( $media as $medium )
196
            {
197
                $mediumDB = new Medium();
198
                $mediumDB->id = $medium->id;
199
                $mediumDB->name = $medium->name;
200
                $mediumDB->folder = $medium->folder;
273 lars 201
                $mediumDB->medium_type_id = $medium->typ;
272 lars 202
                $mediumDB->description = $medium->beschreibung;
277 lars 203
                if ( $medium->erstellt_am )
204
                {
205
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
206
                }
281 lars 207
                $ersteller = $medium->erstellt_von;
208
                if ( !$ersteller )
209
                {
210
                    $ersteller = "WebanOS Laravel Upgrade";
211
                }
212
                $bearbeiter = $medium->letzte_aenderung_von;
213
                if ( !$bearbeiter )
214
                {
215
                    $bearbeiter = "WebanOS Laravel Upgrade";
216
                }
217
                $mediumDB->created_by = $ersteller;
218
                $mediumDB->updated_by = $bearbeiter;
272 lars 219
                $mediumDB->save();
220
            }
221
        }
233 lars 222
    }