Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16769 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16769 Rev 16785
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
 
2
declare(strict_types=1);
3
declare(strict_types=1);
Línea 3... Línea 4...
3
 
4
 
Línea 4... Línea 5...
4
namespace LeadersLinked\Controller;
5
namespace LeadersLinked\Controller;
Línea 5... Línea 6...
5
 
6
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Db\Adapter\AdapterInterface;
7
 
-
 
8
use Laminas\Mvc\Controller\AbstractActionController;
8
 
9
use Laminas\Log\LoggerInterface;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\View\Model\ViewModel;
-
 
11
use Laminas\View\Model\JsonModel;
-
 
12
use LeadersLinked\Model\PlanningTask;
10
use Laminas\Log\LoggerInterface;
-
 
11
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
12
use Laminas\View\Model\ViewModel;
14
use LeadersLinked\Form\Planning\PlanningTaskForm;
13
use LeadersLinked\Library\Functions;
-
 
14
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
-
 
15
use LeadersLinked\Mapper\PlanningTaskMapper;
15
use LeadersLinked\Library\Functions;
16
use LeadersLinked\Model\PlanningTask;
16
use LeadersLinked\Mapper\PlanningTaskMapper;
17
use LeadersLinked\Form\Planning\PlanningTaskForm;
17
use LeadersLinked\Model\PlanningTaskMembers;
18
use LeadersLinked\Form\Planning\PlanningTaskHeaderForm;
-
 
19
use LeadersLinked\Mapper\PlanningPeriodMapper;
18
use LeadersLinked\Mapper\PlanningTaskMembersMapper;
20
use LeadersLinked\Model\PlanningObjective;
19
use LeadersLinked\Mapper\PlanningGoalsMapper;
21
use LeadersLinked\Mapper\PlanningObjectiveMapper;
-
 
22
use LeadersLinked\Mapper\PlanningGoalMapper;
Línea 20... Línea 23...
20
use LeadersLinked\Mapper\PlanningObjectivesMapper;
23
use LeadersLinked\Mapper\PlanningTaskUserMapper;
21
use LeadersLinked\Mapper\CompanyUserMapper;
24
use LeadersLinked\Mapper\UserMapper;
22
use LeadersLinked\Mapper\UserMapper;
25
use LeadersLinked\Model\PlanningTaskUser;
23
 
26
 
24
class PlanningTaskController extends AbstractActionController
27
class PlanningTaskController extends AbstractActionController {
25
{
28
    
26
    /**
29
    /**
Línea 71... Línea 74...
71
        $this->logger       = $logger;
74
        $this->logger       = $logger;
72
        $this->config       = $config;
75
        $this->config       = $config;
73
        $this->translator   = $translator;
76
        $this->translator   = $translator;
74
    }
77
    }
Línea -... Línea 78...
-
 
78
    
75
    
79
    public function indexAction() {
Línea 76... Línea -...
76
 
-
 
77
        
-
 
78
    public function indexAction()
80
        
79
    {
81
        
80
        $currentUserPlugin = $this->plugin('currentUserPlugin');
82
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 81... Línea -...
81
        $currentUser = $currentUserPlugin->getUser();
-
 
82
        $currentCompany = $currentUserPlugin->getCompany();
-
 
83
        
83
        $currentUser = $currentUserPlugin->getUser();
84
        
-
 
85
        $objective_uuid = $this->params()->fromRoute('objective_id');
84
        $currentCompany = $currentUserPlugin->getCompany();
Línea 86... Línea 85...
86
        $goal_uuid= $this->params()->fromRoute('goal_id');
85
        
Línea 104... Línea 103...
104
                        $isJson = strpos($raw, 'json');
103
                        $isJson = strpos($raw, 'json');
105
                    }
104
                    }
Línea 106... Línea 105...
106
                    
105
                    
107
                }
106
                }
108
            }
107
            }
109
 
108
            
-
 
109
            if($isJson) {
Línea 110... Línea -...
110
            if($isJson) {
-
 
111
                
-
 
112
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
-
 
113
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'planning/objectives/goals/task/edit');
-
 
114
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'planning/objectives/goals/task/delete');
-
 
115
                $allowView = $acl->isAllowed($currentUser->usertype_id, 'planning/objectives/goals/task/view');
110
                $link_add = '';
116
 
-
 
117
                $search = $this->params()->fromQuery('search', []);
-
 
118
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
111
                
119
                
-
 
120
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
112
                $period_id = Functions::sanitizeFilterString($this->params()->fromQuery('period_id'));
121
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
-
 
122
                $order =  $this->params()->fromQuery('order', []);
-
 
123
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
-
 
124
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
-
 
125
    
-
 
Línea 126... Línea 113...
126
                $fields =  ['title'];
113
                $objective_id = Functions::sanitizeFilterString($this->params()->fromQuery('objective_id'));
-
 
114
                $goal_id = Functions::sanitizeFilterString($this->params()->fromQuery('goal_id'));
-
 
115
                
-
 
116
                if(empty($period_id)) {
-
 
117
                    
-
 
118
                    return new JsonModel([
-
 
119
                        'success' => true,
127
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
120
                        'data' => [
-
 
121
                            'items' => [],
-
 
122
                            'total' => 0,
-
 
123
                            'link_add' => '',
128
                
124
                        ]
-
 
125
                    ]);
129
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
126
                    
130
                    $order_direction = 'ASC';
127
                }
131
                }
128
                
132
              
129
 
133
                $planningObjectivesMapper = PlanningObjectivesMapper::getInstance($this->adapter);
130
                $planningPeriodMapper = PlanningPeriodMapper::getInstance($this->adapter);
134
                $objective = $planningObjectivesMapper->fetchOneByUuid($objective_uuid);
131
                $planningPeriod = $planningPeriodMapper->fetchOneByUuid($period_id);
135
                       
132
                
136
                if (!$objective) {
133
                if (!$planningPeriod) {
137
                    $data = [
134
                    $data = [
-
 
135
                        'success' => false,
-
 
136
                        'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
137
                    ];
-
 
138
                    
-
 
139
                    return new JsonModel($data);
-
 
140
                }
-
 
141
                
-
 
142
                if ($planningPeriod->company_id != $currentCompany->id) {
-
 
143
                    return new JsonModel([
-
 
144
                        'success' => false,
-
 
145
                        'data' => 'ERROR_UNAUTHORIZED'
-
 
146
                    ]);
-
 
147
                }
-
 
148
                
-
 
149
                
-
 
150
     
-
 
151
                
-
 
152
                $objectives = [];
-
 
153
                $goals = [];
-
 
154
                $planningObjectiveMapper = PlanningObjectiveMapper::getInstance($this->adapter);
-
 
155
                
-
 
156
                if(empty($objective_id)) {
-
 
157
                    $planningObjective = null;
-
 
158
                    
-
 
159
                    
-
 
160
                    $records = $planningObjectiveMapper->fetchAllActiveByCompanyIdAndPeriodId($planningPeriod->company_id, $planningPeriod->id);
-
 
161
                    foreach($records as $record)
-
 
162
                    {
-
 
163
                        if(empty($planningObjective)) {
-
 
164
                            $planningObjective = $record;
-
 
165
                        }
-
 
166
                        
Línea -... Línea 167...
-
 
167
                        $objectives[ $record->uuid ] = $record->title;
Línea 138... Línea -...
138
                        'success' => false,
-
 
Línea 139... Línea -...
139
                        'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
140
                    ];
-
 
141
 
-
 
142
                
168
                    }
143
                        return new JsonModel($data);
169
  
144
                   
170
 
145
                }else{
171
                } else {
146
                    if($objective->company_id==$currentCompany->id){
172
                
147
                        $planningGoalsMapper = PlanningGoalsMapper::getInstance($this->adapter);
173
                   
148
                        $goals = $planningGoalsMapper->fetchOneByUuid($goal_uuid);
174
                    $planningObjective = $planningObjectiveMapper->fetchOneByUuid($objective_id);
149
        
-
 
Línea 150... Línea 175...
150
                        if(!$goals){
175
                    
-
 
176
                    if (!$planningObjective) {
-
 
177
                        $data = [
-
 
178
                            'success' => false,
-
 
179
                            'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
180
                        ];
-
 
181
                        
-
 
182
                        return new JsonModel($data);
-
 
183
                    }
-
 
184
                    
-
 
185
                    if ($planningObjective->period_id != $planningPeriod->id) {
-
 
186
                        return new JsonModel([
-
 
187
                            'success' => false,
-
 
188
                            'data' => 'ERROR_UNAUTHORIZED'
-
 
189
                        ]);
-
 
190
                    }
-
 
191
                    
-
 
192
                }
-
 
193
                
-
 
194
                if(empty($planningObjective)) {
-
 
195
                    return new JsonModel([
-
 
196
                        'success' => true,
-
 
197
                        'data' => [
-
 
198
                            'items'         => [],
-
 
199
                            'total'         => 0,
-
 
200
                            'link_add'      => '',
-
 
201
                            'objectives'    => $objectives,
-
 
202
                            'goals'         => $goals,
-
 
203
                        ]
-
 
204
                    ]);
-
 
205
                }
-
 
206
                
-
 
207
                $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
-
 
208
                
-
 
209
                if(empty($goal_id)) {
-
 
210
                    $planningGoal = null;
151
                            $data = [
211
                    
-
 
212
                    
-
 
213
                    $records = $planningGoalMapper->fetchAllActiveByCompanyIdAndObjectiveId($planningPeriod->company_id, $planningObjective->id);
-
 
214
                    foreach($records as $record)
-
 
215
                    {
152
                                'success' => false,
216
                        if(empty($planningGoal)) {
-
 
217
                            $planningGoal = $record;
-
 
218
                        }
-
 
219
                        
-
 
220
                        $goals[ $record->uuid ] = $record->title;
-
 
221
                    }
153
                                'data' => 'ERROR_RECORD_NOT_FOUND'
222
                    
154
                            ];
223
                } else {
155
        
224
                    
156
                        
225
                    
-
 
226
                    $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
-
 
227
                    
-
 
228
                    if (!$planningGoal) {
Línea -... Línea 229...
-
 
229
                        $data = [
157
                                return new JsonModel($data);
230
                            'success' => false,
-
 
231
                            'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
232
                        ];
-
 
233
                        
158
                        }
234
                        return new JsonModel($data);
159
                    }else{
-
 
Línea 160... Línea -...
160
                        $data = [
-
 
161
                            'success' => false,
235
                    }
-
 
236
                    
-
 
237
                    if ($planningGoal->objective_id != $planningObjective->id) {
-
 
238
                        return new JsonModel([
-
 
239
                            'success' => false,
-
 
240
                            'data' => 'ERROR_UNAUTHORIZED'
-
 
241
                        ]);
-
 
242
                    }
-
 
243
                    
-
 
244
                }
-
 
245
                
-
 
246
                if(empty($planningGoal)) {
-
 
247
                    return new JsonModel([
-
 
248
                        'success' => true,
-
 
249
                        'data' => [
-
 
250
                            'items'         => [],
-
 
251
                            'total'         => 0,
-
 
252
                            'link_add'      => '',
-
 
253
                            'objectives'    => $objectives,
-
 
254
                            'goals'         => $goals,
-
 
255
                        ]
-
 
256
                    ]);
-
 
257
                }
-
 
258
                
-
 
259
                
-
 
260
                
-
 
261
                $link_add = $this->url()->fromRoute('planning/tasks/add', ['goal_id' => $planningGoal->uuid ]);
-
 
262
                
-
 
263
                
-
 
264
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
-
 
265
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/add');
-
 
266
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/edit');
-
 
267
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/delete');
-
 
268
                
-
 
269
                $search = $this->params()->fromQuery('search', []);
-
 
270
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
-
 
271
                
-
 
272
                
162
                            'data' => 'ERROR_UNAUTHORIZED',
273
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
-
 
274
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
-
 
275
                $order =  $this->params()->fromQuery('order', []);
-
 
276
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
163
                        ];
277
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
164
                    
278
                
165
                            return new JsonModel($data);
279
                $fields =  ['title', 'start', 'end', 'progress'];
-
 
280
                
Línea 166... Línea 281...
166
                    }
281
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
167
                        
-
 
168
                    
282
                
Línea 169... Línea -...
169
                  
-
 
170
                }
283
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
171
           
284
                    $order_direction = 'ASC';
-
 
285
                }
-
 
286
                
172
               
287
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
173
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
288
                $paginator = $planningTaskMapper->fetchAllDataTableByCompanyIdAndGoalId($planningGoal->company_id, $planningGoal->id, $search, $page, $records_x_page, $order_field, $order_direction);
174
                $paginator = $planningTaskMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction, $goals->id);
289
                
175
                
290
                
176
                $items = [];
291
                $items = [];
177
            
292
                $records = $paginator->getCurrentItems();
178
                $records = $paginator->getCurrentItems();
293
                
-
 
294
                foreach($records as $record)
179
                
295
                {
180
                
296
                    $dtStart = \DateTime::createFromFormat('Y-m-d', $record->start);
181
                foreach($records as $record)
297
                    $dtEnd = \DateTime::createFromFormat('Y-m-d', $record->end);
-
 
298
                    
-
 
299
                    $item = [
182
                {
300
                        'title'         => $record->title,
183
                  
-
 
184
                    $item = [
301
                        'description'   => $record->description,
185
                        'title' => $record->title,
302
                        'status'        => $record->status,
186
                        'description' => $record->description,
303
                        'start'         => $dtStart->format('d/m/Y'),
187
                        'progress'=> $record->indicator,
-
 
188
                        'cost'=> $record->cost,
-
 
189
                        'status' => $record->status,
-
 
190
                        'actions' => [
-
 
191
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('planning/objectives/goals/task/edit', ['objective_id' => $objective_uuid,'goal_id' => $goal_uuid,'id' => $record->uuid]) : '',
-
 
192
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('planning/objectives/goals/task/delete', ['objective_id' => $objective_uuid,'goal_id' => $goal_uuid,'id' => $record->uuid]) : ''
-
 
193
                            ]
-
 
194
 
-
 
195
                    ];
-
 
196
                    array_push($items, $item);
-
 
197
                }
-
 
198
             
-
 
199
                $recordsTask = $planningTaskMapper->fetchAll($goals->id);
-
 
200
                
-
 
201
               
-
 
202
                $costGoals=0;
-
 
203
                $indicatorGoals=0;
-
 
204
                
-
 
205
                foreach($recordsTask as $record)
-
 
206
                {
-
 
207
                    $indicatorGoals=$indicatorGoals+$record->indicator;
-
 
Línea -... Línea 304...
-
 
304
                        'end'           => $dtEnd->format('d/m/Y'),
208
                    $costGoals=$costGoals+$record->cost;
305
                        'progress'      => $record->progress ? $record->progress : 0,
209
                }
306
                        'actions' => [
210
                $countRecordsTask = count($recordsTask);
307
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('planning/tasks/edit', ['id' => $record->uuid]) : '',
211
                if($countRecordsTask >0){
308
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('planning/tasks/delete', ['id' => $record->uuid]) : '',
212
                    
309
                            //'link_goal' => $allowTask ? $this->url()->fromRoute('planning/tasks/tasks', ['goal_id' => $record->uuid]) : '',
213
                    $indicatorGoals=round($indicatorGoals/$countRecordsTask, 2);
310
                            //'link_goal_report' => $allowTaskReport ? $this->url()->fromRoute('planning/tasks/report', ['id' => $record->uuid]) : '',
214
                }else{
311
                        ]
215
                    $indicatorGoals=-1;
-
 
216
                }
-
 
217
           
312
                    ];
218
             
-
 
219
 
313
                    array_push($items, $item);
220
                return new JsonModel([
-
 
221
                    'success' => true,
314
                }
222
                    'data' => [
315
 
-
 
316
                
223
                        'items' => $items,
317
                return new JsonModel([
224
                        'total' => $paginator->getTotalItemCount(),
318
                    'success' => true,
-
 
319
                    'data' => [
-
 
320
                        'items'         => $items,
225
                        'goals' => [
321
                        'objectives'    => $objectives,
226
                            'titleGoals' =>$goals->title,
322
                        'goals'         => $goals,
227
                            'descriptionGoals' =>$goals->description,
323
                        'total'         => $paginator->getTotalItemCount(),
228
                            'costGoals'=>'$'.$costGoals,
324
                        'link_add'      => $allowAdd ? $link_add : '',
229
                            'indicatorGoals'=> $indicatorGoals,
325
                        
230
                            'statusGoals'=> $goals->status=='a'?'LABEL_ACTIVE':'LABEL_INACTIVE',
-
 
231
                            
326
                    ]
232
                        ]
-
 
233
                    ]
-
 
234
                ]);
327
                ]);
235
            } else  {
328
                
236
                $formAdd = new PlanningTaskForm($this->adapter, $currentCompany->id);
329
            } else  {
237
                $this->layout()->setTemplate('layout/layout-backend');
330
                $form = new PlanningTaskForm($this->adapter, $currentCompany->id);
238
                $viewModel = new ViewModel();
331
                $formFilter = new PlanningTaskHeaderForm($this->adapter, $currentCompany->id);
239
                $viewModel->setTemplate('leaders-linked/planning-tasks/index.phtml');
332
                
240
                $viewModel->setVariables([
333
                $this->layout()->setTemplate('layout/layout-backend');
241
                    'formAdd' => $formAdd,  
334
                $viewModel = new ViewModel();
242
                    'objective_uuid'=> $objective_uuid,
335
                $viewModel->setTemplate('leaders-linked/planning/tasks');
243
                    'goal_uuid'=> $goal_uuid,
336
                $viewModel->setVariables([
-
 
337
                    'form' => $form,
-
 
338
                    'formFilter' => $formFilter, 
-
 
339
                ]);
244
 
340
                return $viewModel ;
245
 
341
            }
-
 
342
        } else {
246
                ]);
343
            return new JsonModel([
247
                return $viewModel ;
344
                'success' => false,
248
            }
345
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
249
        } else {
-
 
250
            return new JsonModel([
-
 
251
                'success' => false,
-
 
252
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
253
            ]);
-
 
254
        }
-
 
255
    }
-
 
256
    public function addAction()
-
 
257
    {
-
 
258
      $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
259
        $currentUser = $currentUserPlugin->getUser();
-
 
260
        $currentCompany = $currentUserPlugin->getCompany();
-
 
Línea 261... Línea 346...
261
        $objective_uuid = $this->params()->fromRoute('objective_id');
346
            ]);
262
        $goal_uuid = $this->params()->fromRoute('goal_id');
-
 
263
        $request = $this->getRequest();
347
        }
264
        $planningObjectivesMapper = PlanningObjectivesMapper::getInstance($this->adapter);
-
 
265
        $objective = $planningObjectivesMapper->fetchOneByUuid($objective_uuid);
-
 
266
                       
348
    }
267
        if (!$objective) {
-
 
268
            $data = [
-
 
269
                'success' => false,
-
 
270
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
271
            ];
-
 
272
 
-
 
Línea -... Línea 349...
-
 
349
    
-
 
350
    
273
        
351
    
274
                return new JsonModel($data);
-
 
275
           
-
 
276
        }else{
352
    public function addAction()
277
            if($objective->company_id==$currentCompany->id){
353
    {
278
                $planningGoalsMapper = PlanningGoalsMapper::getInstance($this->adapter);
354
        
279
                $goals = $planningGoalsMapper->fetchOneByUuid($goal_uuid);
355
        $currentUserPlugin = $this->plugin('currentUserPlugin');
280
 
356
        $currentUser = $currentUserPlugin->getUser();
-
 
357
        $currentCompany = $currentUserPlugin->getCompany();
-
 
358
        
-
 
359
        $request = $this->getRequest();
-
 
360
        if($request->isPost()) {
-
 
361
            $goal_id = Functions::sanitizeFilterString($this->params()->fromRoute('goal_id'));
-
 
362
 
-
 
363
            $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
-
 
364
            $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
-
 
365
            
-
 
366
            if (!$planningGoal) {
-
 
367
                $data = [
Línea 281... Línea -...
281
                if(!$goals){
-
 
282
                    $data = [
-
 
283
                        'success' => false,
-
 
284
                        'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
285
                    ];
-
 
Línea 286... Línea 368...
286
 
368
                    'success' => false,
287
                
369
                    'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
370
                ];
-
 
371
                
288
                        return new JsonModel($data);
372
                return new JsonModel($data);
289
                }
373
            }
-
 
374
            
-
 
375
            if ($planningGoal->company_id != $currentCompany->id) {
-
 
376
                return new JsonModel([
-
 
377
                    'success' => false,
290
            }else{
378
                    'data' => 'ERROR_UNAUTHORIZED'
291
                $data = [
379
                ]);
-
 
380
            }
292
                    'success' => false,
381
            
-
 
382
            
-
 
383
            
-
 
384
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
293
                    'data' => 'ERROR_UNAUTHORIZED',
385
            $dataPost = $request->getPost()->toArray();
294
                ];
386
            
295
            
387
            if(!empty($dataPost['date_range'])) {
296
                    return new JsonModel($data);
-
 
297
            }     
-
 
298
          
-
 
299
        }
388
                $s = explode('-', $dataPost['date_range']);
300
        if($request->isPost()) {
389
                $start = trim($s[0]);
-
 
390
                $end = trim($s[1]);
301
            
391
                
302
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
392
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
303
            $dataPost = $request->getPost()->toArray();
393
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
-
 
394
                if(!$dtStart &&  !$dtEnd) {
-
 
395
                    $dataPost['date_range'] = '';
-
 
396
                }
-
 
397
            }
-
 
398
            
304
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : PlanningTask::STATUS_INACTIVE;
399
            
-
 
400
            
305
            if($dataPost['indicator']!=100){
401
            $form->setData($dataPost);
-
 
402
            
306
                $dataPost['evaluation']='';
403
            if($form->isValid()) {
307
                $dataPost['detour']='';
404
                $dataPost = (array) $form->getData();
Línea 308... Línea -...
308
            }
-
 
309
            $form->setData($dataPost);
405
                $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
310
          
406
   
-
 
407
                
311
            if($form->isValid()) {
408
                $hydrator = new ObjectPropertyHydrator();
-
 
409
                $planningTask = new PlanningTask();
-
 
410
                $planningTask->company_id = $planningGoal->company_id;
312
              
411
                $planningTask->period_id = $planningGoal->period_id;
-
 
412
                $planningTask->objective_id = $planningGoal->objective_id;
-
 
413
                $planningTask->goal_id = $planningGoal->id;
-
 
414
                
313
               
415
                $hydrator->hydrate($dataPost, $planningTask);
314
              
416
                
315
                $dataPost = (array) $form->getData();
417
                
316
                $dataPost['goal_id']=$goals->id;
418
                
317
 
419
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
318
                $hydrator = new ObjectPropertyHydrator();
420
                $result = $planningTaskMapper->insert($planningTask);
-
 
421
                
-
 
422
                if($result) {
319
                $planningTask = new PlanningTask();
423
                    $userMapper = UserMapper::getInstance($this->adapter);
-
 
424
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
320
                $hydrator->hydrate($dataPost, $planningTask);
425
                    
321
               
-
 
Línea -... Línea 426...
-
 
426
                    
-
 
427
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
322
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
428
                    foreach($user_ids as $user_id)
Línea 323... Línea 429...
323
                $result = $planningTaskMapper->insert($planningTask);
429
                    {
324
                
430
                        $user = $userMapper->fetchOneByUuid($user_id);
325
                
431
                        if($user) {
326
                if($result) {
432
                            $planningTaskUser = new PlanningTaskUser();
Línea 365... Línea 471...
365
                return new JsonModel([
471
                return new JsonModel([
366
                    'success'   => false,
472
                    'success'   => false,
367
                    'data'   => $messages
473
                    'data'   => $messages
368
                ]);
474
                ]);
369
            }
475
            }
370
 
-
 
371
        }else if ($request->isGet()) {
-
 
372
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
373
            $userMapper = UserMapper::getInstance($this->adapter);
-
 
374
            $datosCompanyUser = $companyUserMapper->fetchAllByCompanyId($currentCompany->id);
-
 
Línea 375... Línea -...
375
            
-
 
376
            $users=[];
-
 
377
 
-
 
378
            foreach($datosCompanyUser as $record){
-
 
379
                $datosUser = $userMapper->fetchOne($record->user_id);
-
 
380
                            
-
 
381
                    $user=[
-
 
382
                        'uuid'=>$datosUser->uuid,
-
 
383
                        'email'=>$datosUser->email,
-
 
384
                        'first_name'=>$datosUser->first_name,
-
 
385
                        'last_name'=>$datosUser->last_name,
-
 
386
                        
-
 
387
                    ];
-
 
388
                    array_push($users, $user);
-
 
389
                
-
 
390
            }
-
 
391
 
-
 
392
            return new JsonModel([
-
 
393
                'success' => true,
-
 
394
                'data' => $users
-
 
395
                
-
 
396
            ]);
476
            
397
        } else {
477
        } else {
398
            $data = [
478
            $data = [
399
                'success' => false,
479
                'success' => false,
400
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
480
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
Línea 401... Línea 481...
401
            ];
481
            ];
402
            
482
            
Línea 403... Línea 483...
403
            return new JsonModel($data);
483
            return new JsonModel($data);
-
 
484
        }
404
        }
485
        
405
        
486
        return new JsonModel($data);
406
        return new JsonModel($data);
487
        
407
    
488
        
408
    }
489
    }
409
 
490
    
-
 
491
    
Línea 410... Línea -...
410
 
-
 
411
 
492
    
412
     public function editAction(){
493
    public function editAction()
413
        
494
    {
-
 
495
        
-
 
496
        $currentUserPlugin = $this->plugin('currentUserPlugin');
414
      
497
        $currentUser = $currentUserPlugin->getUser();
415
        $currentUserPlugin = $this->plugin('currentUserPlugin');
498
        $currentCompany = $currentUserPlugin->getCompany();
416
        $currentUser = $currentUserPlugin->getUser();
499
        
Línea 417... Línea 500...
417
        $currentCompany = $currentUserPlugin->getCompany();
500
        
418
        $request = $this->getRequest();
501
        $request = $this->getRequest();
419
        $uuid = $this->params()->fromRoute('id');
502
        $uuid = $this->params()->fromRoute('id');
420
 
503
        
421
        
504
        
Línea 422... Línea 505...
422
        if(!$uuid) {
505
        if(!$uuid) {
423
            $data = [
506
            $data = [
424
                'success'   => false,
-
 
425
                'data'   => 'ERROR_INVALID_PARAMETER'
-
 
426
            ];
-
 
427
            
-
 
428
            return new JsonModel($data);
-
 
429
        }
-
 
430
 
-
 
431
        $objective_uuid = $this->params()->fromRoute('objective_id');
-
 
432
        $goal_uuid = $this->params()->fromRoute('goal_id');
-
 
433
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
434
        $currentCompany = $currentUserPlugin->getCompany();
-
 
435
        $planningObjectivesMapper = PlanningObjectivesMapper::getInstance($this->adapter);
-
 
436
        $objective = $planningObjectivesMapper->fetchOneByUuid($objective_uuid);
-
 
437
               
-
 
Línea 438... Línea -...
438
        if (!$objective) {
-
 
439
            $data = [
-
 
440
                'success' => false,
-
 
441
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
442
            ];
-
 
443
 
-
 
444
        
-
 
445
                return new JsonModel($data);
-
 
446
           
-
 
447
        }else{
-
 
448
            if($objective->company_id==$currentCompany->id){
-
 
449
                $planningGoalsMapper = PlanningGoalsMapper::getInstance($this->adapter);
-
 
450
                $goals = $planningGoalsMapper->fetchOneByUuid($goal_uuid);
-
 
451
 
-
 
452
                if(!$goals){
-
 
453
                    $data = [
-
 
454
                        'success' => false,
-
 
455
                        'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
456
                    ];
-
 
457
 
-
 
458
                
-
 
459
                        return new JsonModel($data);
-
 
460
                }
-
 
461
            }else{
-
 
462
                $data = [
-
 
463
                    'success' => false,
-
 
464
                    'data' => 'ERROR_UNAUTHORIZED',
-
 
465
                ];
-
 
466
            
507
                'success'   => false,
467
                    return new JsonModel($data);
508
                'data'   => 'ERROR_INVALID_PARAMETER'
468
            }
509
            ];
469
                
510
            
470
            
511
            return new JsonModel($data);
471
          
512
        }
472
        }
513
        
473
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
514
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
474
        $task = $planningTaskMapper->fetchOneByUuid($uuid);
515
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
475
       
516
        
476
        if (!$task) {
517
        if (!$planningTask) {
Línea -... Línea 518...
-
 
518
            $data = [
-
 
519
                'success' => false,
-
 
520
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
521
            ];
-
 
522
            
-
 
523
            return new JsonModel($data);
477
            $data = [
524
        }
478
                'success' => false,
525
        
479
                'data' => 'ERROR_RECORD_NOT_FOUND'
526
        if ($planningTask->company_id != $currentCompany->id) {
480
            ];
527
            return new JsonModel([
481
 
528
                'success' => false,
-
 
529
                'data' => 'ERROR_UNAUTHORIZED'
-
 
530
            ]);
-
 
531
        }
-
 
532
        
-
 
533
        if($request->isPost()) {
-
 
534
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
-
 
535
            $dataPost = $request->getPost()->toArray();
-
 
536
            $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
-
 
537
            if(empty($dataPost['date_range'])) {
-
 
538
                $dataPost['start'] = date('Y-m-d');
-
 
539
                $dataPost['end'] = date('Y-m-d');
-
 
540
            } else {
-
 
541
                
-
 
542
                $s = explode('-', $dataPost['date_range']);
-
 
543
                $start = trim($s[0]);
-
 
544
                $end = trim($s[1]);
-
 
545
                
-
 
546
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
-
 
547
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
-
 
548
                if($dtStart && $dtEnd) {
-
 
549
                    $dataPost['start'] = $dtStart->format('Y-m-d');
-
 
550
                    $dataPost['end'] = $dtEnd->format('Y-m-d');
482
            return new JsonModel($data);
551
                    
Línea 483... Línea 552...
483
        }
552
                } else {
484
        
553
                    $dataPost['start'] = date('Y-m-d');
Línea 485... Línea 554...
485
 
554
                    $dataPost['end'] = date('Y-m-d');
486
        if($request->isPost()) {
555
                }
487
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
556
            }
Línea 488... Línea 557...
488
            $dataPost = $request->getPost()->toArray();
557
            
489
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : PlanningTask::STATUS_INACTIVE;
-
 
490
            $form->setData($dataPost);
558
            
491
            
559
            $form->setData($dataPost);
492
            if($form->isValid()) {
560
            
-
 
561
            if($form->isValid()) {
493
                $dataPost = (array) $form->getData();
562
                $dataPost = (array) $form->getData();
-
 
563
                
494
                
564
                $hydrator = new ObjectPropertyHydrator();
-
 
565
                $hydrator->hydrate($dataPost, $planningTask);
-
 
566
                $result = $planningTaskMapper->update($planningTask);
-
 
567
                
495
                $hydrator = new ObjectPropertyHydrator();
568
                if($result) {
-
 
569
                    $userMapper = UserMapper::getInstance($this->adapter);
496
                $hydrator->hydrate($dataPost, $task);
570
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
-
 
571
                    $planningTaskUserMapper->deleteAllByTaskId($planningTask->id);
497
                $result = $planningTaskMapper->update($task);
572
                    
498
                
573
                    
499
                if($result) {
574
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
-
 
575
                    foreach($user_ids as $user_id)
500
 
576
                    {
-
 
577
                        $user = $userMapper->fetchOneByUuid($user_id);
501
                    $userMapper = UserMapper::getInstance($this->adapter);
578
                        if($user) {
502
                    $PlanningTaskMemberMapper = PlanningTaskMembersMapper::getInstance($this->adapter);
-
 
503
                    $PlanningTaskMemberMapper->dissableMembersTask($task->id);
579
                            $planningTaskUser = new PlanningTaskUser();
504
 
580
                            $planningTaskUser->company_id = $planningTask->company_id;
505
                    foreach( $dataPost['who'] as $record2){
581
                            $planningTaskUser->period_id = $planningTask->period_id;
Línea 506... Línea 582...
506
                        $PlanningTaskMember = new PlanningTaskMembers();
582
                            $planningTaskUser->objective_id = $planningTask->objective_id;
507
                        $datosUser = $userMapper->fetchOneByUuid($record2);
583
                            $planningTaskUser->goal_id = $planningTask->goal_id;
508
                        $PlanningTaskMember->task_id = $task->id;
584
                            $planningTaskUser->task_id = $planningTask->id;
509
                        $PlanningTaskMember->user_id = $datosUser->id;
585
                            $planningTaskUser->user_id = $user->id;
Línea 539... Línea 615...
539
                return new JsonModel([
615
                return new JsonModel([
540
                    'success'   => false,
616
                    'success'   => false,
541
                    'data'   => $messages
617
                    'data'   => $messages
542
                ]);
618
                ]);
543
            }
619
            }
544
        }else if ($request->isGet()) {
620
        } else if ($request->isGet()) {
-
 
621
          
545
            $hydrator = new ObjectPropertyHydrator();
622
            $user_ids = [];
546
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
-
 
623
            
547
            $userMapper = UserMapper::getInstance($this->adapter);
624
            $userMapper = UserMapper::getInstance($this->adapter);
548
            $datosCompanyUser = $companyUserMapper->fetchAllByCompanyId($currentCompany->id);
625
            $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
Línea 549... Línea -...
549
            
-
 
550
            $allUsers=[];
-
 
551
 
-
 
552
            foreach($datosCompanyUser as $record){
626
            
553
                $datosUser = $userMapper->fetchOne($record->user_id);
-
 
554
                            
627
            $records = $planningTaskUserMapper->fetchAllByTaskId($planningTask->id);
555
                    $allUser=[
-
 
556
                        'uuid'=>$datosUser->uuid,
-
 
557
                        'email'=>$datosUser->email,
-
 
558
                        'first_name'=>$datosUser->first_name,
-
 
559
                        'last_name'=>$datosUser->last_name,
-
 
560
                        
-
 
561
                    ];
-
 
562
                    array_push($allUsers, $allUser);
-
 
563
                
628
            foreach($records as $record)
564
            }
-
 
565
            $PlanningTaskMemberMapper = PlanningTaskMembersMapper::getInstance($this->adapter);
-
 
566
            $datosUsuarios = $PlanningTaskMemberMapper->fetchAll($task->id);
-
 
567
            $users=[];
-
 
568
            foreach($datosUsuarios as $record){
629
            {
569
                $datosUser = $userMapper->fetchOne($record->user_id);
-
 
570
                            
630
                $user = $userMapper->fetchOne($record->user_id);
571
                    $user=[
631
                if($user) {
572
                        'uuid'=>$datosUser->uuid, 
632
                    array_push($user_ids, $user->uuid);
573
                    ];
-
 
574
                    array_push($users, $user);
633
                }
-
 
634
            }
575
            }
635
            
-
 
636
            
576
 
637
            
577
            $data = [
638
            $data = [
-
 
639
                'success' => true,
-
 
640
                'data' => [
-
 
641
                    'title' => $planningTask->title,
578
                'success' => true,
642
                    'description' => $planningTask->description,
579
                'data' => $hydrator->extract($task),
643
                    'start' => $planningTask->start,
-
 
644
                    'end' => $planningTask->end,
-
 
645
                    'status' => $planningTask->status,
-
 
646
                    'progress' => $planningTask->progress,
-
 
647
                    'cost' => $planningTask->cost,
-
 
648
                    'place' => $planningTask->place,
-
 
649
                    'how' => $planningTask->how,
-
 
650
                    'detour' => $planningTask->detour,
-
 
651
                    'evaluation' => $planningTask->evaluation,
-
 
652
                    'priority' => $planningTask->priority,
580
                'all_users'=> $allUsers,
653
                    'urgent' => $planningTask->urgent,
-
 
654
                    'user_id' => $user_ids,
-
 
655
                    'hours' => $planningTask->hours,
-
 
656
 
581
                'users'=> $users
657
                ]
Línea 582... Línea 658...
582
            ];
658
            ];
583
            
659
            
584
            return new JsonModel($data);
660
            return new JsonModel($data);
Línea 590... Línea 666...
590
            
666
            
591
            return new JsonModel($data);
667
            return new JsonModel($data);
Línea 592... Línea 668...
592
        }
668
        }
593
        
669
        
594
        return new JsonModel($data);
670
        return new JsonModel($data);
595
                
671
        
596
    }
672
    }
597
 
673
    
598
 
674
    
599
 
675
    
-
 
676
    
600
 
677
    public function deleteAction()
601
    public function deleteAction(){
678
    {
602
        $currentUserPlugin = $this->plugin('currentUserPlugin');
679
        $currentUserPlugin = $this->plugin('currentUserPlugin');
603
        $currentCompany = $currentUserPlugin->getCompany();
680
        $currentCompany = $currentUserPlugin->getCompany();
604
        $currentUser = $currentUserPlugin->getUser();
681
        $currentUser = $currentUserPlugin->getUser();
605
 
682
        
Línea 606... Línea 683...
606
        $request = $this->getRequest();
683
        $request = $this->getRequest();
607
        $uuid = $this->params()->fromRoute('id');
684
        $uuid = $this->params()->fromRoute('id');
608
        
685
        
609
 
686
        
610
        if (!$uuid) {
687
        if(!$uuid) {
611
            $data = [
688
            $data = [
612
                'success' => false,
689
                'success'   => false,
613
                'data' => 'ERROR_INVALID_PARAMETER'
690
                'data'   => 'ERROR_INVALID_PARAMETER'
614
            ];
691
            ];
615
 
-
 
616
            return new JsonModel($data);
-
 
617
        }
-
 
618
        $objective_uuid = $this->params()->fromRoute('objective_id');
-
 
-
 
692
            
619
        $goal_uuid = $this->params()->fromRoute('goal_id');
693
            return new JsonModel($data);
620
        $currentUserPlugin = $this->plugin('currentUserPlugin');
694
        }
621
        $currentCompany = $currentUserPlugin->getCompany();
695
        
622
        $planningObjectivesMapper = PlanningObjectivesMapper::getInstance($this->adapter);
696
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
623
        $objective = $planningObjectivesMapper->fetchOneByUuid($objective_uuid);
697
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
624
               
698
        
625
        if (!$objective) {
699
        if (!$planningTask) {
626
            $data = [
700
            $data = [
627
                'success' => false,
-
 
628
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
629
            ];
-
 
630
                return new JsonModel($data);
-
 
631
           
-
 
632
        }else{
-
 
633
            if($objective->company_id==$currentCompany->id){
-
 
634
                $planningGoalsMapper = PlanningGoalsMapper::getInstance($this->adapter);
-
 
635
                $goals = $planningGoalsMapper->fetchOneByUuid($goal_uuid);
-
 
636
 
-
 
637
                if(!$goals){
-
 
638
                    $data = [
-
 
639
                        'success' => false,
-
 
640
                        'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
641
                    ];
-
 
642
 
-
 
643
                
-
 
644
                        return new JsonModel($data);
-
 
645
                }
-
 
646
            }else{
-
 
647
                $data = [
-
 
Línea 648... Línea 701...
648
                    'success' => false,
701
                'success' => false,
649
                    'data' => 'ERROR_UNAUTHORIZED',
-
 
650
                ];
-
 
651
            
702
                'data' => 'ERROR_RECORD_NOT_FOUND'
652
                    return new JsonModel($data);
-
 
653
            }  
-
 
654
          
703
            ];
655
        }
704
            
656
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
705
            return new JsonModel($data);
657
        $task = $planningTaskMapper->fetchOneByUuid($uuid);
706
        }
658
       
707
        
659
        if (!$task) {
708
        if ($planningTask->company_id != $currentCompany->id) {
660
            $data = [
-
 
661
                'success' => false,
-
 
662
                'data' => 'ERROR_RECORD_NOT_FOUND'
709
            return new JsonModel([
Línea 663... Línea 710...
663
            ];
710
                'success' => false,
664
 
711
                'data' => 'ERROR_UNAUTHORIZED'
665
            return new JsonModel($data);
712
            ]);
666
        }
713
        }
667
        
714
        
668
    
715
        
669
        if ($request->isPost()) {
716
        if ($request->isPost()) {
670
 
717
            
671
 
718
            
672
            $result = $planningTaskMapper->delete($task->id);
719
            $result = $planningTaskMapper->delete($planningTask);
673
            if ($result) {
720
            if ($result) {
674
                $this->logger->info('Se borro la tarea con el titulo ' . $task->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
721
                $this->logger->info('Se borro el tarea de la planificación :' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
675
 
722
                
676
                $data = [
723
                $data = [
677
                    'success' => true,
724
                    'success' => true,
678
                    'data' => 'LABEL_RECORD_DELETED'
725
                    'data' => 'LABEL_RECORD_DELETED'
679
                ];
726
                ];
680
            } else {
727
            } else {
681
 
728
                
682
                $data = [
729
                $data = [
683
                    'success' => false,
730
                    'success' => false,
684
                    'data' => $planningTaskMapper->getError()
731
                    'data' => $planningTaskMapper->getError()
685
                ];
732
                ];
686
 
733
                
687
                return new JsonModel($data);
734
                return new JsonModel($data);
688
            }
735
            }
689
        } else {
736
        } else {
690
            $data = [
737
            $data = [
691
                'success' => false,
738
                'success' => false,
692
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
739
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
693
            ];
740
            ];
694
 
741
            
695
            return new JsonModel($data);
-
 
696
        }
-
 
697
 
-
 
698
        return new JsonModel($data);
-
 
699
    }
742
            return new JsonModel($data);
700
    
743
        }