Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 1121 | Rev 1133 | 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);
159
                $result = $behaviorMapper->insert($behavior);
1115 geraldo 160
 
161
                if ($result) {
1114 geraldo 162
                    $this->logger->info('Se agrego la conducta observable ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 163
 
1102 geraldo 164
                    $data = [
1115 geraldo 165
                        'success' => true,
166
                        'data' => $behavior
1102 geraldo 167
                    ];
168
                } else {
169
                    $data = [
1115 geraldo 170
                        'success' => false,
171
                        'data' => $behaviorMapper->getError()
1102 geraldo 172
                    ];
173
                }
1115 geraldo 174
 
1102 geraldo 175
                return new JsonModel($data);
176
            } else {
177
                $messages = [];
178
                $form_messages = (array) $form->getMessages();
1115 geraldo 179
                foreach ($form_messages as $fieldname => $field_messages) {
180
 
1102 geraldo 181
                    $messages[$fieldname] = array_values($field_messages);
182
                }
1115 geraldo 183
 
1102 geraldo 184
                return new JsonModel([
1115 geraldo 185
                    'success' => false,
186
                    'data' => $messages
1102 geraldo 187
                ]);
188
            }
189
        } else {
190
            $data = [
191
                'success' => false,
192
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
193
            ];
1115 geraldo 194
 
1102 geraldo 195
            return new JsonModel($data);
196
        }
1115 geraldo 197
 
1102 geraldo 198
        return new JsonModel($data);
199
    }
1115 geraldo 200
 
201
    public function editAction() {
1102 geraldo 202
        $currentUserPlugin = $this->plugin('currentUserPlugin');
203
        $currentUser = $currentUserPlugin->getUser();
1115 geraldo 204
 
1102 geraldo 205
        $request = $this->getRequest();
206
        $id = $this->params()->fromRoute('id');
207
 
1115 geraldo 208
 
209
        if (!$id) {
1102 geraldo 210
            $data = [
1115 geraldo 211
                'success' => false,
212
                'data' => 'ERROR_INVALID_PARAMETER'
1102 geraldo 213
            ];
1115 geraldo 214
 
1102 geraldo 215
            return new JsonModel($data);
216
        }
217
 
218
        $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
219
        $behavior = $behaviorMapper->fetchOneByUuid($id);
1115 geraldo 220
        if (!$behavior) {
1102 geraldo 221
            $data = [
1115 geraldo 222
                'success' => false,
223
                'data' => 'ERROR_RECORD_NOT_FOUND'
1102 geraldo 224
            ];
1115 geraldo 225
 
1102 geraldo 226
            return new JsonModel($data);
227
        }
1115 geraldo 228
 
229
        if ($request->isPost()) {
230
            $form = new BehaviorsForm();
1102 geraldo 231
            $dataPost = $request->getPost()->toArray();
1115 geraldo 232
 
1102 geraldo 233
            $form->setData($dataPost);
1115 geraldo 234
 
235
            if ($form->isValid()) {
1102 geraldo 236
                $dataPost = (array) $form->getData();
1115 geraldo 237
 
1102 geraldo 238
                $hydrator = new ObjectPropertyHydrator();
239
                $hydrator->hydrate($dataPost, $behavior);
1115 geraldo 240
 
241
                if (!$behavior->status) {
1102 geraldo 242
                    $behavior->status = Behaviors::STATUS_INACTIVE;
243
                }
1115 geraldo 244
 
1102 geraldo 245
                $result = $behaviorMapper->update($behavior);
1115 geraldo 246
 
247
                if ($result) {
1114 geraldo 248
                    $this->logger->info('Se actualizo la conducta observable ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 249
 
1102 geraldo 250
                    $data = [
251
                        'success' => true,
252
                        'data' => 'LABEL_RECORD_UPDATED'
253
                    ];
254
                } else {
255
                    $data = [
1115 geraldo 256
                        'success' => false,
257
                        'data' => $behaviorMapper->getError()
1102 geraldo 258
                    ];
259
                }
1115 geraldo 260
 
1102 geraldo 261
                return new JsonModel($data);
262
            } else {
263
                $messages = [];
264
                $form_messages = (array) $form->getMessages();
1115 geraldo 265
                foreach ($form_messages as $fieldname => $field_messages) {
1102 geraldo 266
                    $messages[$fieldname] = array_values($field_messages);
267
                }
1115 geraldo 268
 
1102 geraldo 269
                return new JsonModel([
1115 geraldo 270
                    'success' => false,
271
                    'data' => $messages
1102 geraldo 272
                ]);
273
            }
274
        } else if ($request->isGet()) {
275
            $hydrator = new ObjectPropertyHydrator();
1115 geraldo 276
 
1102 geraldo 277
            $data = [
278
                'success' => true,
279
                'data' => $hydrator->extract($behavior)
280
            ];
1115 geraldo 281
 
1102 geraldo 282
            return new JsonModel($data);
283
        } else {
284
            $data = [
285
                'success' => false,
286
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
287
            ];
1115 geraldo 288
 
1102 geraldo 289
            return new JsonModel($data);
290
        }
1115 geraldo 291
 
1102 geraldo 292
        return new JsonModel($data);
293
    }
1115 geraldo 294
 
295
    public function deleteAction() {
1102 geraldo 296
        $currentUserPlugin = $this->plugin('currentUserPlugin');
297
        $currentUser = $currentUserPlugin->getUser();
1115 geraldo 298
 
1102 geraldo 299
        $request = $this->getRequest();
300
        $id = $this->params()->fromRoute('id');
1115 geraldo 301
 
302
        if (!$id) {
1102 geraldo 303
            $data = [
1115 geraldo 304
                'success' => false,
305
                'data' => 'ERROR_INVALID_PARAMETER'
1102 geraldo 306
            ];
1115 geraldo 307
 
1102 geraldo 308
            return new JsonModel($data);
309
        }
1115 geraldo 310
 
311
 
1102 geraldo 312
        $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
313
        $behavior = $behaviorMapper->fetchOneByUuid($id);
1115 geraldo 314
        if (!$behavior) {
1102 geraldo 315
            $data = [
1115 geraldo 316
                'success' => false,
317
                'data' => 'ERROR_RECORD_NOT_FOUND'
1102 geraldo 318
            ];
1115 geraldo 319
 
1102 geraldo 320
            return new JsonModel($data);
321
        }
1115 geraldo 322
 
323
        if ($request->isPost()) {
1102 geraldo 324
            $result = $behaviorMapper->delete($behavior);
1115 geraldo 325
            if ($result) {
1114 geraldo 326
                $this->logger->info('Se borro el tipo de competencia ' . $behavior->description, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1115 geraldo 327
 
1102 geraldo 328
                $data = [
329
                    'success' => true,
330
                    'data' => 'LABEL_RECORD_DELETED'
331
                ];
332
            } else {
333
 
334
                $data = [
1115 geraldo 335
                    'success' => false,
336
                    'data' => $behaviorMapper->getError()
1102 geraldo 337
                ];
338
 
339
                return new JsonModel($data);
340
            }
341
        } else {
342
            $data = [
343
                'success' => false,
344
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
345
            ];
1115 geraldo 346
 
1102 geraldo 347
            return new JsonModel($data);
348
        }
1115 geraldo 349
 
1102 geraldo 350
        return new JsonModel($data);
351
    }
1115 geraldo 352
 
1102 geraldo 353
}