Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 17055 Rev 17058
Línea 83... Línea 83...
83
     * {@inheritDoc}
83
     * {@inheritDoc}
84
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
84
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
85
     */
85
     */
86
    public function indexAction()
86
    public function indexAction()
87
    {
87
    {
88
        $request = $this->getRequest();
88
        try {
89
        
-
 
90
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
91
        $currentUser = $currentUserPlugin->getUser();
-
 
92
        $currentCompany = $currentUserPlugin->getCompany(); 
-
 
93
        
-
 
94
 
-
 
95
        
-
 
96
        
-
 
97
        $request = $this->getRequest();
89
            $request = $this->getRequest();
98
        if($request->isGet()) {
-
 
99
            
-
 
Línea -... Línea 90...
-
 
90
            
100
            
91
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
92
            $currentUser = $currentUserPlugin->getUser();
Línea 101... Línea 93...
101
            $headers  = $request->getHeaders();
93
            $currentCompany = $currentUserPlugin->getCompany(); 
102
            
94
            
103
            $isJson = false;
95
            $request = $this->getRequest();
Línea 104... Línea 96...
104
            if($headers->has('Accept')) {
96
            if($request->isGet()) {
105
                $accept = $headers->get('Accept');
-
 
106
                
97
                $headers  = $request->getHeaders();
107
                $prioritized = $accept->getPrioritized();
98
                
Línea 108... Línea -...
108
                
-
 
109
                foreach($prioritized as $key => $value) {
99
                $isJson = false;
110
                    $raw = trim($value->getRaw());
-
 
Línea -... Línea 100...
-
 
100
                if($headers->has('Accept')) {
-
 
101
                    $accept = $headers->get('Accept');
-
 
102
                    
-
 
103
                    $prioritized = $accept->getPrioritized();
-
 
104
                    
-
 
105
                    foreach($prioritized as $key => $value) {
-
 
106
                        $raw = trim($value->getRaw());
111
                    
107
                        
112
                    if(!$isJson) {
-
 
113
                        $isJson = strpos($raw, 'json');
-
 
114
                    }
-
 
115
                    
-
 
116
                }
-
 
117
            }
-
 
118
            
-
 
119
            if($isJson) {
-
 
120
                
-
 
121
                
-
 
122
                $search = $this->params()->fromQuery('search', []);
-
 
123
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
-
 
124
                
-
 
125
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
-
 
126
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
-
 
127
                $order =  $this->params()->fromQuery('order', []);
-
 
128
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
-
 
129
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
-
 
130
                
-
 
131
                $fields =  ['name'];
-
 
132
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
-
 
133
                
-
 
Línea 134... Línea -...
134
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
-
 
135
                    $order_direction = 'ASC';
-
 
136
                }
-
 
137
                
-
 
138
                
-
 
139
                
-
 
140
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
-
 
141
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/add');
-
 
142
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/edit');
-
 
143
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/delete');
-
 
144
                $allowUsers = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/users');
-
 
145
           
-
 
146
                $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
147
                $paginator = $capsuleMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
-
 
148
                
-
 
149
                
-
 
150
                $microlearningCapsuleUserMapper = MicrolearningCapsuleUserMapper::getInstance($this->adapter);
-
 
151
                 $records = $paginator->getCurrentItems(); 
108
                        if(!$isJson) {
152
            
-
 
153
                 $storage = Storage::getInstance($this->config, $this->adapter);
-
 
154
                 $path = $storage->getPathMicrolearningCapsule();
-
 
155
                 
-
 
156
 
-
 
157
                $items = [];
-
 
158
                foreach($records as $record)
-
 
159
                {
-
 
160
                    $total_users        = $microlearningCapsuleUserMapper->fetchCountUsersByCompanyIdAndCapsuleId($currentCompany->id,  $record->id);
-
 
161
                    $total_users_active = $microlearningCapsuleUserMapper->fetchCountUsersActiveByCompanyIdAndCapsuleId($currentCompany->id, $record->id);
-
 
162
                    
-
 
163
                    switch($record->status) {
-
 
164
                        case  MicrolearningCapsule::STATUS_ACTIVE :
-
 
165
                            $status = 'LABEL_ACTIVE';
-
 
166
                            break;
-
 
167
                            
-
 
168
                        case  MicrolearningCapsule::STATUS_INACTIVE :
-
 
169
                            $status = 'LABEL_INACTIVE';
109
                            $isJson = strpos($raw, 'json');
170
                            break;
-
 
171
                            
-
 
172
                        default : 
-
 
173
                            $status = '';
110
                        }
174
                            break;
-
 
175
                    }
-
 
176
                    
-
 
177
                    
111
                    }
178
                    switch($record->privacy) {
-
 
179
                        case  MicrolearningCapsule::PRIVACY_PUBLIC :
-
 
180
                            $privacy = 'LABEL_PUBLIC';
-
 
181
                            break;
-
 
182
                            
-
 
183
                        case  MicrolearningCapsule::PRIVACY_PRIVATE :
-
 
184
                            $privacy = 'LABEL_PRIVATE';
-
 
185
                            break;
112
                }
186
                            
-
 
187
                        default :
113
                
188
                            $privacy = '';
-
 
189
                            break;
-
 
190
                    }
-
 
191
                    
114
                if($isJson) {
192
                    switch($record->type) {
-
 
193
                        case  MicrolearningCapsule::TYPE_FREE :
-
 
194
                            $type = 'LABEL_FREE';
-
 
195
                            break;
115
                    try {
196
                            
-
 
197
                        case  MicrolearningCapsule::TYPE_PRIVATE :
-
 
198
                            $type = 'LABEL_PRIVATE';
-
 
199
                            break;
-
 
200
                            
-
 
201
                        case  MicrolearningCapsule::TYPE_SELLING :
-
 
202
                            $type = 'LABEL_SELLING';
-
 
203
                            break;
-
 
204
 
-
 
205
                            
-
 
206
                        default :
-
 
207
                            $privacy = '';
-
 
208
                            break;
-
 
209
                    }
-
 
210
 
-
 
211
                    $params = [
-
 
212
                        'capsule_uuid'  => $record->uuid
-
 
213
                    ];
-
 
214
                    
-
 
215
 
-
 
216
                    $item = [
-
 
217
               
-
 
218
                        'name' => $record->name,
116
                        $search = $this->params()->fromQuery('search', []);
219
                        'details' => [
117
                        $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
220
                            'status' => $status,
-
 
221
                            'privacy' => $privacy,
118
                        
222
                            'type' => $type,
119
                        $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
223
                            'cost' => $record->cost,
120
                        $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
224
                            'total_users' => $total_users,
-
 
225
                            'total_users_active' => $total_users_active,
-
 
226
                         ],    
-
 
227
         
-
 
228
                        'images' => [
-
 
229
                            'image' =>  $storage->getGenericImage($path, $record->uuid, $record->image),
-
 
230
                            'marketplace' => $record->marketplace ?  $storage->getGenericImage($path, $record->uuid, $record->marketplace) : '',
-
 
231
                        ] ,
-
 
232
                        'actions' => [ 
-
 
233
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('microlearning/content/capsules/edit', $params)  : '', 
-
 
234
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('microlearning/content/capsules/delete', $params)  : '', 
-
 
235
                            'link_total_users' => $allowUsers && $total_users ? $this->url()->fromRoute('microlearning/content/capsules/users', [
-
 
236
                                'capsule_uuid'  => $record->uuid,
-
 
237
                                'type' => 'all'
-
 
Línea -... Línea 121...
-
 
121
                        $order =  $this->params()->fromQuery('order', []);
-
 
122
                        $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
-
 
123
                        $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
Línea -... Línea 124...
-
 
124
                        
-
 
125
                        $fields =  ['name'];
-
 
126
                        $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
-
 
127
                        
-
 
128
                        if(!in_array($order_direction, ['ASC', 'DESC'])) {
-
 
129
                            $order_direction = 'ASC';
-
 
130
                        }
-
 
131
                        
-
 
132
                        $acl = $this->getEvent()->getViewModel()->getVariable('acl');
-
 
133
                        $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/add');
238
                             ])  : '',
134
                        $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/edit');
Línea -... Línea 135...
-
 
135
                        $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/delete');
-
 
136
                        $allowUsers = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/capsules/users');
-
 
137
                   
-
 
138
                        $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
139
                        $paginator = $capsuleMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
-
 
140
                        
-
 
141
                        $microlearningCapsuleUserMapper = MicrolearningCapsuleUserMapper::getInstance($this->adapter);
-
 
142
                        $records = $paginator->getCurrentItems(); 
-
 
143
                    
-
 
144
                        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
145
                        $path = $storage->getPathMicrolearningCapsule();
-
 
146
                        
-
 
147
                        $items = [];
-
 
148
                        foreach($records as $record) {
-
 
149
                            $total_users        = $microlearningCapsuleUserMapper->fetchCountUsersByCompanyIdAndCapsuleId($currentCompany->id,  $record->id);
-
 
150
                            $total_users_active = $microlearningCapsuleUserMapper->fetchCountUsersActiveByCompanyIdAndCapsuleId($currentCompany->id, $record->id);
-
 
151
                            
-
 
152
                            switch($record->status) {
-
 
153
                                case  MicrolearningCapsule::STATUS_ACTIVE :
-
 
154
                                    $status = 'LABEL_ACTIVE';
-
 
155
                                    break;
-
 
156
                                    
-
 
157
                                case  MicrolearningCapsule::STATUS_INACTIVE :
-
 
158
                                    $status = 'LABEL_INACTIVE';
-
 
159
                                    break;
-
 
160
                                    
-
 
161
                                default : 
-
 
162
                                    $status = '';
-
 
163
                                    break;
-
 
164
                            }
-
 
165
                            
-
 
166
                            switch($record->privacy) {
-
 
167
                                case  MicrolearningCapsule::PRIVACY_PUBLIC :
-
 
168
                                    $privacy = 'LABEL_PUBLIC';
-
 
169
                                    break;
-
 
170
                                    
-
 
171
                                case  MicrolearningCapsule::PRIVACY_PRIVATE :
-
 
172
                                    $privacy = 'LABEL_PRIVATE';
-
 
173
                                    break;
-
 
174
                                    
-
 
175
                                default :
-
 
176
                                    $privacy = '';
-
 
177
                                    break;
-
 
178
                            }
-
 
179
                            
-
 
180
                            switch($record->type) {
-
 
181
                                case  MicrolearningCapsule::TYPE_FREE :
-
 
182
                                    $type = 'LABEL_FREE';
-
 
183
                                    break;
-
 
184
                                    
-
 
185
                                case  MicrolearningCapsule::TYPE_PRIVATE :
-
 
186
                                    $type = 'LABEL_PRIVATE';
-
 
187
                                    break;
-
 
188
                                    
-
 
189
                                case  MicrolearningCapsule::TYPE_SELLING :
-
 
190
                                    $type = 'LABEL_SELLING';
-
 
191
                                    break;
-
 
192
                                    
-
 
193
                                default :
-
 
194
                                    $privacy = '';
-
 
195
                                    break;
-
 
196
                            }
-
 
197
 
-
 
198
                            $params = [
-
 
199
                                'capsule_uuid'  => $record->uuid
-
 
200
                            ];
-
 
201
                            
-
 
202
                            $item = [
-
 
203
                                'name' => $record->name,
-
 
204
                                'details' => [
-
 
205
                                    'status' => $status,
-
 
206
                                    'privacy' => $privacy,
-
 
207
                                    'type' => $type,
-
 
208
                                    'cost' => $record->cost,
-
 
209
                                    'total_users' => $total_users,
-
 
210
                                    'total_users_active' => $total_users_active,
-
 
211
                                ],    
-
 
212
                                'images' => [
-
 
213
                                    'image' =>  $storage->getGenericImage($path, $record->uuid, $record->image),
-
 
214
                                    'marketplace' => $record->marketplace ?  $storage->getGenericImage($path, $record->uuid, $record->marketplace) : '',
-
 
215
                                ],
-
 
216
                                'actions' => [ 
-
 
217
                                    'link_edit' => $allowEdit ? $this->url()->fromRoute('microlearning/content/capsules/edit', $params)  : '', 
-
 
218
                                    'link_delete' => $allowDelete ? $this->url()->fromRoute('microlearning/content/capsules/delete', $params)  : '', 
-
 
219
                                    'link_total_users' => $allowUsers && $total_users ? $this->url()->fromRoute('microlearning/content/capsules/users', [
239
                            'link_total_users_actives' => $allowUsers && $total_users_active ? $this->url()->fromRoute('microlearning/content/capsules/users', [
220
                                        'capsule_uuid'  => $record->uuid,
240
                                'capsule_uuid'  => $record->uuid,
221
                                        'type' => 'all'
-
 
222
                                    ])  : '',
-
 
223
                                    'link_total_users_actives' => $allowUsers && $total_users_active ? $this->url()->fromRoute('microlearning/content/capsules/users', [
-
 
224
                                        'capsule_uuid'  => $record->uuid,
-
 
225
                                        'type' => 'active'
-
 
226
                                    ])  : '', 
-
 
227
                                ],
-
 
228
                            ];
-
 
229
                            
-
 
230
                            array_push($items, $item);
-
 
231
                        }
-
 
232
                        
-
 
233
                        return new JsonModel([
-
 
234
                            'success' => true,
-
 
235
                            'data' => [
-
 
236
                                'link_add' => $allowAdd ? $this->url()->fromRoute('microlearning/content/capsules/add' )  : '', 
-
 
237
                                'items' => $items,
-
 
238
                                'total' => $paginator->getTotalItemCount(),
-
 
239
                            ]
-
 
240
                        ]);
-
 
241
                    } catch (\Exception $e) {
-
 
242
                        $this->logger->err('Error in indexAction: ' . $e->getMessage());
-
 
243
                        return new JsonModel([
-
 
244
                            'success' => false,
-
 
245
                            'data' => 'ERROR_INTERNAL_SERVER_ERROR'
-
 
246
                        ]);
-
 
247
                    }
-
 
248
                } else {
-
 
249
                    $image_size = $this->config['leaderslinked.image_sizes.microlearning_image_upload'];
-
 
250
                    $marketplace_size = $this->config['leaderslinked.image_sizes.marketplace'];
-
 
251
                    
-
 
252
                    $form = new CapsuleForm($this->adapter, $currentCompany->id);
-
 
253
                    $formAdd = new CapsuleAddForm($currentCompany->internal);
-
 
254
                    $formEdit = new CapsuleEditForm($currentCompany->internal);
-
 
255
 
-
 
256
                    $this->layout()->setTemplate('layout/layout-backend.phtml');
-
 
257
                    $viewModel = new ViewModel();
-
 
258
                    $viewModel->setTemplate('leaders-linked/microlearning-capsules/index.phtml');
241
                                'type' => 'active'
259
                    $viewModel->setVariables([
242
                            ])  : '', 
-
 
243
                        ] ,
-
 
244
                        
-
 
245
                        
-
 
246
                     ];
-
 
247
                    
-
 
248
 
-
 
249
                    array_push($items, $item);
-
 
250
                }
-
 
251
 
-
 
252
 
-
 
253
                
-
 
254
                return new JsonModel([
-
 
255
                    'success' => true,
-
 
256
                    'data' => [
-
 
257
                        'link_add' => $allowAdd ? $this->url()->fromRoute('microlearning/content/capsules/add' )  : '', 
-
 
258
                        'items' => $items,
-
 
259
                        'total' => $paginator->getTotalItemCount(),
260
                       'form' => $form,
260
                    ]
-
 
261
                ]);
-
 
262
                
-
 
263
 
-
 
264
            
-
 
265
 
-
 
266
                
-
 
267
                
-
 
268
            } else {
-
 
269
 
261
                       'formAdd' => $formAdd,
270
                $image_size = $this->config['leaderslinked.image_sizes.microlearning_image_upload'];
-
 
271
                $marketplace_size = $this->config['leaderslinked.image_sizes.marketplace'];
-
 
272
                
262
                       'formEdit' => $formEdit,
273
                $form = new CapsuleForm($this->adapter, $currentCompany->id);
-
 
274
                $formAdd = new CapsuleAddForm($currentCompany->internal);
-
 
275
                $formEdit = new CapsuleEditForm($currentCompany->internal);
-
 
276
 
263
                       'company_uuid' => $currentCompany->uuid,
277
                $this->layout()->setTemplate('layout/layout-backend.phtml');
-
 
278
                $viewModel = new ViewModel();
-
 
279
                $viewModel->setTemplate('leaders-linked/microlearning-capsules/index.phtml');
264
                       'image_size' => $image_size,
280
                $viewModel->setVariables([
-
 
281
                   'form' => $form,
265
                       'marketplace_size' => $marketplace_size,
282
                   'formAdd' => $formAdd,
-
 
283
                   'formEdit' => $formEdit,
266
                    ]);
-
 
267
                    return $viewModel;
284
                   'company_uuid' => $currentCompany->uuid,
268
                }
285
                   'image_size' => $image_size,
269
            } else {
286
                   'marketplace_size' => $marketplace_size,
270
                return new JsonModel([
287
 
271
                    'success' => false,
288
                ]);
272
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
289
                return $viewModel ;
273
                ]);
Línea 290... Línea 274...
290
            }
274
            }