BookingsPullCommand::handle()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
cc 5
eloc 17
nc 4
nop 0
dl 0
loc 25
ccs 0
cts 18
cp 0
crap 30
rs 9.3888
c 0
b 0
f 0
1
<?php
2
3
namespace IproSync\Console\Commands;
4
5
use Illuminate\Console\Command;
6
use IproSync\Console\Commands\Traits\HasRequestParams;
7
use IproSync\Jobs\Bookings\BookingsPull;
8
use IproSync\Models\Property;
9
10
class BookingsPullCommand extends Command
11
{
12
    use HasRequestParams;
13
14
    protected $signature = 'iprosoftware-sync:bookings:pull
15
     {--id= : Pull booking by ipro id.}
16
     {--property_id= : Pull bookings by ipro property id.}
17
     {--existing_properties : Pull based on all existing properties.}
18
     {--request_params= : Send query params (url encoded).}
19
     {--queue= : Queue to dispatch job.}
20
    ';
21
22
    protected $description = 'Pull ipro bookings';
23
24
    public function handle(): int
25
    {
26
        $requestParams = $this->getRequestParams();
27
28
        if ($id = $this->option('id')) {
29
            BookingsPull::dispatch(null, array_merge($requestParams, ['bookingID' => $id]))
30
                ->onQueue($this->option('queue'));
31
        } elseif ($id = $this->option('property_id')) {
32
            BookingsPull::dispatch(null, array_merge($requestParams, ['propertyids' => $id]))
33
                ->onQueue($this->option('queue'));
34
        } elseif ($this->option('existing_properties')) {
35
            Property::query()
36
                ->chunk(100, function ($properties) use ($requestParams) {
37
                    /** @var Property $property */
38
                    foreach ($properties as $property) {
39
                        BookingsPull::dispatch(null, array_merge($requestParams, ['propertyids' => $property->getKey()]))
40
                            ->onQueue($this->option('queue'));
41
                    }
42
                });
43
        } else {
44
            BookingsPull::dispatch(null, $requestParams)
45
                ->onQueue($this->option('queue'));
46
        }
47
48
        return 0;
49
    }
50
}
51