IsoCodesValidationServiceProvider::boot()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 18
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 8
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 18
rs 10
1
<?php
2
3
namespace Pixelpeter\IsoCodesValidation;
4
5
use Illuminate\Support\ServiceProvider;
6
use Illuminate\Support\Str;
7
8
class IsoCodesValidationServiceProvider extends ServiceProvider
9
{
10
    /**
11
     * Bootstrap the application services.
12
     *
13
     * @return void
14
     */
15
    public function boot()
16
    {
17
        // load translation files
18
        $this->loadTranslationsFrom(
19
            __DIR__ . '/../lang',
20
            'validation'
21
        );
22
23
        // registering intervention validator extension
24
        $this->app['validator']->resolver(function ($translator, $data, $rules, $messages, $customAttributes) {
25
            // set the validation error messages
26
            foreach (get_class_methods('Pixelpeter\IsoCodesValidation\IsoCodesValidator') as $method) {
27
                $key = $this->getTranslationKeyFromMethodName($method);
28
29
                $messages[$key] = $this->getErrorMessage($translator, $messages, $key);
30
            }
31
32
            return new IsoCodesValidator($translator, $data, $rules, $messages, $customAttributes);
33
        });
34
    }
35
36
    /**
37
     * Return translation key for correspondent method name
38
     *
39
     * @param  string $name
40
     * @return string
41
     */
42
    private function getTranslationKeyFromMethodName($name)
43
    {
44
        if (stripos($name, 'validate') !== false) {
45
            return Str::snake(substr($name, 8));
46
        }
47
48
    }
49
50
    /**
51
     * Return the matching error message for the key
52
     *
53
     * @param  string $key
54
     * @return string
55
     */
56
    private function getErrorMessage($translator, $messages, $key)
57
    {
58
        // return error messages passed directly to the validator
59
        if (isset($messages[$key])) {
60
            return $messages[$key];
61
        }
62
63
        // return error message from validation translation file
64
        if ($translator->has("validation.{$key}")) {
65
            return $translator->get("validation.{$key}");
66
        }
67
68
        // return packages default message
69
        return $translator->get("validation::validation.{$key}");
70
    }
71
72
    /**
73
     * Register the application services.
74
     *
75
     * @return void
76
     */
77
    public function register()
78
    {
79
        //
80
    }
81
}
82