Passed
Push — develop ( 9324e6...f3eb57 )
by Septianata
04:31
created

UpdateRequest::getRules()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 21
ccs 0
cts 7
cp 0
rs 9.8333
cc 2
nc 2
nop 0
crap 6
1
<?php
2
3
namespace App\Http\Requests\Order;
4
5
use App\Enum\OrderStatus;
6
use App\Models\Branch;
7
use App\Models\Customer;
8
use App\Models\Denomination;
9
use App\Models\Order;
10
use App\Models\User;
11
use Illuminate\Support\Facades\Validator;
12
use Illuminate\Validation\Rule;
13
14
class UpdateRequest extends AbstractRequest
15
{
16
    /**
17
     * {@inheritDoc}
18
     */
19
    public static function getRules()
20
    {
21
        $rules = [
22
            'customer_id' => 'required|exists:' . Customer::class . ',id',
23
            'user_id' => 'sometimes|nullable|exists:' . User::class . ',id',
24
            'branch_id' => 'sometimes|nullable|exists:' . Branch::class . ',id',
25
            'schedule_date' => 'sometimes|nullable|date|after_or_equal:today',
26
            'order_status.status' => 'sometimes|nullable|enum:' . OrderStatus::class,
27
            'order_status.note' => 'sometimes|nullable|string|max:255',
28
            'items' => 'sometimes|nullable|array',
29
        ];
30
31
        foreach (request()->input('items', []) as $index => $item) {
32
            /** @var \App\Models\Denomination $denomination */
33
            $denomination = Denomination::findOrFail($item['denomination_id'] ?? null);
34
35
            $rules['items.' . $index . '.denomination_id'] = 'required|distinct|exists:' . Denomination::class . ',id';
36
            $rules['items.' . $index . '.bundle_quantity'] = 'required|numeric|between:' . $denomination->minimum_order_bundle . ',' . $denomination->maximum_order_bundle;
37
        }
38
39
        return $rules;
40
    }
41
}
42