DownloadMyriadTitles::defaultCollectionFormat()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
ccs 7
cts 7
cp 1
crap 1
rs 10
1
<?php
2
3
namespace MyriadDataStore\Actions;
4
5
use Illuminate\Support\Str;
6
use MyriadDataStore\Models\MyriadTitle;
7
use MyriadSoap\Exceptions\UnexpectedTypeException;
8
use MyriadSoap\MyriadSoap;
9
10
class DownloadMyriadTitles
11
{
12
    use UsesCollectionFormat;
13
14
    public static ?array $collectionFormat = null;
15
16 1
    protected function defaultCollectionFormat(): array
17
    {
18 1
        return [
19 1
            'Title_ID'         => fn ($i) => (int) tap($i, fn () => throw_if(!is_numeric($i), UnexpectedTypeException::class)),
20 1
            'Title'            => fn ($i) => (string) $i,
21 1
            'ProductType_ID'   => fn ($i) => (int) tap($i, fn () => throw_if(!is_numeric($i), UnexpectedTypeException::class)),
22 1
            'Current_Issue_ID' => fn ($i) => (int) tap($i, fn () => throw_if(!is_numeric($i), UnexpectedTypeException::class)),
23 1
            'Active'           => fn ($i) => $i == 'Yes',
24 1
        ];
25
    }
26
27 1
    public function execute(): int
28
    {
29 1
        $formattedCollection = MyriadSoap::SOAP_getTitles_Collection([], $this->collectionFormat());
30
31 1
        $count = 0;
32 1
        foreach ($formattedCollection as $item) {
33 1
            $myriadModel = MyriadTitle::find($item['Title_ID']);
34 1
            if (!$myriadModel) {
35 1
                $myriadModel     = new MyriadTitle;
36 1
                $myriadModel->id = $item['Title_ID'];
37
            }
38 1
            $myriadModel->title            = Str::limit($item['Title'], 252);
0 ignored issues
show
Bug introduced by
The property title does not seem to exist on MyriadDataStore\Models\MyriadTitle. Are you sure there is no database migration missing?

Checks if undeclared accessed properties appear in database migrations and if the creating migration is correct.

Loading history...
39 1
            $myriadModel->product_type_id  = $item['ProductType_ID'];
0 ignored issues
show
Bug introduced by
The property product_type_id does not exist on MyriadDataStore\Models\MyriadTitle. Did you mean productType?
Loading history...
40 1
            $myriadModel->current_issue_id = $item['Current_Issue_ID'];
0 ignored issues
show
Bug introduced by
The property current_issue_id does not exist on MyriadDataStore\Models\MyriadTitle. Did you mean currentIssue?
Loading history...
41 1
            $myriadModel->active           = $item['Active'];
0 ignored issues
show
Bug introduced by
The property active does not seem to exist on MyriadDataStore\Models\MyriadTitle. Are you sure there is no database migration missing?

Checks if undeclared accessed properties appear in database migrations and if the creating migration is correct.

Loading history...
42 1
            $myriadModel->save();
43 1
            $count++;
44
        }
45
46 1
        return $count;
47
    }
48
}
49