Validator   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 37
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A validateUniqueWith() 0 19 1
A replaceUniqueWith() 0 14 2
1
<?php namespace Felixkiss\UniqueWithValidator;
2
3
use Illuminate\Support\Arr;
4
use Illuminate\Support\Str;
5
6
class Validator
7
{
8
    public function validateUniqueWith($attribute, $value, $parameters, $validator)
9
    {
10
        $ruleParser = new RuleParser($attribute, $value, $parameters, $validator->getData());
11
12
        // The presence verifier is responsible for counting rows within this
13
        // store mechanism which might be a relational database or any other
14
        // permanent data store like Redis, etc. We will use it to determine
15
        // uniqueness.
16
        $presenceVerifier = $validator->getPresenceVerifier();
17
18
        return $presenceVerifier->getCount(
19
            $ruleParser->getTable(),
20
            $ruleParser->getPrimaryField(),
21
            $ruleParser->getPrimaryValue(),
22
            $ruleParser->getIgnoreValue(),
23
            $ruleParser->getIgnoreColumn(),
24
            $ruleParser->getAdditionalFields()
25
        ) == 0;
26
    }
27
28
    public function replaceUniqueWith($message, $attribute, $rule, $parameters, $translator)
29
    {
30
        $ruleParser = new RuleParser($attribute, null, $parameters);
31
        $fields = $ruleParser->getDataFields();
32
33
        $customAttributes = $translator->trans('validation.attributes');
34
35
        // Check if translator has custom validation attributes for the fields
36
        $fields = array_map(function($field) use ($customAttributes) {
37
            return Arr::get($customAttributes, $field) ?: str_replace('_', ' ', Str::snake($field));
38
        }, $fields);
39
40
        return str_replace(':fields', implode(', ', $fields), $message);
41
    }
42
}
43