RegisterRequest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
c 1
b 0
f 0
dl 0
loc 57
ccs 22
cts 22
cp 1
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A attributes() 0 10 1
A register() 0 17 1
A rules() 0 9 1
1
<?php
2
3
namespace App\Http\Requests\Auth;
4
5
use App\Models\Company;
6
use App\Models\User;
7
use Illuminate\Foundation\Http\FormRequest;
8
use Illuminate\Validation\Rules;
9
10
class RegisterRequest extends FormRequest
11
{
12
    /**
13
     * Get the validation rules that apply to the request.
14
     *
15
     * @return array
16
     */
17 1
    public function rules()
18
    {
19
        return [
20 1
            'company_name' => ['required', 'string', 'max:255'],
21
22 1
            'username' => ['required', 'string', 'max:255', new Rules\Unique(User::class)],
23
            'name' => ['required', 'string', 'max:255'],
24 1
            'email' => ['required', 'string', 'email', 'max:255', new Rules\Unique(User::class)],
25 1
            'password' => ['required', 'confirmed', Rules\Password::defaults()],
26
        ];
27
    }
28
29
    /**
30
     * {@inheritDoc}
31
     */
32 1
    public function attributes()
33
    {
34
        return [
35 1
            'company_name' => trans('Company Name'),
36
37 1
            'username' => trans('Username'),
38 1
            'name' => trans('Name'),
39 1
            'email' => trans('Email Address'),
40 1
            'password' => trans('Password'),
41 1
            'agree_with_terms' => trans('Terms of Service'),
42
        ];
43
    }
44
45
    /**
46
     * Register user based on the given request.
47
     *
48
     * @return \App\Models\User
49
     */
50 1
    public function register(): User
51
    {
52 1
        $company = Company::create([
53 1
            'name' => $this->input('company_name'),
54
        ]);
55
56
        /** @var \App\Models\User $user */
57 1
        $user = User::make([
58 1
            'username' => $this->input('username'),
59 1
            'name' => $this->input('name'),
60 1
            'email' => $this->input('email'),
61 1
            'password' => $this->input('password'),
62
        ]);
63
64 1
        $user->setCompanyRelationValue($company)->save();
65
66 1
        return $user->fresh();
67
    }
68
}
69