Failed Conditions
Pull Request — master (#290)
by Maximo
03:23
created

UserMapper::mapToObject()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
nc 3
nop 3
dl 0
loc 14
ccs 0
cts 13
cp 0
crap 12
rs 9.7998
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Canvas\Mapper;
6
7
use AutoMapperPlus\CustomMapper\CustomMapper;
8
use Baka\Auth\Models\Apps;
9
use Canvas\Models\AccessList;
10
use Phalcon\Di;
11
use Canvas\Contracts\Mapper\RelationshipTrait;
12
use Canvas\Models\Users;
13
14
/**
15
 * Class UserMapper.
16
 *
17
 * @package Canvas\Mapper
18
 */
19
class UserMapper extends CustomMapper
20
{
21
    use RelationshipTrait;
22
23
    /**
24
     * @param Users $user
25
     * @param Canvas\Dto\User $userDto
26
     * @return Canvas\Dto\User
27
     */
28
    public function mapToObject($user, $userDto, array $context = [])
29
    {
30
        $user = $this->defaultKanvasProperties($user, $userDto);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $user. This often makes code more readable.
Loading history...
31
32
        $this->getRelationships($user, $userDto, $context);
33
34
        if (!empty($userDto->roles)) {
35
            if (isset($userDto->roles[0])) {
36
                $this->accesList($userDto);
37
            }
38
        }
39
40
        return $userDto;
41
    }
42
43
    /**
44
     * Set the default Kanvas UserData properties.
45
     *
46
     * @param mixed $user
47
     * @param object $userDto
48
     * @return object
49
     */
50
    protected function defaultKanvasProperties($user, object $userDto): object
51
    {
52
        if (is_array($user)) {
53
            $user = Users::getById($user['id']);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $user. This often makes code more readable.
Loading history...
54
        }
55
56
        $userDto->id = $user->id;
57
        $userDto->active_subscription_id = $user->active_subscription_id;
58
        $userDto->card_brand = $user->card_brand;
59
        $userDto->cell_phone_number = $user->cell_phone_number;
60
        $userDto->city_id = $user->city_id;
61
        $userDto->country_id = $user->country_id;
62
        $userDto->created_at = $user->created_at;
63
        $userDto->displayname = $user->displayname;
64
        $userDto->dob = $user->dob;
65
        $userDto->email = $user->email;
66
        $userDto->firstname = $user->firstname;
67
        $userDto->interest = $user->interest;
68
        $userDto->karma = $user->karma;
69
        $userDto->language = $user->language;
70
        $userDto->lastname = $user->lastname;
71
        $userDto->lastvisit = $user->lastvisit;
72
        $userDto->location = $user->location;
73
        $userDto->phone_number = $user->phone_number;
74
        $userDto->profile_header = $user->profile_header;
75
        $userDto->profile_header_mobile = $user->profile_header_mobile;
76
        $userDto->profile_image = $user->profile_image;
77
        $userDto->profile_image_mobile = $user->profile_image_mobile;
78
        $userDto->profile_image_thumb = $user->profile_image_thumb;
79
        $userDto->profile_privacy = $user->profile_privacy;
80
        $userDto->profile_remote_image = $user->profile_remote_image;
81
        $userDto->registered = $user->registered;
82
        $userDto->session_id = $user->session_id;
83
        $userDto->session_key = $user->session_key;
84
        $userDto->session_page = $user->session_page;
85
        $userDto->session_time = $user->session_time;
86
        $userDto->sex = $user->sex;
87
        $userDto->state_id = $user->state_id;
88
        $userDto->status = $user->status;
89
        $userDto->stripe_id = $user->stripe_id;
90
        $userDto->system_modules_id = $user->system_modules_id;
91
        $userDto->timezone = $user->timezone;
92
        $userDto->trial_ends_at = $user->trial_ends_at;
93
        $userDto->updated_at = $user->updated_at;
94
        $userDto->user_active = $user->user_active;
95
        $userDto->user_last_login_try = $user->user_last_login_try;
96
        $userDto->user_level = $user->user_level;
97
        $userDto->user_login_tries = $user->user_login_tries;
98
        $userDto->votes = $user->votes;
99
        $userDto->votes_points = $user->votes_points;
100
        $userDto->user_activation_email = $user->user_activation_email;
101
        $userDto->welcome = $user->welcome;
102
        $userDto->photo = $user->photo;
103
104
        /**
105
         * Properties we need to overwrite base on the
106
         * current app and company the user is running.
107
         */
108
        $userDto->default_company = $user->getDefaultCompany()->getId();
109
        $userDto->default_company_branch = $user->getDefaultCompany()->defaultBranch->getId();
110
        $userDto->roles_id = $user->getPermission()->roles_id;
111
112
        return $userDto;
113
    }
114
115
    /**
116
     * Attach acces list to the user.
117
     *
118
     * @param object $userDto
119
     * @return void
120
     */
121
    protected function accesList(object $userDto): void
122
    {
123
        $app = Di::getDefault()->getApp();
124
        $accesList = AccessList::find([
125
            'conditions' => 'roles_name = ?0 and apps_id in (?1 OR ?2) and allowed = 0',
126
            'bind' => [$userDto->roles[0]->name, $app->getId(), $app::CANVAS_DEFAULT_APP_ID]
127
        ]);
128
129
        if (count($accesList) > 0) {
130
            foreach ($accesList as $access) {
131
                $userDto->access_list[strtolower($access->resources_name)][$access->access_name] = 0;
132
            }
133
        }
134
    }
135
}
136