Passed
Push — master ( b616ab...e5c15e )
by Murilo
01:33
created

PhoneController::addPhone()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 41
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 26
c 1
b 0
f 0
dl 0
loc 41
rs 8.8817
cc 6
nc 5
nop 1
1
<?php
2
3
namespace Source\Controllers;
4
5
use \stdClass;
6
7
use Source\Core\Request;
8
use Source\Core\Response;
9
10
use Source\Models\User;
11
use Source\Models\Phone;
12
use Source\Models\Gender;
13
use Source\Models\AccessLevel;
14
use Source\Models\Address\Address;
15
use Source\Models\Address\City;
16
17
use Source\Controllers\Auth;
18
19
final class PhoneController
20
{
21
    private $Message;
22
23
    private $Request;
24
25
    private $token;
26
27
    public function __construct()
28
    {
29
        $this->Message = new stdClass();
30
        $this->Request = new Request();
31
32
        $this->token = (new Auth())->validateLogin();
33
    }
34
35
    public function addPhone($data)
36
    {
37
        $data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
38
39
        if (empty($data)) {
40
            $this->Message->message = 'Campos inválidos!';
41
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
42
            return;
43
        }
44
45
        $User = new User();
46
        /** @var Source\Models\User $User */
47
        $User = $User->findById($this->token['id'], 'id');
48
49
        if (!$User || $User == null) {
50
            $this->Message->message = 'Usuário não encontrado!';
51
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
52
            return;
53
        }
54
55
        if (empty($data['number'])) {
56
            $this->Message->message = 'Número de telefone inválido!';
57
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
58
            return;
59
        }
60
61
        /** @var Source\Models\Phone $Phone */
62
        $Phone = new Phone();
63
        $Phone->user_id = $User->id;
64
        $Phone->phone_type_id = 1;
65
        $Phone->number = $data['number'];
66
67
        if (!$Phone->save()) {
68
            $this->Message->message = $User->message();
69
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
70
            return;
71
        }
72
73
        $this->Message->message = 'Alteração realizada com sucesso!';
74
        (new Response())->setStatusCode(HTTP_OK)->send($this->Message);
75
        return;
76
    }
77
    
78
    public function updatePhone($data)
79
    {
80
        $data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
81
82
        if (empty($data)) {
83
            $this->Message->message = 'Campos inválidos!';
84
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
85
            return;
86
        }
87
88
        $User = new User();
89
        $User = $User->findById($this->token['id'], 'id');
90
91
        if (!$User || $User == null) {
92
            $this->Message->message = 'Usuário não encontrado!';
93
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
94
            return;
95
        }
96
97
        if (!filter_var($data['id'], FILTER_VALIDATE_INT)) {
98
            $this->Message->message = 'Número de telefone inválido!';
99
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
100
            return;
101
        }
102
103
        $Phone = new Phone();
104
        /** @var Source\Models\Phone $Phone */
105
        $Phone = $Phone->findById($data['id'], 'id, user_id');
106
107
        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...
108
            $this->Message->message = 'Você não possui permisão para alterar este telefone!';
109
            (new Response())->setStatusCode(HTTP_NOT_FOUND)->send($this->Message);
110
            return;
111
        }
112
113
        if (empty($data['number'])) {
114
            $this->Message->message = 'Número de telefone inválido!';
115
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
116
            return;
117
        }
118
119
        $Phone->phone_type_id = 1;
120
        $Phone->number = $data['number'];
121
122
        if (!$Phone->save()) {
123
            $this->Message->message = $Phone->message();
124
            (new Response())->setStatusCode(HTTP_PARTIAL_CONTENT)->send($this->Message);
125
            return;
126
        }
127
128
        $this->Message->message = 'Alteração realizada com sucesso!';
129
        (new Response())->setStatusCode(HTTP_OK)->send($this->Message);
130
        return;
131
    }
132
}
133