UserTransformer   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 72
rs 10
c 3
b 1
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A transformToken() 0 14 2
A includeRoles() 0 4 1
B transform() 0 29 1
1
<?php
2
3
namespace App\Containers\User\UI\API\Transformers;
4
5
use App\Containers\Authorization\UI\API\Transformers\RoleTransformer;
6
use App\Containers\User\Models\User;
7
use App\Ship\Parents\Transformers\Transformer;
8
use Carbon\Carbon;
9
use Config;
10
11
/**
12
 * Class UserTransformer.
13
 *
14
 * @author Mahmoud Zalt <[email protected]>
15
 */
16
class UserTransformer extends Transformer
17
{
18
19
    /**
20
     * @var  array
21
     */
22
    protected $defaultIncludes = [
23
        'roles',
24
    ];
25
26
    /**
27
     * @param \App\Containers\User\Models\User $user
28
     *
29
     * @return array
30
     */
31
    public function transform(User $user)
32
    {
33
        $response = [
34
            'object'               => 'User',
35
            'id'                   => $user->getHashedKey(),
36
            'name'                 => $user->name,
37
            'email'                => $user->email,
38
            'confirmed'            => $user->confirmed,
39
            'nickname'             => $user->nickname,
40
            'gender'               => $user->gender,
41
            'birth'                => $user->birth,
42
            'social_auth_provider' => $user->social_provider,
43
            'social_id'            => $user->social_id,
44
            'social_avatar'        => [
45
                'avatar'   => $user->social_avatar,
46
                'original' => $user->social_avatar_original,
47
            ],
48
            'created_at'           => $user->created_at,
49
            'updated_at'           => $user->updated_at,
50
            'token'                => $this->transformToken($user->token),
51
        ];
52
53
        $response = $this->ifAdmin([
54
            'real_id'    => $user->id,
55
            'deleted_at' => $user->deleted_at,
56
        ], $response);
57
58
        return $response;
59
    }
60
61
    /**
62
     * TODO: remove from here
63
     *
64
     * @param null $token
65
     *
66
     * @return  array
67
     */
68
    private function transformToken($token = null)
69
    {
70
        return !$token ? null : [
71
            'object'       => 'token',
72
            'token'        => $token,
73
            'access_token' => [
74
                'token_type'   => 'Bearer',
75
                'time_to_live' => [
76
                    'minutes' => Config::get('jwt.ttl'),
77
                ],
78
                'expires_in'   => Carbon::now()->addMinutes(Config::get('jwt.ttl')),
79
            ],
80
        ];
81
    }
82
83
    public function includeRoles(User $user)
84
    {
85
        return $this->collection($user->roles, new RoleTransformer());
86
    }
87
}
88