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

CreateUser   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 27
ccs 17
cts 17
cp 1
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 25 1
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