Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17213 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16815 stevensc 1
<?php
1 www 2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
 
7
 
8
//$routeAdd       = $this->url('users/add');
9
$routeDatatable = $this->url('users');
10
$routeDashboard = $this->url('dashboard');
15460 efrain 11
$routeUpload    = $this->url('users/upload');
1 www 12
 
13
 
14
$allowChangePassword    = $acl->isAllowed($roleName, 'users/change-password') ? 1 : 0;
15
$allowUnblock           = $acl->isAllowed($roleName, 'users/unblock') ? 1 : 0;
15460 efrain 16
$allowUpload            = $acl->isAllowed($roleName, 'users/upload') ? 1 : 0;
16248 efrain 17
$allowChangeType        = $acl->isAllowed($roleName, 'users/change-type') ? 1 : 0;
1 www 18
 
16822 efrain 19
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
20
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
1 www 21
 
16822 efrain 22
$this->inlineScript()->appendFile($this->basePath('assets/vendors/ckeditor/ckeditor.js'));
1 www 23
 
16822 efrain 24
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
25
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.css'));
1 www 26
 
16822 efrain 27
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
28
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
29
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
30
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
1 www 31
 
32
 
16822 efrain 33
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
34
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
1 www 35
 
36
 
37
 
15460 efrain 38
 
16822 efrain 39
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/css/fileinput.min.css'));
40
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fa/theme.css'));
15460 efrain 41
 
16843 efrain 42
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/piexif.js'));
43
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/sortable.js'));
16822 efrain 44
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/fileinput.js'));
45
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/locales/es.js'));
46
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/fa/theme.js'));
47
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fa/theme.js'));
48
 
49
 
1 www 50
$status_active = \LeadersLinked\Model\User::STATUS_ACTIVE;
51
 
52
$blocked = \LeadersLinked\Model\User::BLOCKED_YES;
53
 
54
$email_verified = \LeadersLinked\Model\User::EMAIL_VERIFIED_YES;
55
 
56
$this->inlineScript()->captureStart();
57
echo <<<JS
58
    jQuery( document ).ready(function( $ ) {
59
        $.validator.addMethod('passwordStrengthCheck', function(value) {
60
            return /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$^x%x*-]).{6,16}$/.test(value)
61
        }, 'ERROR_PASSWORD_STRENGTH');
62
 
63
        $.validator.setDefaults({
64
            debug: true,
65
            highlight: function(element) {
66
                $(element).closest('.sn-field').addClass('sn-field-has-error');
67
            },
68
            unhighlight: function(element) {
69
                $(element).closest('.sn-field').removeClass('sn-field-has-error');
70
            },
71
            errorElement: 'div',
72
            errorClass: 'sn-field-invalid-feedback',
73
            errorPlacement: function(error, element) {
74
                console.log(element);
75
 
76
                if(element.parent('.sn-field').length) {
77
                    error.insertAfter(element.parent());
78
                } else if (element.parent('.fgt-sec').length) {
79
                    error.insertAfter(element.parent());
80
                } else {
81
                    error.insertAfter(element);
82
                }
83
            }
84
        });
85
 
86
 
87
 
88
        var allowChangePassword = $allowChangePassword;
89
        var allowUnblock = $allowUnblock;
16248 efrain 90
        var allowChangeType = $allowChangeType;
1 www 91
 
92
 
93
        var gridTable = $('#gridTable').dataTable( {
94
            'processing': true,
95
            'serverSide': true,
96
            'searching': true,
97
            'order': [[ 1, 'asc' ]],
98
            'ordering':  true,
99
            'ordenable' : true,
100
            'responsive': true,
101
            'select' : false,
102
        	'paging': true,
103
            'pagingType': 'simple_numbers',
104
    		'ajax': {
105
    			'url' : '$routeDatatable',
106
    			'type' : 'get',
107
                'beforeSend': function (request) {
108
                  NProgress.start();
109
                },
16299 efrain 110
                'data' : function(data) {
111
                    data.network_id = $('#form-filter #network_id').val();
112
                } ,
1 www 113
                'dataFilter': function(response) {
114
                    var response = jQuery.parseJSON( response );
115
 
116
                    var json                = {};
117
                    json.recordsTotal       = 0;
118
                    json.recordsFiltered    = 0;
119
                    json.data               = [];
120
 
121
 
122
                    if(response.success) {
123
                        json.recordsTotal       = response.data.total;
124
                        json.recordsFiltered    = response.data.total;
125
                        json.data               = response.data.items;
126
                    } else {
127
                        $.fn.showError(response.data)
128
                    }
129
 
130
                    return JSON.stringify( json );
131
                }
132
    		},
133
            'language' : {
134
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
135
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
136
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
137
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
138
                'sInfo':           'LABEL_DATATABLE_SINFO',
139
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
140
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
141
                'sInfoPostFix':    '',
142
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
143
                'sUrl':            '',
144
                'sInfoThousands':  ',',
145
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
146
                'oPaginate': {
147
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
148
                    'sLast':     'LABEL_DATATABLE_SLAST',
149
                    'sNext':     'LABEL_DATATABLE_SNEXT',
150
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
151
                },
152
                'oAria': {
153
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
154
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
155
                },
156
            },
157
            'drawCallback': function( settings ) {
158
                NProgress.done();
16822 efrain 159
 
1 www 160
            },
161
            'aoColumns': [
162
                { 'mDataProp': 'first_name' },
163
                { 'mDataProp': 'last_name' },
164
                { 'mDataProp': 'email' },
165
                { 'mDataProp': 'details' },
166
                { 'mDataProp': 'actions' },
167
    	    ],
168
            'columnDefs': [
169
                {
170
                    'targets': 0,
171
                    'className' : 'text-vertical-middle',
172
                    'render' : function ( data, type, row ) {
16299 efrain 173
                        if(row['actions']['link_profile']) {
174
                            var s =  data + '<br>';
16932 efrain 175
                            s = s + '<button class="btn btn-default btn-view-profile" data-href="' +row['actions']['link_profile']+ '"><i class="fa fa-external-link-alt"></button>';
16299 efrain 176
 
177
                        } else {
178
                            var s =  data;
179
 
180
                        }
181
 
1 www 182
                         return s;
183
                    }
184
                },
185
                {
186
                    'targets': 1,
187
                    'className' : 'text-vertical-middle',
188
                },
189
                {
190
                    'targets': 2,
191
                    'className' : 'text-vertical-middle',
192
                },
193
                {
194
                    'targets': -2,
195
                    'orderable': false,
196
                    'render' : function ( data, type, row ) {
197
                        var s =  'LABEL_STATUS : ' + data['status'] + '<br>';
198
                        s = s + 'LABEL_BLOCKED : ' + data['blocked'] + '<br>';
199
                        s = s + 'LABEL_EMAIL_VERIFIED : ' + data['email_verified'] + '<br>';
200
                        s = s + 'LABEL_LOGIN_ATTEMP : ' + data['login_attempt'] + '<br>';
16248 efrain 201
                        s = s + 'LABEL_TYPE : ' + data['user_type'] + '<br>';
1 www 202
                        return s;
203
                    }
204
                },
205
                {
206
                    'targets': -1,
207
                    'orderable': false,
208
                    'render' : function ( data, type, row ) {
209
                        s = '';
210
 
211
                        if(allowChangePassword && data['link_change_password']) {
212
                            s = s + '<button class="btn btn-primary btn-change-password" data-href="' + data['link_change_password']+ '" data-toggle="tooltip" title="LABEL_CHANGE_PASSWORD"><i class="fa fa-key"></i> LABEL_PASSWORD </button>&nbsp;';
213
                        }
214
                        if(allowUnblock && data['link_unblock']) {
215
                            s = s + '<button class="btn btn-info btn-unblock" data-href="' + data['link_unblock']+ '" data-toggle="tooltip" title="LABEL_UNBLOCK"><i class="fa fa-unlock"></i> LABEL_UNBLOCK </button>&nbsp;';
216
                        }
16248 efrain 217
                        if(allowChangeType && data['link_change_type']) {
17179 ariadna 218
                            s = s + '<button class="btn btn-info btn-change-type" data-href="' + data['link_change_type']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-superpowers"></i> LABEL_EDIT </button>&nbsp;';
16248 efrain 219
                        }
220
 
221
 
1 www 222
                        return s;
223
                    }
224
                }
225
 
226
            ],
227
        });
228
 
229
        var validatorChangePassword = $('#form-change-password').validate({
230
            debug: true,
231
            onclick: false,
232
            onkeyup: false,
233
            ignore: [':hidden'],
234
            rules: {
235
 
236
                'password': {
237
                    required: true,
238
                    minlength: 6,
239
                    maxlength: 16,
240
                    passwordStrengthCheck: true,
241
                },
242
                'confirmation' : {
243
                    required: true,
244
                    minlength: 6,
245
                    maxlength: 16,
246
                    equalTo: '#form-change-password #password'
247
                },
248
            },
249
            submitHandler: function(form)
250
            {
251
                NProgress.start();
252
                $.ajax({
253
                    'dataType'  : 'json',
254
                    'accept'    : 'application/json',
255
                    'method'    : 'post',
256
                    'url'       : $('#form-change-password').attr('action'),
257
                    'data'      : $('#form-change-password').serialize()
258
                 }).done(function(response) {
259
                    if(response.success) {
260
                        $.fn.showSuccess(response.data);
261
 
262
                        $('#modalChangePassword').modal('hide');
263
                         gridTable.api().ajax.reload(null, false);
264
                    } else {
265
                        if(jQuery.type(response.data) == 'string') {
266
                            $.fn.showError(response.data)
267
                        } else  {
268
                            $.each(response.data, function( fieldname, errors ) {
269
                                $.fn.showFormErrorValidator('#form-change-password #' + fieldname, errors);
270
                            });
271
                        }
272
                    }
273
                }).fail(function( jqXHR, textStatus, errorThrown) {
274
                    $.fn.showError(textStatus)
275
 
276
                }).always(function() {
277
                    NProgress.done();
278
                })
279
            },
280
            invalidHandler: function(form, validator) {
281
            }
282
        });
283
 
284
        $('body').on('click', 'button.btn-change-password', function(e) {
285
            e.preventDefault();
286
 
287
            NProgress.start();
288
            var action = $(this).data('href');
289
 
290
            $.ajax({
291
                'dataType'  : 'json',
292
                'accept'    : 'application/json',
293
                'method'    : 'get',
294
                'url'       :  action,
295
            }).done(function(response) {
296
                if(response['success']) {
297
 
298
                    $('#form-change-password').attr('action', action);
299
                    $('#form-change-password #first_name').val(response['data']['first_name']);
300
                    $('#form-change-password #last_name').val(response['data']['last_name']);
301
                    $('#form-change-password #email').val(response['data']['email']);
302
                    $('#form-change-password #password').val('');
303
                    $('#form-change-password #confirmation').val('');
304
                    validatorChangePassword.resetForm();
305
 
306
                    $('#modalChangePassword').modal('show');
307
                } else {
308
                    $.fn.showError(response['data']);
309
                }
310
            }).fail(function( jqXHR, textStatus, errorThrown) {
311
                $.fn.showError(textStatus);
312
            }).always(function() {
313
                NProgress.done();
314
            });
315
 
316
        });
16248 efrain 317
 
318
        var validatorChangeType = $('#form-change-type').validate({
319
            debug: true,
320
            onclick: false,
321
            onkeyup: false,
322
            ignore: [':hidden'],
323
            rules: {
324
                'usertype_id': {
325
                    required: true,
326
                },
17179 ariadna 327
                'email_verified': {
328
                    required: true,
329
                },
330
                'blocked': {
331
                    required: true,
332
                },
333
                'status': {
334
                    required: true,
335
                },
16248 efrain 336
            },
337
            submitHandler: function(form)
338
            {
339
                NProgress.start();
340
                $.ajax({
341
                    'dataType'  : 'json',
342
                    'accept'    : 'application/json',
343
                    'method'    : 'post',
344
                    'url'       : $('#form-change-type').attr('action'),
345
                    'data'      : $('#form-change-type').serialize()
346
                 }).done(function(response) {
347
                    if(response.success) {
348
                        $.fn.showSuccess(response.data);
349
 
350
                        $('#modalChangeType').modal('hide');
351
                         gridTable.api().ajax.reload(null, false);
352
                    } else {
353
                        if(jQuery.type(response.data) == 'string') {
354
                            $.fn.showError(response.data)
355
                        } else  {
356
                            $.each(response.data, function( fieldname, errors ) {
357
                                $.fn.showFormErrorValidator('#form-change-type #' + fieldname, errors);
358
                            });
359
                        }
360
                    }
361
                }).fail(function( jqXHR, textStatus, errorThrown) {
362
                    $.fn.showError(textStatus)
363
 
364
                }).always(function() {
365
                    NProgress.done();
366
                })
367
            },
368
            invalidHandler: function(form, validator) {
369
            }
370
        });
371
 
17174 ariadna 372
        $('body').on('click', 'button.btn-change-type', function(e) {
16248 efrain 373
            e.preventDefault();
374
 
375
            NProgress.start();
376
            var action = $(this).data('href');
377
 
378
            $.ajax({
379
                'dataType'  : 'json',
380
                'accept'    : 'application/json',
381
                'method'    : 'get',
382
                'url'       :  action,
383
            }).done(function(response) {
384
                if(response['success']) {
385
 
386
                    $('#form-change-type').attr('action', action);
387
                    $('#form-change-type #usertype_id').val(response['data']['usertype_id']);
17179 ariadna 388
                    $('#form-change-type #email_verified').val(response['data']['email_verified']);
389
                    $('#form-change-type #blocked').val(response['data']['blocked']);
390
                    $('#form-change-type #status').val(response['data']['status']);
16248 efrain 391
                    validatorChangeType.resetForm();
392
 
393
                    $('#modalChangeType').modal('show');
394
                } else {
395
                    $.fn.showError(response['data']);
396
                }
397
            }).fail(function( jqXHR, textStatus, errorThrown) {
398
                $.fn.showError(textStatus);
399
            }).always(function() {
400
                NProgress.done();
401
            });
402
 
403
        });
1 www 404
 
405
        $('body').on('click', 'button.btn-refresh', function(e) {
406
            e.preventDefault();
407
            gridTable.api().ajax.reload(null, false);
408
        });
409
 
16822 efrain 410
 $('body').on('click', 'button.btn-unblock', function(e) {
411
        e.preventDefault();
412
        var action = $(this).data('href');
1 www 413
 
15460 efrain 414
 
16822 efrain 415
          swal.fire({
416
            title: 'LABEL_ARE_YOU_SURE',
417
            icon: 'question',
418
            cancelButtonText: 'LABEL_NO',
419
            showCancelButton: true,
420
            confirmButtonText: 'LABEL_YES'
421
          }).then((result) => {
422
            if (result.isConfirmed) {
423
 
424
                    NProgress.start();
425
                    $.ajax({
426
                        'dataType'  : 'json',
427
                        'accept'    : 'application/json',
428
                        'method'    : 'post',
429
                        'url'       :  action,
430
                    }).done(function(response) {
431
                        if(response['success']) {
432
                            $.fn.showSuccess(response['data']);
433
                            gridTable.api().ajax.reload(null, false);
434
                        } else {
435
                            $.fn.showError(response['data']);
436
                        }
437
                    }).fail(function( jqXHR, textStatus, errorThrown) {
438
                        $.fn.showError(textStatus);
439
                    }).always(function() {
440
                        NProgress.done();
441
                    });
442
            }
443
       });
444
    });
445
 
16842 efrain 446
    $('body').on('click', 'button.btn-cancel', function(e) {
15460 efrain 447
        e.preventDefault();
448
        $('#modalFormUploadUsers').modal('hide');
449
        $('#modalChangePassword').modal('hide');
16842 efrain 450
        $('#modalUploadUsers').modal('hide');
451
        $('#modalChangeType').modal('hide');
15460 efrain 452
    });
453
 
1 www 454
 
455
        $('body').on('click', 'button.btn-view-profile', function(e) {
456
            e.preventDefault();
457
            var href = $(this).data('href');
458
            window.open(href, '_blank');
459
        });
460
 
16299 efrain 461
    var validatorUploadUsers = $('#form-upload-users').validate({
15460 efrain 462
        debug: true,
463
        onclick: false,
464
        onkeyup: false,
465
        onfocusout: false,
466
        ignore: [],
467
        rules: {
468
            'file' : {
469
                required: true,
470
                extension: 'xls|xlsx',
471
                accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel'
472
            },
473
        },
474
 
475
        submitHandler: function(form)
476
        {
477
            NProgress.start();
478
            var formdata = false;
479
            if (window.FormData){
480
                formdata = new FormData(form);
481
            }
482
            formdata.append('step','validation');
1 www 483
 
484
 
15460 efrain 485
            $.ajax({
486
                'dataType'  : 'json',
487
                'accept'    : 'application/json',
488
                'method'    : 'post',
489
                'url'       : '$routeUpload',
490
                'data'      :  formdata,
491
                'processData': false,
492
                'contentType': false,
493
            }).done(function(response) {
494
                if(response['success']) {
1 www 495
 
15460 efrain 496
                    $('#table-upload-users-key').val(response['data']['key']);
497
 
498
                    $('#gridTableUploadUsers tbody').empty();
499
 
500
                    $.each(response['data']['items'], function(index, item) {
501
 
502
 
503
                        var s = '<tr>';
504
                        s = s + '<td>' + item['first_name'] + '</td>';
505
                        s = s + '<td>' + item['last_name'] + '</td>';
506
                        s = s + '<td>' + item['email'] + '</td>';
507
                        s = s + '<td>' + item['password'] + '</td>';
508
                        s = s + '<td>' + item['is_adult'] + '</td>';
509
                        s = s + '</tr>';
510
 
511
                        $('#gridTableUploadUsers tbody').append(s);
512
 
513
 
514
                    });
515
 
516
                    $('#modalFormUploadUsers').modal('hide');
517
                    $('#modalUploadUsers').modal('show');
518
 
519
 
520
 
521
                } else {
522
                    validatorUploadUsers.resetForm();
523
                    if(jQuery.type(response['data']) == 'string') {
524
                        $.fn.showError(response['data']);
525
                    } else  {
526
                        $.each(response['data'], function( fieldname, errors ) {
527
                            $.fn.showFormErrorValidator('#form-upload-users #' + fieldname, errors);
528
                        });
529
                    }
530
                }
531
            }).fail(function( jqXHR, textStatus, errorThrown) {
532
                $.fn.showError(textStatus);
533
            }).always(function() {
534
 
535
                NProgress.done();
536
            });
537
            return false;
538
        },
539
        invalidHandler: function(form, validator) {
540
 
541
        }
1 www 542
    });
15460 efrain 543
 
544
    $('#form-upload-users #file').fileinput({
545
        theme: 'fa',
546
        language: 'es',
547
        showUpload: false,
548
        dropZoneEnabled: false,
549
        maxFileCount: 1,
550
        allowedFileExtensions: ['xls', 'xlsx'],
551
    });
552
 
553
    $('body').on('click', 'button.btn-upload', function(e) {
554
        e.preventDefault();
555
 
556
        $('#form-upload-users #file').fileinput('reset');
557
        $('#form-upload-users #file').val('');
558
 
559
        $('#modalFormUploadUsers').modal('show');
560
    });
561
 
562
    $('body').on('click', 'button.btn-upload-users-step2', function(e) {
563
        e.preventDefault();
564
        NProgress.start();
565
 
566
        $.ajax({
567
            'dataType'  : 'json',
568
            'accept'    : 'application/json',
569
            'method'    : 'post',
570
            'url'       : '$routeUpload',
571
            'data'      :  {
572
                'step' : 'process',
573
                'key' : $('#table-upload-users-key').val(),
574
            }
575
        }).done(function(response) {
576
            if(response['success']) {
577
                if(response['data']['users_created'] == 1) {
578
                    $.fn.showSuccess(response['data']['users_created'] + ' LABEL_USER_CREATED');
579
                } else {
580
                    $.fn.showSuccess(response['data']['users_created'] + ' LABEL_USERS_CREATED');
581
                }
582
                 gridTable.api().ajax.reload(null, false);
583
                $('#modalUploadUsers').modal('hide');
584
            } else {
585
                $.fn.showError(response['data']);
586
            }
587
        }).fail(function( jqXHR, textStatus, errorThrown) {
588
            $.fn.showError(textStatus);
589
        }).always(function() {
590
            NProgress.done();
591
        });
592
        return false;
593
    });
594
 
595
 
16299 efrain 596
    $('#form-filter #network_id').change(function(e) {
597
        e.preventDefault();
15460 efrain 598
 
16299 efrain 599
        gridTable.api().ajax.reload(null, false);
15460 efrain 600
    });
16299 efrain 601
 
602
 
603
});
1 www 604
JS;
605
$this->inlineScript()->captureEnd();
606
?>
607
 
16815 stevensc 608
 
16840 efrain 609
<div class="container">
17172 ariadna 610
    <div class="card">
16815 stevensc 611
 
17172 ariadna 612
 
613
        <div class="card-body">
614
            <h6 class="card-title">LABEL_USERS</h6>
615
 
616
            <div class="row">
617
                <div class="col-12  mt-3">
618
                    <?php
619
                    $form = $this->formFilter;
620
                    $form->setAttributes([
621
                        'method'    => 'post',
622
                        'name'      => 'form-filter',
623
                        'id'        => 'form-filter'
624
                    ]);
625
 
626
                    $form->prepare();
627
                    echo $this->form()->openTag($form);
628
                    ?>
629
                    <table class="table">
630
                        <thead>
631
                        </thead>
16840 efrain 632
                        <tbody>
17172 ariadna 633
                            <tr>
634
                                <th>LABEL_PRIVATE_NETWORKS</th>
16840 efrain 635
                                <td>
17172 ariadna 636
                                    <?php
637
                                    $element = $form->get('network_id');
638
                                    $element->setAttributes(['class' => 'form-control']);
639
                                    echo $this->formSelect($element);
640
                                    ?>
641
                                </td>
16840 efrain 642
                            </tr>
17172 ariadna 643
                        </tbody>
1 www 644
 
17172 ariadna 645
                    </table>
646
                    <?php echo $this->form()->closeTag($form); ?>
1 www 647
 
17172 ariadna 648
                </div>
649
            </div>
650
            <div class="row">
651
                <div class="col-12  mt-3">
652
                    <table id="gridTable" class="table   table-bordered">
653
                        <thead>
654
                            <tr>
655
                                <th>LABEL_FIRST_NAME</th>
656
                                <th>LABEL_LAST_NAME</th>
657
                                <th>LABEL_EMAIL</th>
658
                                <th>LABEL_DETAILS</th>
659
                                <th>LABEL_ACTIONS</th>
660
                            </tr>
661
                        </thead>
662
                        <tbody>
663
                        </tbody>
664
                    </table>
665
                </div>
666
            </div>
16840 efrain 667
            <div class="card-footer  text-right">
17172 ariadna 668
                <?php if ($allowUpload) : ?>
669
                    <button type="button" class="btn btn-sm btn-primary btn-upload"><i class="fa fa-upload"></i> LABEL_UPLOAD </button>
670
                <?php endif; ?>
671
                <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-sync"></i> LABEL_REFRESH </button>
16815 stevensc 672
            </div>
673
        </div>
674
    </div>
16840 efrain 675
</div>
16815 stevensc 676
 
677
 
1 www 678
<!-- The Modal -->
679
<div class="modal" id="modalChangePassword">
16815 stevensc 680
    <div class="modal-dialog">
681
        <div class="modal-content">
1 www 682
 
683
            <!-- Modal Header -->
16815 stevensc 684
            <div class="modal-header">
16845 efrain 685
                <h6 class="modal-title">LABEL_USERS</h6>
16822 efrain 686
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
16815 stevensc 687
            </div>
1 www 688
 
16840 efrain 689
 
1 www 690
            <!-- Modal body -->
17172 ariadna 691
            <?php
692
            $form = $this->formChangePassword;
693
            $form->setAttributes([
694
                'method'    => 'post',
695
                'name'      => 'form-change-password',
696
                'id'        => 'form-change-password'
697
            ]);
1 www 698
 
17172 ariadna 699
            $form->prepare();
700
            echo $this->form()->openTag($form);
701
            ?>
16840 efrain 702
            <div class="modal-body">
703
 
17172 ariadna 704
                <div class="row">
705
                    <div class="col-12  mt-3">
706
                        <?php
707
                        $element = $form->get('first_name');
708
                        $element->setOptions(['label' => 'LABEL_FIRST_NAME']);
709
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
1 www 710
 
17172 ariadna 711
                        echo $this->formLabel($element);
712
                        echo $this->formText($element);
713
                        ?>
16840 efrain 714
                    </div>
16815 stevensc 715
                </div>
17172 ariadna 716
                <div class="row">
717
                    <div class="col-12  mt-3">
718
                        <?php
719
                        $element = $form->get('last_name');
720
                        $element->setOptions(['label' => 'LABEL_LAST_NAME']);
721
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
1 www 722
 
17172 ariadna 723
                        echo $this->formLabel($element);
724
                        echo $this->formText($element);
725
                        ?>
16840 efrain 726
                    </div>
16815 stevensc 727
                </div>
17172 ariadna 728
                <div class="row">
729
                    <div class="col-12  mt-3">
730
                        <?php
731
                        $element = $form->get('email');
732
                        $element->setOptions(['label' => 'LABEL_EMAIL']);
733
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
16815 stevensc 734
 
17172 ariadna 735
                        echo $this->formLabel($element);
736
                        echo $this->formText($element);
737
                        ?>
16840 efrain 738
                    </div>
16815 stevensc 739
                </div>
17172 ariadna 740
                <div class="row">
741
                    <div class="col-12  mt-3">
742
                        <?php
743
                        $element = $form->get('password');
744
                        $element->setOptions(['label' => 'LABEL_PASSWORD']);
745
                        $element->setAttributes(['class' => 'form-control']);
16815 stevensc 746
 
17172 ariadna 747
                        echo $this->formLabel($element);
748
                        echo $this->formPassword($element);
749
                        ?>
16840 efrain 750
                    </div>
16815 stevensc 751
                </div>
16840 efrain 752
                <div class="row">
17172 ariadna 753
                    <div class="col-12  mt-3">
754
                        <?php
755
                        $element = $form->get('confirmation');
756
                        $element->setOptions(['label' => 'LABEL_CONFIRMATION']);
757
                        $element->setAttributes(['class' => 'form-control']);
16815 stevensc 758
 
17172 ariadna 759
                        echo $this->formLabel($element);
760
                        echo $this->formPassword($element);
761
                        ?>
16840 efrain 762
                    </div>
16815 stevensc 763
                </div>
764
 
17172 ariadna 765
 
16815 stevensc 766
            </div>
767
 
1 www 768
            <!-- Modal footer -->
16840 efrain 769
            <div class="modal-footer text-right">
17172 ariadna 770
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
16842 efrain 771
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
16815 stevensc 772
            </div>
16840 efrain 773
            <?php echo $this->form()->closeTag($form); ?>
1 www 774
 
16815 stevensc 775
        </div>
776
    </div>
777
</div>
1 www 778
 
779
 
15460 efrain 780
<!-- The Modal -->
781
<div class="modal" id="modalFormUploadUsers">
782
    <div class="modal-dialog  modal-xl">
783
        <div class="modal-content">
1 www 784
 
15460 efrain 785
            <!-- Modal Header -->
786
            <div class="modal-header">
787
                <h3 class="modal-title">LABEL_UPLOAD</h3>
788
            </div>
17172 ariadna 789
            <?php
790
            $form = $this->formUploadUsers;
791
            $form->setAttributes([
792
                'method'    => 'post',
793
                'name'      => 'form-upload-users',
794
                'id'        => 'form-upload-users'
795
            ]);
15460 efrain 796
 
17172 ariadna 797
            $form->prepare();
798
            echo $this->form()->openTag($form);
799
            ?>
15460 efrain 800
 
16840 efrain 801
            <!-- Modal body -->
802
            <div class="modal-body">
15460 efrain 803
 
17172 ariadna 804
 
16840 efrain 805
                <div class="row">
17172 ariadna 806
                    <div class="col-12  mt-3">
15460 efrain 807
 
16840 efrain 808
 
15460 efrain 809
                        <?php
17172 ariadna 810
                        $element = $form->get('file');
811
                        $element->setOptions(['label' => 'LABEL_EXCEL']);
812
                        echo $this->formLabel($element);
15460 efrain 813
                        ?>
17172 ariadna 814
                        <div class="file-loading">
815
                            <?php
816
                            $element->setAttributes(['class' => 'form-control', 'accept' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel']);
817
                            echo $this->formFile($element);
818
                            ?>
819
                        </div>
15460 efrain 820
                    </div>
821
                </div>
822
 
823
 
824
 
17172 ariadna 825
 
16840 efrain 826
            </div>
17172 ariadna 827
            <div class="modal-footer text-right">
828
                <button type="submit" class="btn btn-sm btn-primary">LABEL_UPLOAD</button>
829
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
830
            </div>
831
            <?php echo $this->form()->closeTag($form); ?>
15460 efrain 832
        </div>
833
    </div>
834
</div>
835
 
836
 
837
<!-- The Modal -->
838
<div class="modal" id="modalUploadUsers">
839
    <div class="modal-dialog modal-xl">
840
        <div class="modal-content">
841
 
842
            <!-- Modal Header -->
843
            <div class="modal-header">
844
                <h3 class="modal-title">LABEL_USERS</h3>
16822 efrain 845
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
15460 efrain 846
            </div>
847
 
848
            <!-- Modal body -->
849
            <div class="modal-body">
850
                <form>
851
                    <input type="hidden" name="table-upload-users-key" id="table-upload-users-key">
852
                </form>
16840 efrain 853
                <div class="row">
16841 efrain 854
                    <div class="col-12  mt-3" style="height: 300px;overflow: scroll;">
16840 efrain 855
                        <table id="gridTableUploadUsers" style="width: 100%" class="table table-bordered">
856
                            <thead>
857
                                <tr>
858
                                    <th>LABEL_FIRST_NAME</th>
859
                                    <th>LABEL_LAST_NAME</th>
860
                                    <th>LABEL_EMAIL</th>
861
                                    <th>LABEL_PASSWORD</th>
862
                                    <th>LABEL_IS_ADULT</th>
863
                                </tr>
864
                            </thead>
865
                            <tbody>
866
                            </tbody>
867
                        </table>
868
                    </div>
15460 efrain 869
                </div>
870
 
871
            </div>
872
 
873
            <!-- Modal footer -->
16840 efrain 874
            <div class="modal-footer text-right">
15460 efrain 875
                <button type="submit" class="btn btn-sm btn-primary btn-upload-users-step2">LABEL_SAVE</button>
16842 efrain 876
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
15460 efrain 877
            </div>
878
 
879
        </div>
880
    </div>
881
</div>
882
 
883
 
16248 efrain 884
 
885
<!-- The Modal -->
886
<div class="modal" id="modalChangeType">
16815 stevensc 887
    <div class="modal-dialog">
888
        <div class="modal-content">
16248 efrain 889
 
890
            <!-- Modal Header -->
16815 stevensc 891
            <div class="modal-header">
16845 efrain 892
                <h6 class="modal-title">LABEL_USERS</h6>
16822 efrain 893
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
16815 stevensc 894
            </div>
16248 efrain 895
 
17172 ariadna 896
            <?php
897
            $form = $this->formChangeType;
898
            $form->setAttributes([
899
                'method'    => 'post',
900
                'name'      => 'form-change-type',
901
                'id'        => 'form-change-type'
902
            ]);
16248 efrain 903
 
17172 ariadna 904
            $form->prepare();
905
            echo $this->form()->openTag($form);
906
            ?>
16840 efrain 907
            <!-- Modal body -->
908
            <div class="modal-body">
17172 ariadna 909
 
16840 efrain 910
                <div class="row">
17172 ariadna 911
                    <div class="col-12  mt-3">
912
                        <?php
913
                        $element = $form->get('usertype_id');
914
                        $element->setOptions(['label' => 'LABEL_USER_TYPE']);
915
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
16815 stevensc 916
 
17172 ariadna 917
                        echo $this->formLabel($element);
918
                        echo $this->formSelect($element);
919
                        ?>
16840 efrain 920
                    </div>
16815 stevensc 921
                </div>
17174 ariadna 922
                <div class="row">
923
                    <div class="col-12 mt-3">
924
                        <?php
17179 ariadna 925
                        $element = $form->get('email_verified');
17189 ariadna 926
                        $element->setOptions(['label' => 'LABEL_CHECK_EMAIL']);
17213 ariadna 927
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
16840 efrain 928
 
17174 ariadna 929
                        echo $this->formLabel($element);
17179 ariadna 930
                        echo $this->formSelect($element);
17174 ariadna 931
                        ?>
932
                    </div>
933
                </div>
934
                <div class="row">
935
                    <div class="col-12 mt-3">
936
                        <?php
17179 ariadna 937
                        $element = $form->get('blocked');
17174 ariadna 938
                        $element->setOptions(['label' => 'LABEL_BLOCKED']);
17213 ariadna 939
                        $element->setAttributes(['class' => 'form-control', 'readonly' => 'readonly']);
17172 ariadna 940
 
17174 ariadna 941
                        echo $this->formLabel($element);
17179 ariadna 942
                        echo $this->formSelect($element);
17174 ariadna 943
                        ?>
944
                    </div>
945
                </div>
946
                <div class="row">
947
                    <div class="col-12 mt-3">
948
                        <?php
949
                        $element = $form->get('status');
950
                        $element->setOptions(['label' => 'LABEL_STATUS']);
951
                        $element->setAttributes(['class' => 'form-control']);
952
 
953
                        echo $this->formLabel($element);
954
                        echo $this->formSelect($element);
955
                        ?>
956
                    </div>
957
                </div>
958
 
959
 
16815 stevensc 960
            </div>
961
 
16248 efrain 962
            <!-- Modal footer -->
16891 efrain 963
            <div class="modal-footer text-right">
17172 ariadna 964
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
965
                <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
16815 stevensc 966
            </div>
16840 efrain 967
            <?php echo $this->form()->closeTag($form); ?>
16248 efrain 968
 
16815 stevensc 969
        </div>
970
    </div>
971
</div>