| Conditions | 31 |
| Paths | > 20000 |
| Total Lines | 350 |
| Code Lines | 220 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 47 | public function handle() |
||
| 48 | { |
||
| 49 | $tenantId = $this->argument('tenantId'); |
||
| 50 | $tenant = Tenant::find($tenantId); |
||
| 51 | |||
| 52 | if (!$tenant) { |
||
| 53 | throw new RuntimeException('Tenant with ID = '.$tenantId.' does not exist.'); |
||
|
|
|||
| 54 | } |
||
| 55 | |||
| 56 | if (!$this->confirm('Do you REALLY WANT to run import legacy data?')) { |
||
| 57 | return; |
||
| 58 | } |
||
| 59 | |||
| 60 | if (!$this->confirm('It will ERASE ALL current data for ::'.$tenant->subdomain.':: tenant. Are you sure?')) { |
||
| 61 | return; |
||
| 62 | } |
||
| 63 | |||
| 64 | $this->tenantManager->setTenant($tenant); |
||
| 65 | \DB::purge('tenant'); |
||
| 66 | |||
| 67 | DB::connection('tenant')->delete('DELETE FROM sources'); |
||
| 68 | DB::connection('tenant')->delete('DELETE FROM notes'); |
||
| 69 | DB::connection('tenant')->delete('DELETE FROM messages'); |
||
| 70 | DB::connection('tenant')->delete('DELETE FROM activities'); |
||
| 71 | DB::connection('tenant')->delete('DELETE FROM form_fields'); |
||
| 72 | DB::connection('tenant')->delete('DELETE FROM predefined_messages'); |
||
| 73 | DB::connection('tenant')->delete('DELETE FROM stages'); |
||
| 74 | DB::connection('tenant')->delete('DELETE FROM recruitments'); |
||
| 75 | DB::connection('tenant')->delete('DELETE FROM candidates'); |
||
| 76 | DB::connection('tenant')->delete('DELETE FROM user_invitations'); |
||
| 77 | DB::connection('tenant')->delete('DELETE FROM users'); |
||
| 78 | |||
| 79 | DB::connection()->delete('DELETE FROM tenant_users WHERE tenant_id='.$tenant->id); |
||
| 80 | |||
| 81 | DB::connection('tenant')->statement('ALTER TABLE sources AUTO_INCREMENT = 1;'); |
||
| 82 | DB::connection('tenant')->statement('ALTER TABLE notes AUTO_INCREMENT = 1;'); |
||
| 83 | DB::connection('tenant')->statement('ALTER TABLE messages AUTO_INCREMENT = 1;'); |
||
| 84 | DB::connection('tenant')->statement('ALTER TABLE activities AUTO_INCREMENT = 1;'); |
||
| 85 | DB::connection('tenant')->statement('ALTER TABLE form_fields AUTO_INCREMENT = 1;'); |
||
| 86 | DB::connection('tenant')->statement('ALTER TABLE predefined_messages AUTO_INCREMENT = 1;'); |
||
| 87 | DB::connection('tenant')->statement('ALTER TABLE stages AUTO_INCREMENT = 1;'); |
||
| 88 | DB::connection('tenant')->statement('ALTER TABLE recruitments AUTO_INCREMENT = 1;'); |
||
| 89 | DB::connection('tenant')->statement('ALTER TABLE candidates AUTO_INCREMENT = 1;'); |
||
| 90 | DB::connection('tenant')->statement('ALTER TABLE user_invitations AUTO_INCREMENT = 1;'); |
||
| 91 | DB::connection('tenant')->statement('ALTER TABLE users AUTO_INCREMENT = 1;'); |
||
| 92 | |||
| 93 | $users = DB::connection('legacy')->select('SELECT * FROM users'); |
||
| 94 | foreach ($users as $user) { |
||
| 95 | $email = str_replace('.pl', '.com', $user->email); |
||
| 96 | DB::connection('tenant')->insert( |
||
| 97 | 'INSERT INTO users (id, created_at, updated_at, `name`, email, `password`) |
||
| 98 | VALUES (?, ?, ?, ?, ?, ?)', |
||
| 99 | [ |
||
| 100 | $user->id, |
||
| 101 | $user->created_at, |
||
| 102 | $user->updated_at, |
||
| 103 | $user->name, |
||
| 104 | $email, |
||
| 105 | $user->password, |
||
| 106 | ] |
||
| 107 | ); |
||
| 108 | |||
| 109 | DB::connection('')->insert( |
||
| 110 | 'INSERT INTO tenant_users (created_at, updated_at, `username`, tenant_id) |
||
| 111 | VALUES (?, ?, ?, ?)', |
||
| 112 | [ |
||
| 113 | $user->created_at, |
||
| 114 | $user->updated_at, |
||
| 115 | $email, |
||
| 116 | $tenantId, |
||
| 117 | ] |
||
| 118 | ); |
||
| 119 | } |
||
| 120 | |||
| 121 | $stages = json_decode('[ |
||
| 122 | { |
||
| 123 | "order": 1, |
||
| 124 | "name": "Nowy", |
||
| 125 | "action_name": "Zmień etap", |
||
| 126 | "has_appointment": false, |
||
| 127 | "is_quick_link": false |
||
| 128 | }, |
||
| 129 | { |
||
| 130 | "order": 2, |
||
| 131 | "name": "Rozmowa telefoniczna", |
||
| 132 | "action_name": "Zmień etap", |
||
| 133 | "has_appointment": true, |
||
| 134 | "is_quick_link": true |
||
| 135 | }, |
||
| 136 | { |
||
| 137 | "order": 3, |
||
| 138 | "name": "Spotkanie", |
||
| 139 | "action_name": "Zmień etap", |
||
| 140 | "has_appointment": true, |
||
| 141 | "is_quick_link": false |
||
| 142 | }, |
||
| 143 | { |
||
| 144 | "order": 4, |
||
| 145 | "name": "Złożenie oferty", |
||
| 146 | "action_name": "Zmień etap", |
||
| 147 | "has_appointment": false, |
||
| 148 | "is_quick_link": false |
||
| 149 | }, |
||
| 150 | { |
||
| 151 | "order": 5, |
||
| 152 | "name": "Zatrudnienie", |
||
| 153 | "action_name": "Zmień etap", |
||
| 154 | "has_appointment": false, |
||
| 155 | "is_quick_link": false |
||
| 156 | }, |
||
| 157 | { |
||
| 158 | "order": 6, |
||
| 159 | "name": "Odrzucenie", |
||
| 160 | "action_name": "Odrzuć", |
||
| 161 | "has_appointment": false, |
||
| 162 | "is_quick_link": true |
||
| 163 | } |
||
| 164 | ]'); |
||
| 165 | |||
| 166 | $stageId = 1; |
||
| 167 | $stageMap = []; |
||
| 168 | $recruitments = DB::connection('legacy')->select('SELECT * FROM recruitments'); |
||
| 169 | foreach ($recruitments as $recruitment) { |
||
| 170 | DB::connection('tenant')->insert( |
||
| 171 | 'INSERT INTO recruitments (id, created_at, updated_at, name, job_title, notification_email, is_draft, state) |
||
| 172 | VALUES (?, ?, ?, ?, ?, ?, 0, ?)', |
||
| 173 | [ |
||
| 174 | $recruitment->id, |
||
| 175 | $recruitment->created_at, |
||
| 176 | $recruitment->updated_at, |
||
| 177 | $recruitment->name, |
||
| 178 | $recruitment->name, |
||
| 179 | $recruitment->notification_email, |
||
| 180 | $recruitment->state == 0 ? 0 : 2, |
||
| 181 | ] |
||
| 182 | ); |
||
| 183 | |||
| 184 | foreach ($stages as $stage) { |
||
| 185 | DB::connection('tenant')->insert( |
||
| 186 | 'INSERT INTO stages (id, created_at, updated_at, recruitment_id, name, |
||
| 187 | has_appointment, is_quick_link, `order`, action_name) |
||
| 188 | VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', |
||
| 189 | [ |
||
| 190 | $stageId, |
||
| 191 | new \DateTime(), |
||
| 192 | new \DateTime(), |
||
| 193 | $recruitment->id, |
||
| 194 | $stage->name, |
||
| 195 | $stage->has_appointment, |
||
| 196 | $stage->is_quick_link, |
||
| 197 | $stage->order, |
||
| 198 | $stage->action_name, |
||
| 199 | ] |
||
| 200 | ); |
||
| 201 | |||
| 202 | $stageMap[$recruitment->id][$stage->name] = $stageId; |
||
| 203 | |||
| 204 | $stageId++; |
||
| 205 | } |
||
| 206 | |||
| 207 | $fields = json_decode(file_get_contents(base_path().'/database/seeds/form_fields.json'), true); |
||
| 208 | $now = \Carbon\Carbon::now()->toDateTimeString(); |
||
| 209 | |||
| 210 | foreach ($fields as $field) { |
||
| 211 | DB::connection('tenant')->table('form_fields')->insert([ |
||
| 212 | 'name' => $field['name'], |
||
| 213 | 'label' => $field['label'], |
||
| 214 | 'system' => $field['system'], |
||
| 215 | 'type' => $field['type'], |
||
| 216 | 'required' => $field['required'], |
||
| 217 | 'order' => $field['order'], |
||
| 218 | 'recruitment_id' => $recruitment->id, |
||
| 219 | 'created_at' => $now, |
||
| 220 | 'updated_at' => $now, |
||
| 221 | ]); |
||
| 222 | } |
||
| 223 | |||
| 224 | $messages = json_decode(file_get_contents(base_path().'/database/seeds/predefined_messages.json'), true); |
||
| 225 | |||
| 226 | foreach ($messages as $message) { |
||
| 227 | $from_stage_id = null; |
||
| 228 | $to_stage_id = null; |
||
| 229 | |||
| 230 | if ($message['from_stage'] !== null) { |
||
| 231 | $from_stage_id = DB::connection('tenant')->table('stages') |
||
| 232 | ->where('recruitment_id', $recruitment->id) |
||
| 233 | ->where('order', $message['from_stage'])->select('id')->value('id'); |
||
| 234 | } |
||
| 235 | |||
| 236 | if ($message['to_stage'] !== null) { |
||
| 237 | $to_stage_id = DB::connection('tenant')->table('stages') |
||
| 238 | ->where('recruitment_id', $recruitment->id) |
||
| 239 | ->where('order', $message['to_stage'])->select('id')->value('id'); |
||
| 240 | } |
||
| 241 | |||
| 242 | DB::connection('tenant')->table('predefined_messages')->insert([ |
||
| 243 | 'subject' => $message['subject'], |
||
| 244 | 'body' => $message['body'], |
||
| 245 | 'trigger' => $message['trigger'], |
||
| 246 | 'from_stage_id' => $from_stage_id, |
||
| 247 | 'to_stage_id' => $to_stage_id, |
||
| 248 | 'recruitment_id' => $recruitment->id, |
||
| 249 | 'created_at' => $now, |
||
| 250 | 'updated_at' => $now, |
||
| 251 | ]); |
||
| 252 | } |
||
| 253 | } |
||
| 254 | |||
| 255 | $sources = DB::connection('legacy')->select('SELECT * FROM sources'); |
||
| 256 | foreach ($sources as $source) { |
||
| 257 | DB::connection('tenant')->insert( |
||
| 258 | 'INSERT INTO sources (id, created_at, updated_at, `name`, recruitment_id, `key`) |
||
| 259 | VALUES (?, ?, ?, ?, ?, ?)', |
||
| 260 | [ |
||
| 261 | $source->id, |
||
| 262 | $source->created_at, |
||
| 263 | $source->updated_at, |
||
| 264 | $source->name, |
||
| 265 | $source->recruitment_id, |
||
| 266 | $source->key, |
||
| 267 | ] |
||
| 268 | ); |
||
| 269 | } |
||
| 270 | |||
| 271 | $candidates = DB::connection('legacy')->select('SELECT * FROM candidates'); |
||
| 272 | foreach ($candidates as $candidate) { |
||
| 273 | $customFields = '[{"id": 0, "label": "Informacje dodatkowe", "value": '.json_encode($candidate->additional_info).'}]'; |
||
| 274 | $seenAt = $candidate->stage_id != 1 ? $candidate->created_at : null; |
||
| 275 | |||
| 276 | $pathToCV = 'kissdigital/'.$candidate->path_to_cv; |
||
| 277 | |||
| 278 | $stageId = 0; |
||
| 279 | |||
| 280 | switch ($candidate->stage_id) { |
||
| 281 | case 1: |
||
| 282 | case 2: |
||
| 283 | $stageId = $stageMap[$candidate->recruitment_id]['Nowy']; |
||
| 284 | break; |
||
| 285 | case 3: |
||
| 286 | //rozmowa tel |
||
| 287 | $stageId = $stageMap[$candidate->recruitment_id]['Rozmowa telefoniczna']; |
||
| 288 | break; |
||
| 289 | case 4: |
||
| 290 | //spotkanie |
||
| 291 | $stageId = $stageMap[$candidate->recruitment_id]['Spotkanie']; |
||
| 292 | break; |
||
| 293 | case 5: |
||
| 294 | case 6: |
||
| 295 | case 7: |
||
| 296 | case 10: |
||
| 297 | //odrzucenie |
||
| 298 | $stageId = $stageMap[$candidate->recruitment_id]['Odrzucenie']; |
||
| 299 | break; |
||
| 300 | case 8: |
||
| 301 | //Złożenie oferty |
||
| 302 | $stageId = $stageMap[$candidate->recruitment_id]['Złożenie oferty']; |
||
| 303 | break; |
||
| 304 | case 9: |
||
| 305 | //Zatrudnienie |
||
| 306 | $stageId = $stageMap[$candidate->recruitment_id]['Zatrudnienie']; |
||
| 307 | break; |
||
| 308 | } |
||
| 309 | |||
| 310 | $photoPath = str_replace('.pdf', '_avatar.jpg', $candidate->path_to_cv); |
||
| 311 | $photoExtraction = \Carbon\Carbon::now()->toDateTimeString(); |
||
| 312 | |||
| 313 | if (Storage::disk('s3')->missing($photoPath)) { |
||
| 314 | $photoPath = null; |
||
| 315 | $photoExtraction = null; |
||
| 316 | } |
||
| 317 | |||
| 318 | DB::connection('tenant')->insert( |
||
| 319 | 'INSERT INTO candidates (id, created_at, updated_at, `name`, email, |
||
| 320 | `phone_number`, future_agreement, path_to_cv, source_id, recruitment_id, seen_at, stage_id, rate, custom_fields, photo_path, photo_extraction) |
||
| 321 | VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', |
||
| 322 | [ |
||
| 323 | $candidate->id, |
||
| 324 | $candidate->created_at, |
||
| 325 | $candidate->updated_at, |
||
| 326 | $candidate->first_name.' '.$candidate->last_name, |
||
| 327 | $candidate->email, |
||
| 328 | $candidate->phone_number, |
||
| 329 | $candidate->future_agreement, |
||
| 330 | $pathToCV, |
||
| 331 | $candidate->source_id, |
||
| 332 | $candidate->recruitment_id, |
||
| 333 | $seenAt, |
||
| 334 | $stageId, |
||
| 335 | $candidate->rate, |
||
| 336 | $customFields, |
||
| 337 | $photoPath, |
||
| 338 | $photoExtraction, |
||
| 339 | ] |
||
| 340 | ); |
||
| 341 | } |
||
| 342 | |||
| 343 | $notes = DB::connection('legacy')->select('SELECT * FROM notes'); |
||
| 344 | foreach ($notes as $note) { |
||
| 345 | DB::connection('tenant')->insert( |
||
| 346 | 'INSERT INTO notes (id, created_at, updated_at, `body`, candidate_id, `user_id`) |
||
| 347 | VALUES (?, ?, ?, ?, ?, ?)', |
||
| 348 | [ |
||
| 349 | $note->id, |
||
| 350 | $note->created_at, |
||
| 351 | $note->updated_at, |
||
| 352 | $note->body, |
||
| 353 | $note->candidate_id, |
||
| 354 | $note->user_id ? $note->user_id : 2, |
||
| 355 | ] |
||
| 356 | ); |
||
| 357 | } |
||
| 358 | foreach ($candidates as $candidate) { |
||
| 359 | if ($candidate->stage_id == 10) { |
||
| 360 | DB::connection('tenant')->insert( |
||
| 361 | 'INSERT INTO notes (created_at, updated_at, `body`, candidate_id, `user_id`) |
||
| 362 | VALUES (?, ?, ?, ?, ?)', |
||
| 363 | [ |
||
| 364 | new \DateTime(), |
||
| 365 | new \DateTime(), |
||
| 366 | 'Kandydat zrezygnował w trakcie rekrutacji', |
||
| 367 | $candidate->id, |
||
| 368 | 2, |
||
| 369 | ] |
||
| 370 | ); |
||
| 371 | } |
||
| 372 | } |
||
| 373 | |||
| 374 | $messages = DB::connection('legacy')->select('SELECT * FROM messages'); |
||
| 375 | foreach ($messages as $message) { |
||
| 376 | $candidate = DB::connection('tenant')->select('SELECT * FROM candidates WHERE `id`='.$message->candidate_id); |
||
| 377 | DB::connection('tenant')->insert( |
||
| 378 | 'INSERT INTO messages (id, created_at, updated_at, `type`, candidate_id, |
||
| 379 | `subject`, `body`, `scheduled_for`, `sent_at`, `to`) |
||
| 380 | VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', |
||
| 381 | [ |
||
| 382 | $message->id, |
||
| 383 | $message->created_at, |
||
| 384 | $message->updated_at, |
||
| 385 | $message->type, |
||
| 386 | $message->candidate_id, |
||
| 387 | $message->subject, |
||
| 388 | $message->body, |
||
| 389 | $message->scheduled_at, |
||
| 390 | $message->created_at, |
||
| 391 | $candidate[0]->email, |
||
| 392 | ] |
||
| 393 | ); |
||
| 394 | } |
||
| 395 | |||
| 396 | $this->info('Legacy data have been imported for tenant with subdomain \''.$tenant->subdomain.'\'.'); |
||
| 397 | } |
||
| 399 |