Completed
Push — master ( e56775...ee26f0 )
by Mahmoud
03:40
created

CreateUserByVisitorIdTask::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 7
rs 9.4285
cc 1
eloc 5
nc 1
nop 2
1
<?php
2
3
namespace App\Containers\User\Tasks;
4
5
use App\Containers\ApiAuthentication\Tasks\ApiAuthenticationTask;
6
use App\Containers\User\Contracts\UserRepositoryInterface;
7
use App\Containers\User\Exceptions\AccountFailedException;
8
use App\Port\Task\Abstracts\Task;
9
use Exception;
10
11
/**
12
 * Class CreateUserByVisitorIdTask.
13
 *
14
 * @author Mahmoud Zalt <[email protected]>
15
 */
16
class CreateUserByVisitorIdTask extends Task
17
{
18
19
    /**
20
     * @var \App\Containers\User\Contracts\UserRepositoryInterface
21
     */
22
    private $userRepository;
23
24
    /**
25
     * @var \App\Containers\ApiAuthentication\Tasks\ApiAuthenticationTask
26
     */
27
    private $authenticationTask;
28
29
    /**
30
     * CreateUserByVisitorIdTask constructor.
31
     *
32
     * @param \App\Containers\User\Contracts\UserRepositoryInterface        $userRepository
33
     * @param \App\Containers\ApiAuthentication\Tasks\ApiAuthenticationTask $authenticationTask
34
     */
35
    public function __construct(
36
        UserRepositoryInterface $userRepository,
37
        ApiAuthenticationTask $authenticationTask
38
    ) {
39
        $this->userRepository = $userRepository;
40
        $this->authenticationTask = $authenticationTask;
41
    }
42
43
44
    /**
45
     * @param      $visitorId device ID (example: iphone UUID, Android ID)
46
     * @param null $device
47
     * @param null $platform
48
     *
49
     * @return  mixed
50
     */
51
    public function run($visitorId, $device = null, $platform = null)
52
    {
53
        try {
54
            // create new user
55
            $user = $this->userRepository->create([
56
                'visitor_id' => $visitorId,
57
                'device'     => $device,
58
                'platform'   => $platform,
59
            ]);
60
        } catch (Exception $e) {
61
            throw (new AccountFailedException())->debug($e);
62
        }
63
64
        return $user;
65
    }
66
67
}
68