Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 1122 | Rev 1134 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1102 geraldo 1
<?php
1115 geraldo 2
 
1102 geraldo 3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Mapper\BehaviorsMapper;
15
use LeadersLinked\Form\BehaviorsForm;
16
use LeadersLinked\Model\Behaviors;
17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
18
 
1115 geraldo 19
class BehaviorsController extends AbstractActionController {
20
 
1102 geraldo 21
    /**
22
     *
23
     * @var AdapterInterface
24
     */
25
    private $adapter;
1115 geraldo 26
 
1102 geraldo 27
    /**
28
     *
29
     * @var AbstractAdapter
30
     */
31
    private $cache;
1115 geraldo 32
 
1102 geraldo 33
    /**
34
     *
35
     * @var  LoggerInterface
36
     */
37
    private $logger;
38
 
39
    /**
40
     *
41
     * @var array
42
     */
43
    private $config;
1115 geraldo 44
 
1102 geraldo 45
    /**
46
     *
47
     * @param AdapterInterface $adapter
48
     * @param AbstractAdapter $cache
49
     * @param LoggerInterface $logger
50
     * @param array $config
51
     */
1115 geraldo 52
    public function __construct($adapter, $cache, $logger, $config) {
53
        $this->adapter = $adapter;
54
        $this->cache = $cache;
55
        $this->logger = $logger;
56
        $this->config = $config;
1102 geraldo 57
    }
58
 
1115 geraldo 59
    public function indexAction() {
60
 
61
        $currentUserPlugin = $this->plugin('currentUserPlugin');
62
        $currentUser = $currentUserPlugin->getUser();
63
        $currentCompany = $currentUserPlugin->getCompany();
64
 
65
        $request = $this->getRequest();
66
 
67
        $request = $this->getRequest();
68
        if ($request->isGet()) {
69
 
70
 
71
            $headers = $request->getHeaders();
72
 
73
            $isJson = false;
74
            if ($headers->has('Accept')) {
75
                $accept = $headers->get('Accept');
76
 
77
                $prioritized = $accept->getPrioritized();
78
 
79
                foreach ($prioritized as $key => $value) {
80
                    $raw = trim($value->getRaw());
81
 
82
                    if (!$isJson) {
83
                        $isJson = strpos($raw, 'json');
84
                    }
85
                }
86
            }
87
 
88
            if ($isJson) {
89
 
1120 geraldo 90
                $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
1115 geraldo 91
 
92
                $records = $currentCompany ?
93
                        $behaviorMapper->fetchAllCompanyId($currentCompany->id) :
94
                        $behaviorMapper->fetchAllByDefault();
95
 
96
                $items = [];
97
                foreach ($records as $record) {
98
                    $item = [
99
                        'uuid' => $record->uuid,
1121 geraldo 100
                        'description' => $record->description,
1115 geraldo 101
                    ];
102
 
103
                    array_push($items, $item);
104
                }
105
 
106
                return new JsonModel([
107
                    'success' => true,
1122 geraldo 108
                    'data' => $items
1115 geraldo 109
                ]);
110
            } else {
111
 
112
                return new JsonModel([
113
                    'success' => false,
114
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
115
                ]);
116
                ;
117
            }
118
        } else {
1102 geraldo 119
            return new JsonModel([
120
                'success' => false,
121
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
122
            ]);
1115 geraldo 123
            ;
124
        }
125
    }
1102 geraldo 126
 
1115 geraldo 127
    public function addAction() {
1102 geraldo 128
        $currentUserPlugin = $this->plugin('currentUserPlugin');
129
        $currentUser = $currentUserPlugin->getUser();
130
        $currentCompany = $currentUserPlugin->getCompany();
1115 geraldo 131
 
1102 geraldo 132
        $request = $this->getRequest();
1115 geraldo 133
 
134
 
135
        if ($request->isPost()) {
136
            $form = new BehaviorsForm();
1102 geraldo 137
            $dataPost = $request->getPost()->toArray();
1115 geraldo 138
 
1102 geraldo 139
            $form->setData($dataPost);
1115 geraldo 140
 
141
            if ($form->isValid()) {
1102 geraldo 142
                $dataPost = (array) $form->getData();
143
 
144
                $hydrator = new ObjectPropertyHydrator();
145
                $behavior = new Behaviors();
146
                $hydrator->hydrate($dataPost, $behavior);
1115 geraldo 147
 
148
                if (!$behavior->status) {
1102 geraldo 149
                    $behavior->status = Behaviors::STATUS_INACTIVE;
150
                }
1115 geraldo 151
 
152
 
153
                if ($currentCompany) {
1102 geraldo 154
                    $behavior->company_id = $currentCompany->id;
155
                }
156
 
1115 geraldo 157
 
1102 geraldo 158
                $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
1133 geraldo 159
 
1102 geraldo 160
                $result = $behaviorMapper->insert($behavior);
1115 geraldo 161
 
162
                if ($result) {
1114 geraldo 163
                    $this->logger->info('Se agrego la conducta observable ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 164
 
1102 geraldo 165
                    $data = [
1115 geraldo 166
                        'success' => true,
167
                        'data' => $behavior
1102 geraldo 168
                    ];
169
                } else {
170
                    $data = [
1115 geraldo 171
                        'success' => false,
172
                        'data' => $behaviorMapper->getError()
1102 geraldo 173
                    ];
174
                }
1115 geraldo 175
 
1102 geraldo 176
                return new JsonModel($data);
177
            } else {
178
                $messages = [];
179
                $form_messages = (array) $form->getMessages();
1115 geraldo 180
                foreach ($form_messages as $fieldname => $field_messages) {
181
 
1102 geraldo 182
                    $messages[$fieldname] = array_values($field_messages);
183
                }
1115 geraldo 184
 
1102 geraldo 185
                return new JsonModel([
1115 geraldo 186
                    'success' => false,
187
                    'data' => $messages
1102 geraldo 188
                ]);
189
            }
190
        } else {
191
            $data = [
192
                'success' => false,
193
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
194
            ];
1115 geraldo 195
 
1102 geraldo 196
            return new JsonModel($data);
197
        }
1115 geraldo 198
 
1102 geraldo 199
        return new JsonModel($data);
200
    }
1115 geraldo 201
 
202
    public function editAction() {
1102 geraldo 203
        $currentUserPlugin = $this->plugin('currentUserPlugin');
204
        $currentUser = $currentUserPlugin->getUser();
1115 geraldo 205
 
1102 geraldo 206
        $request = $this->getRequest();
207
        $id = $this->params()->fromRoute('id');
208
 
1115 geraldo 209
 
210
        if (!$id) {
1102 geraldo 211
            $data = [
1115 geraldo 212
                'success' => false,
213
                'data' => 'ERROR_INVALID_PARAMETER'
1102 geraldo 214
            ];
1115 geraldo 215
 
1102 geraldo 216
            return new JsonModel($data);
217
        }
218
 
219
        $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
220
        $behavior = $behaviorMapper->fetchOneByUuid($id);
1115 geraldo 221
        if (!$behavior) {
1102 geraldo 222
            $data = [
1115 geraldo 223
                'success' => false,
224
                'data' => 'ERROR_RECORD_NOT_FOUND'
1102 geraldo 225
            ];
1115 geraldo 226
 
1102 geraldo 227
            return new JsonModel($data);
228
        }
1115 geraldo 229
 
230
        if ($request->isPost()) {
231
            $form = new BehaviorsForm();
1102 geraldo 232
            $dataPost = $request->getPost()->toArray();
1115 geraldo 233
 
1102 geraldo 234
            $form->setData($dataPost);
1115 geraldo 235
 
236
            if ($form->isValid()) {
1102 geraldo 237
                $dataPost = (array) $form->getData();
1115 geraldo 238
 
1102 geraldo 239
                $hydrator = new ObjectPropertyHydrator();
240
                $hydrator->hydrate($dataPost, $behavior);
1115 geraldo 241
 
242
                if (!$behavior->status) {
1102 geraldo 243
                    $behavior->status = Behaviors::STATUS_INACTIVE;
244
                }
1115 geraldo 245
 
1102 geraldo 246
                $result = $behaviorMapper->update($behavior);
1115 geraldo 247
 
248
                if ($result) {
1114 geraldo 249
                    $this->logger->info('Se actualizo la conducta observable ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 250
 
1102 geraldo 251
                    $data = [
252
                        'success' => true,
253
                        'data' => 'LABEL_RECORD_UPDATED'
254
                    ];
255
                } else {
256
                    $data = [
1115 geraldo 257
                        'success' => false,
258
                        'data' => $behaviorMapper->getError()
1102 geraldo 259
                    ];
260
                }
1115 geraldo 261
 
1102 geraldo 262
                return new JsonModel($data);
263
            } else {
264
                $messages = [];
265
                $form_messages = (array) $form->getMessages();
1115 geraldo 266
                foreach ($form_messages as $fieldname => $field_messages) {
1102 geraldo 267
                    $messages[$fieldname] = array_values($field_messages);
268
                }
1115 geraldo 269
 
1102 geraldo 270
                return new JsonModel([
1115 geraldo 271
                    'success' => false,
272
                    'data' => $messages
1102 geraldo 273
                ]);
274
            }
275
        } else if ($request->isGet()) {
276
            $hydrator = new ObjectPropertyHydrator();
1115 geraldo 277
 
1102 geraldo 278
            $data = [
279
                'success' => true,
280
                'data' => $hydrator->extract($behavior)
281
            ];
1115 geraldo 282
 
1102 geraldo 283
            return new JsonModel($data);
284
        } else {
285
            $data = [
286
                'success' => false,
287
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
288
            ];
1115 geraldo 289
 
1102 geraldo 290
            return new JsonModel($data);
291
        }
1115 geraldo 292
 
1102 geraldo 293
        return new JsonModel($data);
294
    }
1115 geraldo 295
 
296
    public function deleteAction() {
1102 geraldo 297
        $currentUserPlugin = $this->plugin('currentUserPlugin');
298
        $currentUser = $currentUserPlugin->getUser();
1115 geraldo 299
 
1102 geraldo 300
        $request = $this->getRequest();
301
        $id = $this->params()->fromRoute('id');
1115 geraldo 302
 
303
        if (!$id) {
1102 geraldo 304
            $data = [
1115 geraldo 305
                'success' => false,
306
                'data' => 'ERROR_INVALID_PARAMETER'
1102 geraldo 307
            ];
1115 geraldo 308
 
1102 geraldo 309
            return new JsonModel($data);
310
        }
1115 geraldo 311
 
312
 
1102 geraldo 313
        $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
314
        $behavior = $behaviorMapper->fetchOneByUuid($id);
1115 geraldo 315
        if (!$behavior) {
1102 geraldo 316
            $data = [
1115 geraldo 317
                'success' => false,
318
                'data' => 'ERROR_RECORD_NOT_FOUND'
1102 geraldo 319
            ];
1115 geraldo 320
 
1102 geraldo 321
            return new JsonModel($data);
322
        }
1115 geraldo 323
 
324
        if ($request->isPost()) {
1102 geraldo 325
            $result = $behaviorMapper->delete($behavior);
1115 geraldo 326
            if ($result) {
1114 geraldo 327
                $this->logger->info('Se borro el tipo de competencia ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 328
 
1102 geraldo 329
                $data = [
330
                    'success' => true,
331
                    'data' => 'LABEL_RECORD_DELETED'
332
                ];
333
            } else {
334
 
335
                $data = [
1115 geraldo 336
                    'success' => false,
337
                    'data' => $behaviorMapper->getError()
1102 geraldo 338
                ];
339
 
340
                return new JsonModel($data);
341
            }
342
        } else {
343
            $data = [
344
                'success' => false,
345
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
346
            ];
1115 geraldo 347
 
1102 geraldo 348
            return new JsonModel($data);
349
        }
1115 geraldo 350
 
1102 geraldo 351
        return new JsonModel($data);
352
    }
1115 geraldo 353
 
1102 geraldo 354
}