UserForm::buildForm()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 49
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 27
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 32
dl 0
loc 49
ccs 27
cts 27
cp 1
rs 9.408
c 0
b 0
f 0
cc 2
nc 2
nop 0
crap 2
1
<?php namespace Distilleries\Expendable\Http\Forms\User;
2
3
use Distilleries\Expendable\Helpers\StaticLabel;
4
use Distilleries\Expendable\Models\Role;
5
use Distilleries\FormBuilder\FormValidator;
6
7
class UserForm extends FormValidator {
8
9
    public static $rules = [
10
        'email'    => 'required|email|unique:users',
11
        'password' => 'required|min:8',
12
        'status'   => 'required|integer',
13
        'role_id'  => 'required|integer',
14
    ];
15
16
    public static $rules_update = [
17
        'id'      => 'required',
18
        'email'   => 'required|email|unique:users,email',
19
        'status'  => 'required|integer',
20
        'role_id' => 'required|integer',
21
    ];
22
23
    // ------------------------------------------------------------------------------------------------
24
25
26 12
    public function buildForm()
27
    {
28
29
        $this
30 12
            ->add($this->model->getKeyName(), 'hidden')
31 12
            ->add('email', 'email',
32
                [
33 12
                    'label'      => trans('expendable::form.email'),
34 12
                    'validation' => 'required,custom[email]',
35
                ]);
36
37 12
        $id = $this->model->getKey();
38
39 12
        if (!empty($id))
40
        {
41 8
            $this->add('change_password', 'checkbox', [
42 8
                'default_value' => 1,
43 8
                'label'         => trans('expendable::form.change_password_help'),
44
                'checked'       => false,
45
                'noInEditView'  => true
46
            ]);
47
        }
48
49 12
        $this->add('password', 'password',
50
            [
51 12
                'label'        => trans('expendable::form.password'),
52
                'attr'         => ['id' => 'password'],
53 12
                'validation'   => 'required',
54
                'noInEditView' => true
55
            ])
56 12
            ->add('password_match', 'password',
57
                [
58 12
                    'label'        => trans('expendable::form.repeat_password'),
59 12
                    'validation'   => 'required,equals[password]',
60
                    'noInEditView' => true
61
                ])
62 12
            ->add('status', 'choice', [
63 12
                'choices'     => StaticLabel::status(),
64 12
                'empty_value' => '-',
65 12
                'validation'  => 'required',
66 12
                'label'       => trans('expendable::form.status')
67
            ])
68 12
            ->add('role_id', 'choice', [
69 12
                'choices'     => Role::getChoice(),
70 12
                'empty_value' => '-',
71 12
                'validation'  => 'required',
72 12
                'label'       => trans('expendable::form.role')
73
            ])
74 12
            ->addDefaultActions();
75
    }
76
77 6
    protected function getUpdateRules()
78
    {
79 6
        $key                           = \Request::get($this->model->getKeyName());
80 6
        static::$rules_update['email'] = 'required|email|unique:users,email,'.$key;
81
82 6
        return parent::getUpdateRules();
83
    }
84
}