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

StoreRequest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 14
c 1
b 0
f 0
dl 0
loc 26
ccs 6
cts 6
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A getRules() 0 21 2
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\User;
10
11
class StoreRequest extends AbstractRequest
12
{
13
    /**
14
     * {@inheritDoc}
15
     */
16 1
    public static function getRules()
17
    {
18 1
        $rules = [
19
            'customer_id' => 'required|exists:' . Customer::class . ',id',
20
            'user_id' => 'sometimes|nullable|exists:' . User::class . ',id',
21
            'branch_id' => 'sometimes|nullable|exists:' . Branch::class . ',id',
22
            'schedule_date' => 'sometimes|nullable|date|after_or_equal:today',
23
            'order_status.status' => 'required|enum:' . OrderStatus::class,
24
            'order_status.note' => 'sometimes|nullable|string|max:255',
25
            'items' => 'required|array',
26
            'items.*.denomination_id' => 'required|distinct|exists:' . Denomination::class . ',id',
27
        ];
28
29 1
        foreach (request()->input('items', []) as $index => $item) {
30
            /** @var \App\Models\Denomination $denomination */
31 1
            $denomination = Denomination::findOrFail($item['denomination_id'] ?? null);
32
33 1
            $rules['items.' . $index . '.bundle_quantity'] = 'required|numeric|between:' . $denomination->minimum_order_bundle . ',' . $denomination->maximum_order_bundle;
34
        }
35
36 1
        return $rules;
37
    }
38
}
39