RegisterRequest::register()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 9
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 17
ccs 10
cts 10
cp 1
crap 1
rs 9.9666
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