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

UpdateUser::update()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 17
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 26
ccs 18
cts 18
cp 1
crap 1
rs 9.7
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\UpdateUserInterface;
7
use Omatech\Mage\Core\Domains\Users\Contracts\UserInterface;
8
use Omatech\Mage\Core\Events\Users\UserUpdated;
9
use Omatech\Mage\Core\Repositories\UserBaseRepository;
10
11
class UpdateUser extends UserBaseRepository implements UpdateUserInterface
12
{
13 8
    public function update(UserInterface $user): bool
14
    {
15
        $isUpdated = DB::transaction(function () use ($user) {
16 8
            $updated = $this->query()->find($user->getId());
17
18 8
            $updated->fill([
19 8
                'name'              => $user->getName(),
20 8
                'language'          => $user->getLanguage(),
21 8
                'email'             => $user->getEmail(),
22 8
                'email_verified_at' => $user->getEmailVerifiedAt(),
23 8
                'password'          => $user->getPassword(),
24 8
                'remember_token'    => $user->getRememberToken(),
25 8
            ])->save();
26
27 8
            $user->setCreatedAt($updated->created_at);
28 8
            $user->setUpdatedAt($updated->updated_at);
29
30 8
            $this->syncPermissions($updated, $user);
31 8
            $this->syncRoles($updated, $user);
32
33 8
            return count($updated->getChanges()) >= 1;
34 8
        });
35
36 8
        event(new UserUpdated($user, $isUpdated));
37
38 8
        return $isUpdated;
39
    }
40
}
41