Passed
Push — master ( b58a23...eebb3c )
by Murilo
01:31
created

PhoneController   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 112
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 15
eloc 56
c 1
b 0
f 0
dl 0
loc 112
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
B updatePhone() 0 41 6
A validateData() 0 10 2
A validateEmptyNumber() 0 5 2
A addPhone() 0 28 4
A __construct() 0 6 1
1
<?php
2
3
namespace Source\Controllers;
4
5
use stdClass;
6
use Source\Core\Request;
7
use Source\Core\Response;
8
use Source\Models\User;
9
use Source\Models\Phone;
10
use Source\Models\Gender;
11
use Source\Models\AccessLevel;
12
use Source\Models\Address\Address;
13
use Source\Models\Address\City;
14
use Source\Controllers\Auth;
15
16
/**
17
 * PhoneController class...
18
 *
19
 * @version 0.1.0
20
 */
21
final class PhoneController
22
{
23
    /** @var stdClass $Message */
24
    private $Message;
25
26
    /** @var Request $Request */
27
    private $Request;
28
29
    /** @var $token */
0 ignored issues
show
Documentation Bug introduced by
The doc comment $token at position 0 could not be parsed: Unknown type name '$token' at position 0 in $token.
Loading history...
30
    private $token;
31
32
    public function __construct()
33
    {
34
        $this->Message = new stdClass();
35
        $this->Request = new Request();
36
37
        $this->token = (new Auth())->validateLogin();
38
    }
39
40
    /**
41
     * @param $data
42
     */
43
    public function addPhone($data)
44
    {
45
        $data = $this->validateData($data);
46
47
        $User = new User();
48
        /** @var Source\Models\User $User */
49
        $User = $User->findById($this->token['id'], 'id');
50
51
        if (!$User || $User == null) {
52
            $this->Message->message = 'Usuário não encontrado!';
53
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
54
        }
55
56
        $this->validateEmptyNumber($data);
57
58
        /** @var Source\Models\Phone $Phone */
59
        $Phone = new Phone();
60
        $Phone->user_id = $User->id;
61
        $Phone->phone_type_id = 1;
62
        $Phone->number = $data['number'];
63
64
        if (!$Phone->save()) {
65
            $this->Message->message = $User->message();
66
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
67
        }
68
69
        $this->Message->message = 'Alteração realizada com sucesso!';
70
        (new Response())->setStatusCode(HTTP_OK)->send($this->Message);
71
    }
72
73
    public function updatePhone($data)
74
    {
75
        $data = $this->validateData($data);
76
77
        $User = new User();
78
        $User = $User->findById($this->token['id'], 'id');
79
80
        if (!$User || $User == null) {
81
            $this->Message->message = 'Usuário não encontrado!';
82
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
83
        }
84
85
        if (!filter_var($data['id'], FILTER_VALIDATE_INT)) {
86
            $this->Message->message = 'Número de telefone inválido!';
87
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
88
        }
89
90
        $Phone = new Phone();
91
        /** @var Source\Models\Phone $Phone */
92
        $Phone = $Phone->findById($data['id'], 'id, user_id');
93
94
        if ($User->id != $Phone->user_id) {
0 ignored issues
show
Bug Best Practice introduced by
The property id does not exist on Source\Core\Model. Since you implemented __get, consider adding a @property annotation.
Loading history...
95
            $this->Message->message = 'Você não possui permisão para alterar este telefone!';
96
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
97
            return;
98
        }
99
100
        $this->validateEmptyNumber($data);
101
102
        $Phone->phone_type_id = 1;
103
        $Phone->number = $data['number'];
104
105
        if (!$Phone->save()) {
106
            $this->Message->message = $Phone->message();
107
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
108
            return;
109
        }
110
111
        $this->Message->message = 'Alteração realizada com sucesso!';
112
        (new Response())->setStatusCode(HTTP_OK)->send($this->Message);
113
        return;
114
    }
115
116
    private function validateData($data)
117
    {
118
        $data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
119
120
        if (empty($data)) {
121
            $this->Message->message = 'Campos inválidos!';
122
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
123
        }
124
125
        return $data;
126
    }
127
128
    private function validateEmptyNumber($data)
129
    {
130
        if (empty($data['number'])) {
131
            $this->Message->message = 'Número de telefone inválido!';
132
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
133
        }
134
    }
135
}
136