Passed
Push — master ( d3a894...a569b2 )
by Christian
04:02
created

CreateUser::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 16
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 25
ccs 17
cts 17
cp 1
crap 1
rs 9.7333
1
<?php
2
3
namespace Omatech\Mage\Core\Repositories\Users;
4
5
use Illuminate\Support\Facades\DB;
6
use Omatech\Mage\Core\Domains\Users\Contracts\CreateUserInterface;
7
use Omatech\Mage\Core\Domains\Users\Contracts\UserInterface;
8
use Omatech\Mage\Core\Events\Users\UserCreated;
9
use Omatech\Mage\Core\Repositories\UserBaseRepository;
10
11
class CreateUser extends UserBaseRepository implements CreateUserInterface
12
{
13 20
    public function create(UserInterface $user): bool
14
    {
15
        $wasRecentlyCreated = DB::transaction(function () use ($user) {
16 20
            $created = $this->query()->create([
17 20
                'name'              => $user->getName(),
18 20
                'language'          => $user->getLanguage(),
19 20
                'email'             => $user->getEmail(),
20 20
                'email_verified_at' => $user->getEmailVerifiedAt(),
21 20
                'password'          => $user->getPassword(),
22 20
                'remember_token'    => $user->getRememberToken(),
23
            ]);
24
25 20
            $user->setId($created->id);
26 20
            $user->setCreatedAt($created->created_at);
27 20
            $user->setUpdatedAt($created->updated_at);
28
29 20
            $this->syncPermissions($created, $user);
30 20
            $this->syncRoles($created, $user);
31
32 20
            return $created->wasRecentlyCreated;
33 20
        });
34
35 20
        event(new UserCreated($user, $wasRecentlyCreated));
36
37 20
        return $wasRecentlyCreated;
38
    }
39
}
40