Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 1114 | Ir a la última revisión | | Ultima modificación | Ver Log |

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