Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15136 | Rev 15337 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15127 stevensc 1
<?php
2
 
1 www 3
use LeadersLinked\Model\CompanyService;
4
use LeadersLinked\Model\Company;
5
 
6
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
7
$currentUser    = $this->currentUserHelper();
8
 
9
$roleName = $currentUser->getUserTypeId();
10
 
11
 
12
 
13
$routeDatatable = $this->url('companies');
14
$routeDashboard = $this->url('dashboard');
15
 
16
$allowEdit      = $acl->isAllowed($roleName, 'companies/edit') ? 1 : 0;
17
$allowServices  = $acl->isAllowed($roleName, 'companies/services') ? 1 : 0;
18
$allowRoles     = $acl->isAllowed($roleName, 'companies/roles') ? 1 : 0;
19
 
20
 
21
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
22
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
23
 
24
$this->inlineScript()->appendFile($this->basePath('plugins/ckeditor/ckeditor.js'));
25
 
26
 
27
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
28
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
29
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
30
 
31
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
32
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-responsive/css/responsive.bootstrap4.min.css'));
33
 
34
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
35
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
36
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/dataTables.responsive.min.js'));
37
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/responsive.bootstrap4.min.js'));
38
 
39
 
40
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
41
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
42
 
43
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
44
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
45
 
46
 
47
//$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css'));
48
 
49
//$this->inlineScript()->appendFile($this->basePath('plugins/moment/moment-with-locales.js'));
50
//$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js'));
51
 
15134 stevensc 52
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css'));
1 www 53
 
54
$this->inlineScript()->appendFile($this->basePath('plugins/moment/moment-with-locales.js'));
55
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-datepicker/js/bootstrap-datepicker.js'));
15134 stevensc 56
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js'));
1 www 57
 
58
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
59
 
60
$status_active = CompanyService::ACTIVE;
61
$status_inactive = CompanyService::INACTIVE;
62
$status_cancelled = CompanyService::CANCELLED;
63
$status_suspended = CompanyService::SUSPENDED;
64
 
65
 
66
$this->inlineScript()->captureStart();
67
echo <<<JS
68
    jQuery( document ).ready(function( $ ) {
69
 
70
        $.validator.setDefaults({
71
            debug: true,
72
            highlight: function(element) {
73
                $(element).addClass('is-invalid');
74
            },
75
            unhighlight: function(element) {
76
                $(element).removeClass('is-invalid');
77
            },
78
            errorElement: 'span',
79
            errorClass: 'error invalid-feedback',
80
            errorPlacement: function(error, element) {
81
                if(element.parent('.form-group').length) {
82
                    error.insertAfter(element);
83
                } else if(element.parent('.toggle').length) {
84
                    error.insertAfter(element.parent().parent());
85
                } else {
86
                    error.insertAfter(element.parent());
87
                }
88
            }
89
        });
90
 
91
 
92
        $.fn.showFormErrorValidator = function(fieldname, errors) {
93
            var field = $(fieldname);
94
            if(field) {
95
                $(field).addClass('is-invalid');
96
 
97
 
98
                var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
99
                if(field.parent('.form-group').length) {
100
                    error.insertAfter(field);
101
                } else  if(field.parent('.toggle').length) {
102
                    error.insertAfter(field.parent().parent());
103
                } else {
104
                    error.insertAfter(field.parent());
105
                }
106
            }
107
        };
108
 
109
 
110
        var allowEdit = $allowEdit;
111
        var allowServices = $allowServices;
112
        var allowRoles = $allowRoles;
113
 
114
        var gridTable = $('#gridTable').dataTable( {
115
            'processing': true,
116
            'serverSide': true,
117
            'searching': true,
118
            'order': [[ 0, 'asc' ]],
119
            'ordering':  true,
120
            'ordenable' : true,
121
            'responsive': true,
122
            'select' : false,
123
        	'paging': true,
124
            'pagingType': 'simple_numbers',
125
    		'ajax': {
126
    			'url' : '$routeDatatable',
127
    			'type' : 'get',
128
                'beforeSend': function (request) {
129
                  NProgress.start();
130
                },
131
                'data' : function(data) {
132
                    data.status = $('#form-filter #status').val();
133
                } ,
134
                'dataFilter': function(response) {
135
                    var response = jQuery.parseJSON( response );
136
 
137
                    var json                = {};
138
                    json.recordsTotal       = 0;
139
                    json.recordsFiltered    = 0;
140
                    json.data               = [];
141
 
142
 
143
                    if(response.success) {
144
                        json.recordsTotal       = response.data.total;
145
                        json.recordsFiltered    = response.data.total;
146
                        json.data               = response.data.items;
147
                    } else {
148
                        $.fn.showError(response.data)
149
                    }
150
 
151
                    return JSON.stringify( json );
152
                }
153
    		},
154
            'language' : {
155
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
156
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
157
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
158
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
159
                'sInfo':           'LABEL_DATATABLE_SINFO',
160
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
161
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
162
                'sInfoPostFix':    '',
163
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
164
                'sUrl':            '',
165
                'sInfoThousands':  ',',
166
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
167
                'oPaginate': {
168
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
169
                    'sLast':     'LABEL_DATATABLE_SLAST',
170
                    'sNext':     'LABEL_DATATABLE_SNEXT',
171
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
172
                },
173
                'oAria': {
174
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
175
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
176
                },
177
            },
178
            'drawCallback': function( settings ) {
179
                NProgress.done();
180
                $('button.btn-delete').confirmation({
181
                    rootSelector: 'button.btn-delete',
182
                    title : 'LABEL_ARE_YOU_SURE',
183
                    singleton : true,
184
                    btnOkLabel: 'LABEL_YES',
185
                    btnCancelLabel: 'LABEL_NO',
186
                    onConfirm: function(value) {
187
                        action = $(this).data('href');
188
                        NProgress.start();
189
                        $.ajax({
190
                            'dataType'  : 'json',
191
                            'accept'    : 'application/json',
192
                            'method'    : 'post',
193
                            'url'       :  action,
194
                        }).done(function(response) {
195
                            if(response['success']) {
196
                                $.fn.showSuccess(response['data']);
197
                                gridTable.api().ajax.reload(null, false);
198
                            } else {
199
                                $.fn.showError(response['data']);
200
                            }
201
                        }).fail(function( jqXHR, textStatus, errorThrown) {
202
                            $.fn.showError(textStatus);
203
                        }).always(function() {
204
                            NProgress.done();
205
                        });
206
                    },
207
                });
208
            },
209
            'aoColumns': [
210
                { 'mDataProp': 'name' },
211
                { 'mDataProp': 'details' },
212
                { 'mDataProp': 'security' },
213
                { 'mDataProp': 'actions' },
214
    	    ],
215
            'columnDefs': [
216
                {
217
                    'targets': 0,
218
                    'className' : 'text-vertical-middle',
219
                    'orderable': false,
220
                    'render' : function ( data, type, row ) {
221
                        var s = data ;
222
                        if(row['link_profile'] ) {
223
                            s = s + '<br><button class="btn btn-sm btn-default btn-profile" data-href="' + row['link_profile']+ '" data-toggle="tooltip" title="LABEL_PROFILE"><i class="fa fa-external-link"></i></button>&nbsp;<br>';
224
                        }
225
                        return s;
226
                    }
227
                },
228
 
229
                {
230
                    'targets': -3,
231
                    'orderable': false,
232
                    'render' : function ( data, type, row ) {
233
                        var s = 'LABEL_STATUS : ' + data['status']  + '<br>';
234
                        s = s +  'LABEL_INTERNAL : ' + data['internal']  + '<br>';
235
                        if(allowServices) {
236
                            s = s + 'LABEL_SERVICES:  <button class="btn btn-sm btn-default btn-services" data-href="' + row['actions']['link_services']+ '" data-toggle="tooltip" title="LABEL_SERVICES"><i class="fa fa-external-link"></i></button>&nbsp;<br>';
237
                        } else {
238
                            s = s + 'LABEL_SERVICES: <br>';
239
                        }
240
 
241
                        if(data['services']) {
242
 
243
                            s = s + '<ul>';
244
                            $.each(data['services'], function(index, service) {
245
                                s = s + '<li>' + service + '</li>';
246
                            });
247
                            s = s + '</ul>';
248
                        }
249
 
250
                        if(allowRoles) {
251
                            s = s + 'LABEL_ROLES: <button class="btn btn-sm btn-default btn-roles" data-href="' + row['actions']['link_roles']+ '" data-toggle="tooltip" title="LABEL_ROLES"><i class="fa fa-external-link"></i></button>&nbsp;<br>';
252
                        } else {
253
                            s = s + 'LABEL_ROLES: <br>';
254
                        }
255
 
256
 
257
                        if(data['roles']) {
258
 
259
                            s = s + '<ul>';
260
                            $.each(data['roles'], function(index, role) {
261
                                s = s + '<li>' + role + '</li>';
262
                            });
263
                            s = s + '</ul>';
264
                        } else {
265
                            s = s + 'LABEL_ROLES: <br>';
266
                        }
267
 
268
                        return s;
269
                    }
270
                },
271
                {
272
                    'targets': -2,
273
                    'orderable': false,
274
                    'render' : function ( data, type, row ) {
275
                        var s = 'LABEL_CREATED_BY<br>';
276
                        s = s + '<ul>';
277
                        s = s + '<li> LABEL_FIRST_NAME : ' + data['first_name']  + ' </li>';
278
                        s = s + '<li>LABEL_LAST_NAME : ' + data['last_name']  + ' </li>';
279
                        s = s + '<li>LABEL_EMAIL : ' + data['email']  + ' </li>';
280
                        s = s + '</ul>';
281
 
282
 
283
                        return s;
284
                    }
285
                },
286
                {
287
                    'targets': -1,
288
                    'orderable': false,
289
                    'render' : function ( data, type, row ) {
290
                        s = '';
291
                        if(allowEdit) {
292
                            s = s + '<button class="btn btn-sm btn-primary btn-edit" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button>&nbsp;';
293
                        }
294
                        return s;
295
                    }
296
                }
297
              ],
298
        });
299
 
300
 
301
 
302
 
303
        $('body').on('click', 'button.btn-refresh', function(e) {
304
            e.preventDefault();
305
            gridTable.api().ajax.reload(null, false);
306
        });
307
 
308
 
309
        $('body').on('click', 'button.btn-profile', function(e) {
310
            e.preventDefault();
311
 
312
            var href = $(this).data('href');
313
            window.open(href, '_blank');
314
 
315
        });
316
 
317
 
318
 
319
        $('body').on('click', 'button.btn-services', function(e) {
320
            e.preventDefault();
321
 
322
            var href = $(this).data('href');
323
            $('#form-services').attr('action', href);
324
 
325
            NProgress.start();
326
            $.ajax({
327
                'dataType'  : 'json',
328
                'accept'    : 'application/json',
329
                'method'    : 'get',
330
                            'url'       :  href,
331
            }).done(function(response) {
332
                if(response['success']) {
333
 
334
                    $('#table-services tbody').empty();
335
 
336
                    $.each(response['data'], function(index, service) {
337
 
338
 
339
                        var s = '<tr>';
340
                        s = s + '<td>' + service['name'] + '</td>';
341
                        s = s + '<td><select id="status' + service['id'] + '" name="status' + service['id'] + '" class="form-control">';
342
                        selected = service['status'] == '$status_inactive' ? 'selected' : '';
343
                        s = s + '<option value="$status_inactive" ' + selected + '>LABEL_INACTIVE</option>';
344
 
345
                        selected = service['status'] == '$status_active' ? 'selected' : '';
346
                        s = s + '<option value="$status_active" ' + selected + '>LABEL_ACTIVE</option>';
347
 
348
                        selected = service['status'] == '$status_cancelled' ? 'selected' : '';
349
                        s = s + '<option value="$status_cancelled" ' + selected + '>LABEL_CANCELLED</option>';
350
 
351
                        selected = service['status'] == '$status_suspended' ? 'selected' : '';
352
                        s = s + '<option value="$status_suspended" ' + selected + '>LABEL_SUSPENDED</option>';
353
                        s = s + '</select>';
354
                        s = s + '</td>';
15136 stevensc 355
                        s = s + '<td><input type="text" id="paid_from' + service['id'] + '" name="paid_from' + service['id'] + '" class="form-control input-paid-from" value="' + service['paid_from']+ '"></td>';
1 www 356
                        s = s + '<td><input type="text" id="paid_to' + service['id'] + '" name="paid_to' + service['id'] + '" class="form-control input-paid-to" value="' + service['paid_to']+ '"></td>';
357
                        s = s + '</tr>';
358
 
359
                        $('#table-services tbody').append(s);
360
 
361
                    });
362
 
15137 stevensc 363
                    $('input.input-paid-from').datepicker({
1 www 364
                        'language' : 'es',
365
                        'format' : 'dd/mm/yyyy',
366
                    });
367
 
15137 stevensc 368
                    $('input.input-paid-to').datepicker({
1 www 369
                        'language' : 'es',
370
                        'format' : 'dd/mm/yyyy',
371
                    });
372
 
373
 
374
                    $('#modalServices').modal('show');
375
 
376
                } else {
377
                    $.fn.showError(response['data']);
378
                }
379
            }).fail(function( jqXHR, textStatus, errorThrown) {
380
                $.fn.showError(textStatus);
381
            }).always(function() {
382
                NProgress.done();
383
            });
384
 
385
        });
386
 
387
        $('#form-services').submit(function (e) {
388
            e.preventDefault();
389
            NProgress.start();
390
            $.ajax({
391
                'dataType'  : 'json',
392
                'accept'    : 'application/json',
393
                'method'    : 'post',
394
                'url'       : $('#form-services').attr('action'),
395
                'data'      : $('#form-services').serialize(),
396
            }).done(function(response) {
397
                if(response['success']) {
398
 
399
                    $.fn.showSuccess(response['data']);
400
                    $('#modalServices').modal('hide');
401
                    gridTable.api().ajax.reload(null, false);
402
 
403
                } else {
404
                    $.fn.showError(response['data']);
405
                }
406
            }).fail(function( jqXHR, textStatus, errorThrown) {
407
                $.fn.showError(textStatus);
408
            }).always(function() {
409
                NProgress.done();
410
            });
411
            return false;
412
 
413
        });
414
 
415
        $('body').on('click', 'button.btn-roles', function(e) {
416
            e.preventDefault();
417
 
418
            var href = $(this).data('href');
419
            $('#form-roles').attr('action', href);
420
 
421
            NProgress.start();
422
            $.ajax({
423
                'dataType'  : 'json',
424
                'accept'    : 'application/json',
425
                'method'    : 'get',
426
                            'url'       :  href,
427
            }).done(function(response) {
428
                if(response['success']) {
429
 
430
                    $('#table-roles tbody').empty();
431
 
432
                    $.each(response['data'], function(index, role) {
433
 
434
                        var checked = role['checked'] ? ' checked="checked" ' : '';
435
                        var s = '<tr>';
436
                        s = s + '<td>' + role['name'] + '</td>';
437
 
438
                        s = s + '<td><input id="checked' + role['id'] + '" name="checked' + role['id'] + '" class="form-control" type="checkbox" ' + checked + ' style="width: 20px; height: 20px" value="1"></td>';
439
                        s = s + '</tr>';
440
 
441
                        $('#table-roles tbody').append(s);
442
 
443
                    });
444
 
445
 
446
 
447
                    $('#modalRoles').modal('show');
448
 
449
                } else {
450
                    $.fn.showError(response['data']);
451
                }
452
            }).fail(function( jqXHR, textStatus, errorThrown) {
453
                $.fn.showError(textStatus);
454
            }).always(function() {
455
                NProgress.done();
456
            });
457
 
458
        });
459
 
460
        $('#form-roles').submit(function (e) {
461
            e.preventDefault();
462
            NProgress.start();
463
            $.ajax({
464
                'dataType'  : 'json',
465
                'accept'    : 'application/json',
466
                'method'    : 'post',
467
                'url'       : $('#form-roles').attr('action'),
468
                'data'      : $('#form-roles').serialize(),
469
            }).done(function(response) {
470
                if(response['success']) {
471
 
472
                    $.fn.showSuccess(response['data']);
473
                    $('#modalRoles').modal('hide');
474
                     gridTable.api().ajax.reload(null, false);
475
 
476
                } else {
477
                    $.fn.showError(response['data']);
478
                }
479
            }).fail(function( jqXHR, textStatus, errorThrown) {
480
                $.fn.showError(textStatus);
481
            }).always(function() {
482
                NProgress.done();
483
            });
484
            return false;
485
 
486
        });
487
 
488
      $('body').on('click', 'button.btn-edit', function(e) {
489
            e.preventDefault();
490
 
491
            var href = $(this).data('href');
492
            $('#form-edit').attr('action', href);
493
 
494
            NProgress.start();
495
            $.ajax({
496
                'dataType'  : 'json',
497
                'accept'    : 'application/json',
498
                'method'    : 'get',
499
                            'url'       :  href,
500
            }).done(function(response) {
501
                if(response['success']) {
502
 
503
                    $('#form-edit #status').val(response['data']['status']);
504
                    $('#form-edit #user_uuid').empty();
505
 
506
                    $.each(response['data']['users'], function(index, user) {
507
 
508
 
509
                        var s = '<option value="' + user['uuid'] + '">' + user['name'] + '</option>';
510
                        $('#form-edit #user_uuid').append(s);
511
 
512
                    });
513
 
514
                    $('#form-edit #user_uuid').val(response['data']['creator']);
515
 
516
                    $('#modalEdit').modal('show');
517
 
518
                } else {
519
                    $.fn.showError(response['data']);
520
                }
521
            }).fail(function( jqXHR, textStatus, errorThrown) {
522
                $.fn.showError(textStatus);
523
            }).always(function() {
524
                NProgress.done();
525
            });
526
 
527
        });
528
 
529
        $('#form-edit').submit(function (e) {
530
            e.preventDefault();
531
            NProgress.start();
532
            $.ajax({
533
                'dataType'  : 'json',
534
                'accept'    : 'application/json',
535
                'method'    : 'post',
536
                'url'       : $('#form-edit').attr('action'),
537
                'data'      : $('#form-edit').serialize(),
538
            }).done(function(response) {
539
                if(response['success']) {
540
 
541
                    $.fn.showSuccess(response['data']);
542
                    $('#modalEdit').modal('hide');
543
                     gridTable.api().ajax.reload(null, false);
544
 
545
                } else {
546
                    $.fn.showError(response['data']);
547
                }
548
            }).fail(function( jqXHR, textStatus, errorThrown) {
549
                $.fn.showError(textStatus);
550
            }).always(function() {
551
                NProgress.done();
552
            });
553
            return false;
554
 
555
        });
556
 
557
 
558
        $('body').on('click', 'button.btn-cancel', function(e) {
559
            e.preventDefault();
560
            $('#modalServices').modal('hide');
561
            $('#modalRoles').modal('hide');
562
            $('#modalEdit').modal('hide');
563
 
564
 
565
        });
566
 
567
        $('#form-filter #status').change(function(e) {
568
            e.preventDefault();
569
 
570
             gridTable.api().ajax.reload(null, false);
571
        });
572
 
573
 
574
 
575
 
576
    });
577
JS;
578
$this->inlineScript()->captureEnd();
579
?>
580
 
15127 stevensc 581
 
582
 
1 www 583
<!-- Content Header (Page header) -->
584
<section class="content-header">
15127 stevensc 585
    <div class="container-fluid">
586
        <div class="row mb-2">
587
            <div class="col-sm-12">
588
                <h1>LABEL_COMPANIES</h1>
589
            </div>
590
        </div>
591
    </div><!-- /.container-fluid -->
1 www 592
</section>
593
 
594
<section class="content">
15127 stevensc 595
    <div class="container-fluid">
596
        <div class="row">
597
            <div class="col-md-12 col-sm-12">
598
                <form name="form-filter" id="form-filter">
599
                    <div class="form-group">
600
                        <label for="status">LABEL_STATUS</label>
601
                        <select id="status" name="status" class="form-control">
602
                            <option value="">LABEL_ALL</option>
603
                            <option value="<?php echo Company::STATUS_PENDING ?>">LABEL_PENDING</option>
604
                            <option value="<?php echo Company::STATUS_ACTIVE ?>">LABEL_ACTIVE</option>
605
                            <option value="<?php echo Company::STATUS_INACTIVE ?>">LABEL_INACTIVE</option>
606
                            <option value="<?php echo Company::STATUS_DELETED ?>">LABEL_DELETED</option>
607
                            <option value="<?php echo Company::STATUS_REJECTED ?>">LABEL_REJECTED</option>
608
                        </select>
609
                    </div>
610
                </form>
611
            </div>
612
        </div>
613
        <div class="row">
614
            <div class="col-12">
615
                <div class="card">
616
                    <div class="card-body">
617
                        <table id="gridTable" class="table table-bordered table-hover">
618
                            <thead>
619
                                <tr>
620
                                    <th style="width: 30%">LABEL_NAME</th>
621
                                    <th style="width: 30%">LABEL_DETAILS</th>
622
                                    <th style="width: 30%">LABEL_SECURITY</th>
623
                                    <th style="width: 10%">LABEL_ACTIONS</th>
1 www 624
                                </tr>
15127 stevensc 625
                            </thead>
626
                            <tbody>
627
                            </tbody>
628
                        </table>
629
                    </div>
630
                    <div class="card-footer clearfix">
631
                        <div style="float:right;">
632
                            <button type="button" class="btn btn-sm btn-info btn-refresh"><i class="fa fa-refresh"></i> LABEL_REFRESH </button>
633
                        </div>
634
                    </div>
635
                </div>
636
            </div>
637
        </div>
638
    </div>
1 www 639
</section>
640
 
641
<!-- The Modal -->
642
<div class="modal" id="modalServices">
15127 stevensc 643
    <div class="modal-dialog  modal-xl">
644
        <div class="modal-content">
1 www 645
 
646
            <!-- Modal Header -->
15127 stevensc 647
            <div class="modal-header">
648
                <h4 class="modal-title">LABEL_SERVICES</h4>
649
                <button type="button" class="close" data-dismiss="modal">&times;</button>
650
            </div>
1 www 651
 
652
            <!-- Modal body -->
15127 stevensc 653
            <div class="modal-body">
654
                <form name="form-services" id="form-services">
655
                    <table id="table-services" class="table table-bordered table-hover">
656
                        <thead>
657
                            <tr>
658
                                <th>LABEL_NAME</th>
659
                                <th>LABEL_STATUS</th>
660
                                <th>LABEL_PAID_FROM</th>
661
                                <th>LABEL_PAID_TO</th>
662
                            </tr>
663
                        </thead>
664
                        <tbody>
665
                        </tbody>
666
                    </table>
1 www 667
 
668
 
669
 
15127 stevensc 670
                    <div class="form-group">
671
                        <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
672
                        <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
673
                    </div>
674
                </form>
675
            </div>
1 www 676
 
15127 stevensc 677
        </div>
678
    </div>
679
</div>
1 www 680
 
15127 stevensc 681
 
1 www 682
<!-- The Modal -->
683
<div class="modal" id="modalRoles">
15127 stevensc 684
    <div class="modal-dialog  modal-xl">
685
        <div class="modal-content">
1 www 686
 
687
            <!-- Modal Header -->
15127 stevensc 688
            <div class="modal-header">
689
                <h4 class="modal-title">LABEL_ROLES</h4>
690
                <button type="button" class="close" data-dismiss="modal">&times;</button>
691
            </div>
1 www 692
 
693
            <!-- Modal body -->
15127 stevensc 694
            <div class="modal-body">
695
                <form name="form-roles" id="form-roles">
696
                    <table id="table-roles" class="table table-bordered table-hover">
697
                        <thead>
698
                            <tr>
699
                                <th>LABEL_NAME</th>
700
                                <th>LABEL_ACTIVE</th>
701
                            </tr>
702
                        </thead>
703
                        <tbody>
704
                        </tbody>
705
                    </table>
1 www 706
 
707
 
708
 
15127 stevensc 709
                    <div class="form-group">
710
                        <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
711
                        <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
712
                    </div>
713
                </form>
714
            </div>
715
 
716
        </div>
717
    </div>
1 www 718
</div>
719
 
720
 
721
<!-- The Modal -->
722
<div class="modal" id="modalEdit">
15127 stevensc 723
    <div class="modal-dialog  modal-xl">
724
        <div class="modal-content">
1 www 725
 
726
            <!-- Modal Header -->
15127 stevensc 727
            <div class="modal-header">
728
                <h4 class="modal-title">LABEL_EDIT</h4>
729
                <button type="button" class="close" data-dismiss="modal">&times;</button>
730
            </div>
1 www 731
 
732
            <!-- Modal body -->
15127 stevensc 733
            <div class="modal-body">
734
                <form name="form-edit" id="form-edit">
1 www 735
 
15127 stevensc 736
                    <div class="form-group">
737
                        <label for="status">LABEL_STATUS</label>
738
                        <select id="status" name="status" class="form-control">
739
                            <option value="<?php echo Company::STATUS_ACTIVE ?>">LABEL_ACTIVE</option>
740
                            <option value="<?php echo Company::STATUS_INACTIVE ?>">LABEL_INACTIVE</option>
741
                            <option value="<?php echo Company::STATUS_DELETED ?>">LABEL_DELETED</option>
742
                            <option value="<?php echo Company::STATUS_PENDING ?>">LABEL_PENDING</option>
743
                            <option value="<?php echo Company::STATUS_REJECTED ?>">LABEL_REJECTED</option>
744
                        </select>
745
                    </div>
746
                    <div class="form-group">
747
                        <label for="user_uuid">LABEL_CREATED_BY</label>
748
                        <select id="user_uuid" name="user_uuid" class="form-control">
1 www 749
 
15127 stevensc 750
                        </select>
751
                    </div>
1 www 752
 
15127 stevensc 753
 
754
                    <div class="form-group">
755
                        <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
756
                        <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
757
                    </div>
758
                </form>
759
            </div>
760
 
761
        </div>
762
    </div>
763
</div>