Issues (38)

src/Jobs/Settings/LocationsPull.php (1 issue)

Severity
1
<?php
2
3
namespace IproSync\Jobs\Settings;
4
5
use Illuminate\Bus\Queueable;
6
use Illuminate\Contracts\Queue\ShouldQueue;
7
use Illuminate\Foundation\Bus\Dispatchable;
8
use Illuminate\Queue\InteractsWithQueue;
9
use Illuminate\Queue\SerializesModels;
10
use IproSync\Models\Location;
11
use LaravelIproSoftwareApi\IproSoftwareFacade;
12
13
class LocationsPull implements ShouldQueue
14
{
15
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
0 ignored issues
show
The trait Illuminate\Queue\SerializesModels requires some properties which are not provided by IproSync\Jobs\Settings\LocationsPull: $collectionClass, $id, $relations, $class, $keyBy
Loading history...
16
17
    public function handle()
18
    {
19
        $response = IproSoftwareFacade::getLocationsList()->onlySuccessful();
20
21
        $groups = $response->json();
22
        if (is_array($groups) && !empty($groups)) {
23
            foreach ($groups as $items) {
24
                foreach ($items['Children'] ?? [] as $item) {
25
                    if (!isset($item['Id'])) {
26
                        continue;
27
                    }
28
                    Location::firstOrNew(['id' => $item['Id']], )
29
                            ->fill([
30
                                'name'     => $item['Name'],
31
                                'type_id'  => $items['Id'],
32
                                'type'     => $items['Name'],
33
                                'children' => $item['Children'] ?? [],
34
                            ])
35
                            ->fillPulled()
36
                            ->save();
37
                }
38
            }
39
        }
40
    }
41
}
42