Completed
Push — master ( 563d71...071fd8 )
by Mahmoud
03:32
created

Controller::createAdmin()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace App\Containers\User\UI\API\Controllers;
4
5
use App\Containers\User\Actions\CreateAdminAction;
6
use App\Containers\User\Actions\DeleteUserAction;
7
use App\Containers\User\Actions\GetUserAction;
8
use App\Containers\User\Actions\ListAndSearchUsersAction;
9
use App\Containers\User\Actions\RegisterUserAction;
10
use App\Containers\User\Actions\RegisterVisitorUserAction;
11
use App\Containers\User\Actions\SwitchVisitorToUserAction;
12
use App\Containers\User\Actions\UpdateUserAction;
13
use App\Containers\User\UI\API\Requests\CreateAdminRequest;
14
use App\Containers\User\UI\API\Requests\DeleteUserRequest;
15
use App\Containers\User\UI\API\Requests\ListAllUsersRequest;
16
use App\Containers\User\UI\API\Requests\RegisterUserRequest;
17
use App\Containers\User\UI\API\Requests\RegisterVisitorRequest;
18
use App\Containers\User\UI\API\Requests\UpdateUserRequest;
19
use App\Containers\User\UI\API\Transformers\UserTransformer;
20
use App\Port\Controller\Abstracts\PortApiController;
21
use Dingo\Api\Http\Request;
22
23
/**
24
 * Class Controller.
25
 *
26
 * @author Mahmoud Zalt <[email protected]>
27
 */
28
class Controller extends PortApiController
29
{
30
31
    /**
32
     * @param \App\Containers\User\UI\API\Requests\DeleteUserRequest $request
33
     * @param \App\Containers\User\Actions\DeleteUserAction          $action
34
     *
35
     * @return  \Dingo\Api\Http\Response
36
     */
37
    public function deleteUser(DeleteUserRequest $request, DeleteUserAction $action)
38
    {
39
        $action->run();
40
41
        return $this->response->accepted(null, [
42
            'message' => 'User (' . $request->user()->id . ') Deleted Successfully.',
43
        ]);
44
    }
45
46
    /**
47
     * @param \App\Containers\User\UI\API\Requests\ListAllUsersRequest $request
48
     * @param \App\Containers\User\Actions\ListAndSearchUsersAction    $action
49
     *
50
     * @return  \Dingo\Api\Http\Response
51
     */
52
    public function listAllUsers(ListAllUsersRequest $request, ListAndSearchUsersAction $action)
53
    {
54
        $users = $action->run();
55
56
        return $this->response->paginator($users, new UserTransformer());
57
    }
58
59
    /**
60
     * @param \Dingo\Api\Http\Request                    $request
61
     * @param \App\Containers\User\Actions\GetUserAction $action
62
     *
63
     * @return  \Dingo\Api\Http\Response
64
     */
65
    public function refreshUser(Request $request, GetUserAction $action)
66
    {
67
        $user = $action->run(
68
            $request['user_id'],
69
            $request->header('visitor-id'),
70
            $request->header('Authorization')
71
        );
72
73
        return $this->response->item($user, new UserTransformer());
74
    }
75
76
    /**
77
     * @param \App\Containers\User\UI\API\Requests\RegisterVisitorRequest $request
78
     * @param \App\Containers\User\Actions\RegisterVisitorUserAction      $action
79
     *
80
     * @return  \Dingo\Api\Http\Response
81
     */
82
    public function registerVisitor(RegisterVisitorRequest $request, RegisterVisitorUserAction $action)
83
    {
84
        $user = $action->run($request->header('visitor-id'));
85
86
        return $this->response->item($user, new UserTransformer());
87
    }
88
89
    /**
90
     * @param \App\Containers\User\UI\API\Requests\RegisterRequest $request
91
     * @param \App\Containers\User\Actions\CreateUserAction        $createUserAction
0 ignored issues
show
Documentation introduced by
There is no parameter named $createUserAction. Did you maybe mean $action?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
92
     * @param \App\Containers\User\Actions\UpdateVisitorUserAction $updateVisitorUserAction
0 ignored issues
show
Documentation introduced by
There is no parameter named $updateVisitorUserAction. Did you maybe mean $action?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
93
     *
94
     * @return  \Dingo\Api\Http\Response
95
     */
96
    public function registerUser(RegisterUserRequest $request, RegisterUserAction $action)
97
    {
98
        $user = $action->run($request['email'], $request['password'], $request['name'], $request['gender'],
99
            $request['birth'], true, $request->header('visitor-id'));
100
101
        return $this->response->item($user, new UserTransformer());
102
    }
103
104
    /**
105
     * @param \App\Containers\User\UI\API\Requests\CreateAdminRequest $request
106
     * @param \App\Containers\User\Actions\CreateAdminAction          $action
107
     *
108
     * @return  \Dingo\Api\Http\Response
109
     */
110
    public function createAdmin(CreateAdminRequest $request, CreateAdminAction $action)
111
    {
112
        $admin = $action->run($request['email'], $request['password'], $request['name']);
113
114
        return $this->response->item($admin, new UserTransformer());
115
    }
116
117
    /**
118
     * @param \App\Containers\User\UI\API\Requests\UpdateUserRequest $request
119
     * @param \App\Containers\User\Actions\UpdateUserAction          $action
120
     *
121
     * @return  \Dingo\Api\Http\Response
122
     */
123
    public function updateUser(UpdateUserRequest $request, UpdateUserAction $action)
124
    {
125
        $user = $action->run(
126
            $request['password'],
127
            $request['name'],
128
            $request['email'],
129
            $request['gender'],
130
            $request['birth']
131
        )->withToken();
132
133
        return $this->response->item($user, new UserTransformer());
134
    }
135
}
136