Passed
Push — main ( 0be37e...fc9941 )
by Thierry
06:01
created

SavingValidator::validateOptions()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 7
nc 2
nop 1
dl 0
loc 13
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Siak\Tontine\Validation\Meeting;
4
5
use Illuminate\Support\Facades\Validator;
6
use Siak\Tontine\Service\LocaleService;
7
use Siak\Tontine\Validation\AbstractValidator;
8
use Siak\Tontine\Validation\Traits\ValidationTrait;
9
use Siak\Tontine\Validation\ValidationException;
10
11
class SavingValidator extends AbstractValidator
12
{
13
    use ValidationTrait;
14
15
    /**
16
     * @param LocaleService $localeService
17
     */
18
    public function __construct(private LocaleService $localeService)
19
    {}
20
21
    /**
22
     * @return array<string>
23
     */
24
    protected function amountFields(): array
25
    {
26
        return ['amount'];
27
    }
28
29
    /**
30
     * @param array $values
31
     *
32
     * @return array
33
     */
34
    public function validateItem(array $values): array
35
    {
36
        $validator = Validator::make($this->values($values), [
37
            'member' => 'required|integer|min:1',
38
            'amount' => $this->amountRule(),
39
            'fund' => 'required|integer|min:0',
40
        ]);
41
        if($validator->fails())
42
        {
43
            throw new ValidationException($validator);
44
        }
45
46
        $validated = $validator->validated();
47
        $validated['amount'] = $this->localeService->convertMoneyToInt((float)$validated['amount']);
48
        return $validated;
49
    }
50
51
    /**
52
     * @param array $values
53
     *
54
     * @return array
55
     */
56
    public function validateOptions(array $values): array
57
    {
58
        $validator = Validator::make($this->values($values), [
59
            'amount' => $this->amountRule(),
60
        ]);
61
        if($validator->fails())
62
        {
63
            throw new ValidationException($validator);
64
        }
65
66
        $validated = $validator->validated();
67
        $validated['amount'] = $this->localeService->convertMoneyToInt((float)$validated['amount']);
68
        return $validated;
69
    }
70
}
71