Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
1631 eleazar 1
<?php
2
$acl = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser = $this->currentUserHelper();
4
$roleName = $currentUser->getUserTypeId();
1481 eleazar 5
 
1482 eleazar 6
$routeDatatable = $this->url('recruitment-and-selection/candidates');
1637 eleazar 7
$routeEmail = $this->url('recruitment-and-selection/user-by-email');
1506 eleazar 8
$routeAdd = $this->url('recruitment-and-selection/candidates/add', ['vacancy_uuid' => 'UUID_PLACEHOLDER']);
1481 eleazar 9
 
1482 eleazar 10
$allowAdd = $acl->isAllowed($roleName, 'recruitment-and-selection/candidates/add') ? 1 : 0;
11
$allowDelete = $acl->isAllowed($roleName, 'recruitment-and-selection/candidates/delete') ? 1 : 0;
1613 eleazar 12
$allowEdit = $acl->isAllowed($roleName, 'recruitment-and-selection/candidates/edit') ? 1 : 0;
1636 eleazar 13
$allowEmail = $acl->isAllowed($roleName, 'recruitment-and-selection/user-by-email') ? 1 : 0;
1481 eleazar 14
 
15
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
16
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
17
 
1649 eleazar 18
$this->inlineScript()->appendFile($this->basePath('plugins/ckeditor/ckeditor.js'));
1481 eleazar 19
 
20
$this->inlineScript()->appendFile($this->basePath('plugins/bootbox/bootbox.min.js'));
21
 
1490 eleazar 22
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/css/fileinput.min.css'));
23
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.css'));
1481 eleazar 24
 
1490 eleazar 25
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/piexif.js'));
26
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/sortable.js'));
27
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/fileinput.js'));
28
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/locales/es.js'));
29
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/fas/theme.js'));
30
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.js'));
31
 
32
 
1481 eleazar 33
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
34
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
35
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
36
 
37
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
38
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-responsive/css/responsive.bootstrap4.min.css'));
39
 
40
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
41
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
42
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/dataTables.responsive.min.js'));
43
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-responsive/js/responsive.bootstrap4.min.js'));
44
 
45
 
46
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
47
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
48
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
49
 
50
 
51
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
52
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
53
 
1886 eleazar 54
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/select2.js'));
55
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/i18n/es.js'));
56
$this->headLink()->appendStylesheet($this->basePath('plugins/select2/css/select2.css'));
57
 
58
$this->headLink()->appendStylesheet($this->basePath('plugins/select2-bootstrap4-theme/select2-bootstrap4.css'));
59
 
1481 eleazar 60
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
61
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-checkbox/awesome-bootstrap-checkbox.css'));
62
 
63
 
3880 eleazar 64
$status_active = \LeadersLinked\Model\RecruitmentSelectionCandidate::STATUS_ACEPTED;
3878 eleazar 65
$status_inactive = \LeadersLinked\Model\RecruitmentSelectionCandidate::STATUS_REJECTED;
1649 eleazar 66
 
1658 eleazar 67
$evaluation_0 = \LeadersLinked\Model\RecruitmentSelectionCandidate::EVALUATION_0;
68
$evaluation_1 = \LeadersLinked\Model\RecruitmentSelectionCandidate::EVALUATION_1;
69
$evaluation_2 = \LeadersLinked\Model\RecruitmentSelectionCandidate::EVALUATION_2;
70
$evaluation_3 = \LeadersLinked\Model\RecruitmentSelectionCandidate::EVALUATION_3;
71
$evaluation_4 = \LeadersLinked\Model\RecruitmentSelectionCandidate::EVALUATION_4;
1649 eleazar 72
 
1481 eleazar 73
$this->inlineScript()->captureStart();
74
echo <<<JS
8565 efrain 75
    $.prototype.fileinput.Constructor.prototype["setUploadUrl"] = function(url) {
76
        this.uploadUrl = url;
77
    }
78
 
79
 
1631 eleazar 80
jQuery(document).ready(function ($) {
8557 efrain 81
 
82
 
83
 
1481 eleazar 84
    var allowAdd = $allowAdd;
1613 eleazar 85
    var allowDelete = $allowDelete;
86
    var allowEdit = $allowEdit;
1630 eleazar 87
    var allowEmail = $allowEmail;
1481 eleazar 88
 
1631 eleazar 89
    var gridTable = $('#gridTable').dataTable({
90
        'processing': true,
91
        'serverSide': true,
92
        'searching': true,
93
        'order': [[1, 'asc']],
94
        'ordering': true,
95
        'ordenable': true,
96
        'responsive': true,
97
        'select': false,
98
        'paging': true,
99
        'pagingType': 'simple_numbers',
100
        'lengthMenu': [[10, 25, 50, -1], [10, 25, 50, 'All']],
1481 eleazar 101
 
1631 eleazar 102
        'ajax': {
103
            'url': '$routeDatatable',
104
            'type': 'get',
105
            'data': function (d) {
1481 eleazar 106
            },
1631 eleazar 107
            'beforeSend': function (request) {
108
                NProgress.start();
109
            },
110
            'dataFilter': function (response) {
111
                var response = jQuery.parseJSON(response);
1481 eleazar 112
 
1631 eleazar 113
                var json = {};
114
                json.recordsTotal = 0;
115
                json.recordsFiltered = 0;
116
                json.data = [];
1481 eleazar 117
 
1631 eleazar 118
                if (response.success) {
119
                    json.recordsTotal = response.data.total;
120
                    json.recordsFiltered = response.data.total;
121
                    json.data = response.data.items;
122
                } else {
123
                    $.fn.showError(response.data)
124
                }
1484 eleazar 125
 
1631 eleazar 126
                return JSON.stringify(json);
127
            }
128
        },
129
        'language': {
130
            'sProcessing': 'LABEL_DATATABLE_SPROCESSING',
131
            'sLengthMenu': 'LABEL_DATATABLE_SLENGTHMENU',
132
            'sZeroRecords': 'LABEL_DATATABLE_SZERORECORDS',
133
            'sEmptyTable': 'LABEL_DATATABLE_SEMPTYTABLE',
134
            'sInfo': 'LABEL_DATATABLE_SINFO',
135
            'sInfoEmpty': 'LABEL_DATATABLE_SINFOEMPTY',
136
            'sInfoFiltered': 'LABEL_DATATABLE_SINFOFILTERED',
137
            'sInfoPostFix': '',
138
            'sSearch': 'LABEL_DATATABLE_SSEARCH',
139
            'sUrl': '',
140
            'sInfoThousands': ',',
141
            'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
142
            'oPaginate': {
143
                'sFirst': 'LABEL_DATATABLE_SFIRST',
144
                'sLast': 'LABEL_DATATABLE_SLAST',
145
                'sNext': 'LABEL_DATATABLE_SNEXT',
146
                'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
147
            },
148
            'oAria': {
149
                'sSortAscending': ': LABEL_DATATABLE_SSORTASCENDING',
150
                'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
151
            },
152
        },
153
        'drawCallback': function (settings) {
154
            NProgress.done();
155
            $('button.btn-delete').confirmation({
156
                rootSelector: 'button.btn-delete',
157
                title: 'LABEL_ARE_YOU_SURE',
158
                singleton: true,
159
                btnOkLabel: 'LABEL_YES',
160
                btnCancelLabel: 'LABEL_NO',
161
                onConfirm: function (value) {
162
                    action = $(this).data('href');
163
                    NProgress.start();
164
                    $.ajax({
165
                        'dataType': 'json',
166
                        'accept': 'application/json',
167
                        'method': 'post',
168
                        'url': action,
169
                    }).done(function (response) {
170
                        if (response['success']) {
171
                            $.fn.showSuccess(response['data']);
172
                            gridTable.api().ajax.reload(null, false);
173
                        } else {
174
                            $.fn.showError(response['data']);
175
                        }
176
                    }).fail(function (jqXHR, textStatus, errorThrown) {
177
                        $.fn.showError(textStatus);
178
                    }).always(function () {
179
                        NProgress.done();
180
                    });
181
                },
182
            });
1484 eleazar 183
 
1631 eleazar 184
            $('#form-add #file').fileinput({
185
                theme: 'fas',
186
                language: 'es',
187
                showUpload: false,
188
                dropZoneEnabled: false,
189
                maxFileCount: 1,
190
                allowedFileExtensions: ['pdf', 'docx'],
191
            });
1484 eleazar 192
 
8567 eleazar 193
            $('#form-edit #file').fileinput({
8570 eleazar 194
                theme: 'fas',
195
                language: 'es',
8614 eleazar 196
                showUpload: false,
197
                initialPreviewAsData: true,
8615 eleazar 198
                dropZoneEnabled: false,
8570 eleazar 199
                maxFileCount: 1,
8567 eleazar 200
                allowedFileExtensions: ['pdf', 'docx'],
201
            });
202
 
203
 
1631 eleazar 204
            $('body').on('click', 'button.btn-add', function (e) {
205
                e.preventDefault();
1484 eleazar 206
 
1660 eleazar 207
                $('#form-add #user_id').val('');
1631 eleazar 208
                $('#form-add #first_name').val('');
209
                $('#form-add #last_name').val('');
210
                $('#form-add #email').val('');
211
                $('#form-add #file').fileinput('reset');
212
                $('#form-add #file').val('');
1649 eleazar 213
                $('#form-add #status').val('$status_active');
1659 eleazar 214
                $('#form-add #evaluation').val('$evaluation_0');
3866 eleazar 215
                $('#first-step').show();
3877 eleazar 216
                $('#second-step').hide();
1653 eleazar 217
                CKEDITOR.instances.coment.setData('');
1631 eleazar 218
                validatorAdd.resetForm();
8600 eleazar 219
 
1631 eleazar 220
                $('#add-candidate-box').modal('show');
221
                return false;
222
            });
1616 eleazar 223
 
1631 eleazar 224
            $(".close-box, .btn-add-cancel").on("click", function (e) {
225
                e.preventDefault();
3852 eleazar 226
                $('#form-add #first_name').prop("disabled", false);
227
                $('#form-add #last_name').prop('disabled', false);
3866 eleazar 228
                $('#secon-step').hide();
1631 eleazar 229
                $('#add-candidate-box').modal('hide');
230
                $('#edit-candidate-box').modal('hide');
231
                return false;
1616 eleazar 232
            });
233
 
1631 eleazar 234
            var validatorEdit = $('#form-edit').validate({
235
                debug: true,
236
                onclick: false,
237
                onkeyup: false,
238
                onfocusout: false,
239
                ignore: [],
240
                rules: {
1660 eleazar 241
                    'user_id': {
242
                        required: false,
243
                    },
1631 eleazar 244
                    'first_name': {
245
                        required: true,
246
                        maxlength: 128,
247
                    },
248
                    'file': {
249
                        required: false,
250
                        extension: 'pdf|docx',
251
                        accept: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword,application/pdf'
252
                    },
253
                    'last_name': {
254
                        required: true,
255
                    },
256
                    'email': {
257
                        required: true,
258
                    },
1658 eleazar 259
                    'evaluation':{
1649 eleazar 260
                        required: false,
261
                    },
1654 eleazar 262
                    'coment':{
263
                        updateCkeditor:function() {
1656 eleazar 264
                        CKEDITOR.instances.coment.updateElement();
1654 eleazar 265
                        },
1649 eleazar 266
                    },
1631 eleazar 267
                    'status': {
268
                        required: true,
269
                    }
270
                },
271
                submitHandler: function (form) {
272
                    var formdata = false;
273
                    if (window.FormData) {
274
                        formdata = new FormData(form); //form[0]);
275
                    }
1616 eleazar 276
 
1631 eleazar 277
                    $('input[type="submit"]').prop('disabled', true);
1616 eleazar 278
 
1631 eleazar 279
                    $.ajax({
280
                        'dataType': 'json',
281
                        'accept': 'application/json',
282
                        'method': 'post',
283
                        'url': $('#form-edit').attr('action'),
284
                        'data': formdata,
285
                        'processData': false,
286
                        'contentType': false,
287
                    }).done(function (response) {
288
                        if (response['success']) {
289
                            $.fn.showSuccess(response['data']);
290
 
291
                            $('#edit-candidate-box').modal('hide');
292
                            gridTable.api().ajax.reload(null, false);
293
                        } else {
294
                            validatorEdit.resetForm();
295
                            if (jQuery.type(response['data']) == 'string') {
296
                                $.fn.showError(response['data']);
297
                            } else {
298
                                $.each(response['data'], function (fieldname, errors) {
299
                                    $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors);
300
                                });
301
                            }
302
                        }
303
                    }).fail(function (jqXHR, textStatus, errorThrown) {
304
                        $.fn.showError(textStatus);
305
                    }).always(function () {
306
                        NProgress.done();
307
                    });
308
                    return false;
309
                },
310
                invalidHandler: function (form, validator) {
311
 
1616 eleazar 312
                }
313
            });
314
 
1631 eleazar 315
            $('body').on('click', 'button.btn-edit', function (e) {
316
                e.preventDefault();
1486 eleazar 317
 
1631 eleazar 318
                var url = $(this).data('href');
319
                $.ajax({
320
                    'dataType': 'json',
321
                    'accept': 'application/json',
322
                    'method': 'get',
323
                    'url': url,
324
                }).done(function (response) {
325
                    if (response['success']) {
8603 eleazar 326
                        $('#form-edit')[0].reset();
1486 eleazar 327
 
8603 eleazar 328
                        $('#form-edit').attr('action', url);
1660 eleazar 329
 
8603 eleazar 330
                        $('#form-edit #first_name').val(response['data']['user_id']);
331
                        $('#form-edit #first_name').val(response['data']['first_name']);
332
                        $('#form-edit #last_name').val(response['data']['last_name']);
333
                        $('#form-edit #email').val(response['data']['email']);
334
                        $('#form-edit #status').val(response['data']['status']);
335
                        $('#form-edit #evaluation').val(response['data']['evaluation']);
336
                        $('#form-edit #coment').val(response['data']['coment']);
8620 eleazar 337
                        $('#form-edit #btn-cv').attr('href', response['data']['file']);
338
 
8598 eleazar 339
 
8555 efrain 340
 
8603 eleazar 341
                        $('#form-edit #file').fileinput('reset');
342
                        $('#form-edit #file').fileinput('setUploadUrl', response['data']['file'] );
1631 eleazar 343
 
344
 
8603 eleazar 345
                        $('#form-edit #status').val(response['data']['status']);
1631 eleazar 346
 
8603 eleazar 347
                        $('#edit-candidate-box').modal('show');
1631 eleazar 348
                    } else {
8603 eleazar 349
                        validatorEdit.resetForm();
1631 eleazar 350
                        if (jQuery.type(response['data']) == 'string') {
351
                            $.fn.showError(response['data']);
352
                        } else {
353
                            $.each(response['data'], function (fieldname, errors) {
8603 eleazar 354
                                $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors);
1631 eleazar 355
                            });
356
                        }
1486 eleazar 357
                    }
1631 eleazar 358
                }).fail(function (jqXHR, textStatus, errorThrown) {
359
                    $.fn.showError(textStatus);
360
                }).always(function () {
361
                    NProgress.done();
362
                });
1486 eleazar 363
            });
364
 
1631 eleazar 365
            var validatorAdd = $('#form-add').validate({
366
                debug: true,
367
                onclick: false,
368
                onkeyup: false,
369
                onfocusout: false,
370
                ignore: [],
371
                rules: {
1660 eleazar 372
                    'user_id': {
373
                        required: false,
374
                    },
1631 eleazar 375
                    'first_name': {
376
                        required: true,
377
                        maxlength: 128,
378
                    },
379
                    'file': {
380
                        required: false,
381
                        extension: 'pdf|docx',
382
                        accept: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword,application/pdf'
383
                    },
384
                    'last_name': {
385
                        required: true,
386
                    },
387
                    'email': {
388
                        required: true,
389
                    },
1658 eleazar 390
                    'evaluation':{
1649 eleazar 391
                        required: false,
392
                    },
1654 eleazar 393
                    'coment':{
394
                        updateCkeditor:function() {
1656 eleazar 395
                            CKEDITOR.instances.coment.updateElement();
1654 eleazar 396
                        },
1649 eleazar 397
                    },
1631 eleazar 398
                    'status': {
399
                        required: true,
400
                    }
401
                },
402
                submitHandler: function (form) {
403
                    var formdata = false;
404
                    if (window.FormData) {
405
                        formdata = new FormData(form); //form[0]);
406
                    }
1630 eleazar 407
 
1631 eleazar 408
                    $('input[type="submit"]').prop('disabled', true);
1630 eleazar 409
 
1631 eleazar 410
                    $.ajax({
411
                        'dataType': 'json',
412
                        'accept': 'application/json',
413
                        'method': 'post',
414
                        'url': $('#form-add').attr('action'),
415
                        'data': formdata,
416
                        'processData': false,
417
                        'contentType': false,
418
                    }).done(function (response) {
419
                        if (response['success']) {
420
                            $.fn.showSuccess(response['data']);
421
 
422
                            $('#add-candidate-box').modal('hide');
423
                            gridTable.api().ajax.reload(null, false);
424
                        } else {
425
                            validatorAdd.resetForm();
426
                            if (jQuery.type(response['data']) == 'string') {
427
                                $.fn.showError(response['data']);
428
                            } else {
429
                                $.each(response['data'], function (fieldname, errors) {
430
                                    $.fn.showFormErrorValidator('#form-add #' + fieldname, errors);
431
                                });
432
                            }
433
                        }
434
                    }).fail(function (jqXHR, textStatus, errorThrown) {
435
                        $.fn.showError(textStatus);
436
                    }).always(function () {
437
                        NProgress.done();
438
                    });
439
                    return false;
440
                },
441
                invalidHandler: function (form, validator) {
442
 
1630 eleazar 443
                }
444
            });
445
        },
1631 eleazar 446
        'aoColumns': [
447
            { 'mDataProp': 'first_name' },
448
            { 'mDataProp': 'last_name' },
449
            { 'mDataProp': 'email' },
8889 eleazar 450
            { 'mDataProp': 'status' },
1631 eleazar 451
            { 'mDataProp': 'actions' },
452
        ],
453
        'columnDefs': [
454
            {
8889 eleazar 455
                'targets': -2,
456
                'orderable': false,
457
                'className': 'text-center',
458
                'render': function(data, type, row) {
459
                    checked = data == 'a' ? ' checked="checked" ' : '';
460
                    return '<div class="checkbox checkbox-success">' +
461
                        '<input class="styled" type="checkbox" ' + checked + ' disabled="disabled">' +
462
                        '<label ></label></div>';
463
                }
464
            },
465
            {
1631 eleazar 466
                'targets': -1,
467
                'orderable': false,
468
                'render': function (data, type, row) {
469
                    s = '';
1630 eleazar 470
 
1631 eleazar 471
                    if (allowEdit && data['link_edit']) {
472
                        s = s + '<button class="btn btn-info btn-sm btn-edit" data-href="' + data['link_edit'] + '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button>&nbsp;';
473
                    }
1481 eleazar 474
 
1631 eleazar 475
                    if (allowDelete && data['link_delete']) {
476
                        s = s + '<button class="btn btn-danger btn-sm btn-delete" data-href="' + data['link_delete'] + '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-times"></i> LABEL_DELETE </button>&nbsp;';
477
                    }
1614 eleazar 478
 
1631 eleazar 479
                    return s;
1481 eleazar 480
                }
1631 eleazar 481
            }
482
        ],
483
    });
1481 eleazar 484
 
1631 eleazar 485
    $('#form-filter #form_uuid').change(function (e) {
1481 eleazar 486
        e.preventDefault();
487
 
1503 eleazar 488
        var uuid = e.target.value;
489
 
1507 eleazar 490
        $('#form-add').attr('action', String("$routeAdd").replaceAll('UUID_PLACEHOLDER', uuid));
1503 eleazar 491
 
1599 eleazar 492
        gridTable.api().ajax.url("$routeDatatable" + "/" + uuid);
1481 eleazar 493
        gridTable.api().ajax.reload(null, false);
494
    })
495
 
496
 
1631 eleazar 497
    $('body').on('click', 'button.btn-refresh', function (e) {
1481 eleazar 498
        e.preventDefault();
499
        gridTable.api().ajax.reload(null, false);
500
    });
1507 eleazar 501
 
3875 eleazar 502
    $('body').on('click', '#btn-next', function () {
3869 eleazar 503
       $("#first-step").hide();
504
       $("#second-step").show();
505
    });
506
 
1507 eleazar 507
    $('#form-filter #form_uuid').change();
1642 eleazar 508
 
509
    $('body').on('click', '#check-email', function () {
510
        $.ajax("$routeEmail", {
511
            accepts: 'application/json',
512
            method: 'GET',
513
            data: {
514
                'email': $('#form-add #email').val(),
515
            }
1648 eleazar 516
        }).done(function (response) {
517
            if (response['success']) {
1662 eleazar 518
                $('#form-add #user_id').val(response['data']['user_id']);
1648 eleazar 519
                $('#form-add #first_name').val(response['data']['first_name']);
520
                $('#form-add #last_name').val(response['data']['last_name']);
3876 eleazar 521
               // $('#form-add #first_name').prop("disabled", true);
522
               // $('#form-add #last_name').prop('disabled', true);
1648 eleazar 523
            } else {
1646 eleazar 524
                $.fn.showError(response['data']);
525
            }
526
        }).fail(function (jqXHR, textStatus, errorThrown) {
527
            $.fn.showError(textStatus);
528
        }).always(function () {
529
            NProgress.done();
530
        });
1648 eleazar 531
    })
1655 eleazar 532
 
8767 stevensc 533
    CKEDITOR.replace('coment', {
534
        toolbar: [
535
                    { name: 'editing', items: ['Scayt'] },
536
                    { name: 'links', items: ['Link', 'Unlink'] },
537
                    { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'] },
538
                    { name: 'basicstyles', items: ['Bold', 'Italic', 'Strike', 'RemoveFormat'] },
539
                    '/',
540
                    { name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar'] },
541
                    { name: 'styles', items: ['Styles', 'Format'] },
542
                    { name: 'tools', items: ['Maximize'] }
543
                ],
544
                removePlugins: 'elementspath,Anchor',
545
                heigth: 100
546
    });
1481 eleazar 547
});
548
JS;
549
$this->inlineScript()->captureEnd();
9954 stevensc 550
 
10135 stevensc 551
$jsonVacancies = json_encode($vacancies);
10131 stevensc 552
 
9954 stevensc 553
$js = <<<JS
554
	const backendVariables= {
555
		email_link: "$routeEmail",
556
        add_link: "$routeAdd",
557
        table_link: "$routeDatatable",
10753 stevensc 558
        vacancies: $jsonVacancies,
9954 stevensc 559
        permisions: {
560
            allowAdd: $allowAdd,
561
            allowEdit: $allowEdit,
562
            allowDelete: $allowDelete,
563
            allowEmail: $allowEmail
564
        }
565
	}
566
JS;
567
 
568
$this->inlineScript()->appendScript($js);
569
$this->headLink()->appendStylesheet($this->basePath('/react-bundles/recruitment_and_selection/candidates/main.css'));
570
$this->inlineScript()->appendFile('/react-bundles/recruitment_and_selection/candidates/candidatesBundle.js');
1481 eleazar 571
?>
572
 
9954 stevensc 573
<div id="recruitment-candidates">
574
</div>
1481 eleazar 575
 
576
<!-- Content Header (Page header) -->
577
<section class="content-header">
1631 eleazar 578
    <div class="container-fluid">
579
        <div class="row mb-2">
580
            <div class="col-sm-12">
4241 eleazar 581
                <h1>LABEL_PRE_SELECTION</h1>
1631 eleazar 582
            </div>
583
        </div>
584
    </div><!-- /.container-fluid -->
1481 eleazar 585
</section>
586
 
587
<section class="content">
1631 eleazar 588
    <div class="container-fluid">
589
        <div class="row">
590
            <div class="col-12">
591
                <div class="card">
592
                    <div class="card-header">
593
                        <?php
1486 eleazar 594
                        // $form = $this->form;
1631 eleazar 595
                        $form->setAttributes([
596
                            'name' => 'form-filter',
597
                            'id' => 'form-filter',
1481 eleazar 598
                        ]);
1631 eleazar 599
 
1481 eleazar 600
                        $form->prepare();
601
                        echo $this->form()->openTag($form);
1631 eleazar 602
                        ?>
1481 eleazar 603
                        <div class="row">
604
                            <div class="col-md-6 col-sm-12">
605
                                <div class="form-group">
606
                                    <?php
607
                                    $element = $form->get('form_uuid');
1631 eleazar 608
 
1484 eleazar 609
                                    $element->setOptions(['label' => 'LABEL_VACANCIES']);
1631 eleazar 610
 
1481 eleazar 611
                                    $element->setAttributes(['class' => 'form-control']);
612
                                    echo $this->formLabel($element);
613
                                    echo $this->formSelect($element);
614
                                    ?>
1631 eleazar 615
                                </div>
1481 eleazar 616
                            </div>
617
 
618
                        </div>
1631 eleazar 619
                        <?php echo $this->form()->closeTag($form); ?>
620
                    </div>
621
                    <div class="card-body">
622
                        <table id="gridTable" class="table   table-hover">
623
                            <thead>
624
                            <tr>
625
                                <th>LABEL_FIRST_NAME</th>
626
                                <th>LABEL_LAST_NAME</th>
627
                                <th>LABEL_EMAIL</th>
8889 eleazar 628
                                <th>LABEL_STATUS</th>
1631 eleazar 629
                                <th>LABEL_ACTIONS</th>
630
                            </tr>
631
                            </thead>
632
                            <tbody>
633
                            </tbody>
634
                        </table>
635
                    </div>
636
                    <div class="card-footer clearfix">
637
                        <div style="float:right;">
638
                            <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-refresh"></i>
639
                                LABEL_REFRESH
640
                            </button>
641
                            <?php if ($allowAdd) : ?>
642
                                <button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i>
643
                                    LABEL_ADD
644
                                </button>
645
                            <?php endif; ?>
646
                        </div>
647
                    </div>
648
                </div>
649
            </div>
650
        </div>
651
    </div>
652
</section>
1616 eleazar 653
 
654
<!-- The Add Modal -->
655
<div class="modal" tabindex="-1" role="dialog" id="add-candidate-box">
1631 eleazar 656
    <div class="modal-dialog" role="document">
657
        <?php
2121 eleazar 658
        //$form = $this->formAdd;
1631 eleazar 659
        $form->setAttributes([
660
            'method' => 'post',
661
            'name' => 'form-add',
662
            'action' => $routeAdd,
663
            'email' => $routeEmail,
664
            'id' => 'form-add'
665
        ]);
666
        $form->prepare();
667
        echo $this->form()->openTag($form);
668
 
1660 eleazar 669
        $fields = ['user_id'];
670
 
671
        foreach($fields as $field)
672
        {
673
            $element = $form->get($field);
674
            echo $this->formHidden($element);
675
        }
676
 
1631 eleazar 677
        ?>
678
        <div class="modal-content">
679
            <div class="modal-header">
680
                <h3 class="modal-title">LABEL_NEW_CANDIDATE</h3>
681
            </div>
682
            <div class="modal-body">
3863 eleazar 683
                <div id="first-step" style="display: none;">
684
                    <div class="form-group">
685
                        <?php
686
                        $element = $form->get('email');
687
                        $element->setOptions(['label' => 'LABEL_EMAIL']);
688
                        $element->setAttributes(['class' => 'form-control']);
689
                        echo $this->formLabel($element);
690
                        echo $this->formText($element);
691
                        ?>
692
                    </div>
693
                    <button id="check-email" type="button" class="btn btn-primary">LABEL_CHECK_EMAIL</button>
694
                    <div class="form-group">
695
                        <?php
696
                        $element = $form->get('first_name');
697
                        $element->setOptions(['label' => 'LABEL_FIRST_NAME']);
698
                        $element->setAttributes(['class' => 'form-control']);
699
                        echo $this->formLabel($element);
700
                        echo $this->formText($element);
701
                        ?>
702
                    </div>
703
                    <div class="form-group">
704
                        <?php
705
                        $element = $form->get('last_name');
706
                        $element->setOptions(['label' => 'LABEL_LAST_NAME']);
707
                        $element->setAttributes(['class' => 'form-control']);
708
                        echo $this->formLabel($element);
709
                        echo $this->formText($element);
710
                        ?>
711
                    </div>
712
                    <div class="modal-footer">
3871 eleazar 713
                        <button id="btn-next" type="button" class="btn btn-primary">LABEL_NEXT</button>
3863 eleazar 714
                    </div>
1631 eleazar 715
                </div>
3863 eleazar 716
                <div id="second-step" style="display: none;">
3821 eleazar 717
                    <div class="form-group">
718
              	       <?php
719
                         $element = $form->get('coment');
720
                         $element->setAttributes(['class' => 'form-control']);
721
                         $element->setOptions(['label' => 'LABEL_COMMENT']);
722
                         echo $this->formLabel($element);
723
                         echo $this->formTextArea($element);
724
                        ?>
725
      	            </div>
726
                      <div class="form-group">
727
                        <?php
728
                        $element = $form->get('evaluation');
729
                        $element->setAttributes(['class' => 'form-control']);
730
                        $element->setOptions(['label' => 'LABEL_EVALUATION']);
731
                        echo $this->formLabel($element);
732
                        echo $this->formSelect($element);
733
                        ?>
734
                    </div>
735
                    <div class="form-group">
736
                        <?php
737
                        $element = $form->get('file');
738
                        $element->setAttributes(['class' => 'form-control', 'accept' => 'pdf/docx']);
739
                        $element->setOptions(['label' => 'LABEL_CURRICULUM']);
740
                        echo $this->formLabel($element);
741
                        ?>
742
                        <div class="file-loading">
743
                            <?php echo $this->formFile($element); ?>
744
                        </div>
1493 eleazar 745
                    </div>
3821 eleazar 746
                    <div class="form-group">
747
                        <?php
748
                        $element = $form->get('status');
749
                        $element->setAttributes(['class' => 'form-control']);
750
                        $element->setOptions(['label' => 'LABEL_STATUS']);
751
                        echo $this->formLabel($element);
752
                        echo $this->formSelect($element);
753
                        ?>
754
                    </div>
3863 eleazar 755
                    <div class="modal-footer">
756
                        <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
757
                        <button type="button" class="btn btn-default btn-add-cancel">LABEL_CANCEL</button>
758
                    </div>
1631 eleazar 759
                </div>
760
            </div>
3863 eleazar 761
 
1631 eleazar 762
            <?php echo $this->form()->closeTag($form); ?>
763
        </div>
764
    </div>
1616 eleazar 765
</div>
766
 
767
<!-- The Edit Modal -->
768
<div class="modal" tabindex="-1" role="dialog" id="edit-candidate-box">
1631 eleazar 769
    <div class="modal-dialog" role="document">
770
        <?php
771
        $form->setAttributes([
772
            'method' => 'post',
773
            'name' => 'form-edit',
774
            'id' => 'form-edit'
775
        ]);
776
        $form->prepare();
777
        echo $this->form()->openTag($form);
778
 
1660 eleazar 779
        $fields = ['user_id'];
780
 
781
        foreach($fields as $field)
782
        {
783
            $element = $form->get($field);
784
            echo $this->formHidden($element);
785
        }
786
 
1631 eleazar 787
        ?>
788
        <div class="modal-content">
789
            <div class="modal-header">
790
                <h3 class="modal-title">LABEL_CANDIDATE</h3>
791
            </div>
792
            <div class="modal-body">
793
                <div class="form-group">
794
                    <?php
795
                    $element = $form->get('first_name');
796
                    $element->setOptions(['label' => 'LABEL_FIRST_NAME']);
797
                    $element->setAttributes(['class' => 'form-control']);
798
                    echo $this->formLabel($element);
799
                    echo $this->formText($element);
1616 eleazar 800
                    ?>
1631 eleazar 801
                </div>
802
                <div class="form-group">
803
                    <?php
804
                    $element = $form->get('last_name');
805
                    $element->setOptions(['label' => 'LABEL_LAST_NAME']);
806
                    $element->setAttributes(['class' => 'form-control']);
807
                    echo $this->formLabel($element);
808
                    echo $this->formText($element);
1616 eleazar 809
                    ?>
1631 eleazar 810
                </div>
811
                <div class="form-group">
812
                    <?php
813
                    $element = $form->get('email');
814
                    $element->setOptions(['label' => 'LABEL_EMAIL']);
815
                    $element->setAttributes(['class' => 'form-control']);
816
                    echo $this->formLabel($element);
817
                    echo $this->formText($element);
1616 eleazar 818
                    ?>
1631 eleazar 819
                </div>
820
                <div class="form-group">
1649 eleazar 821
              	   <?php
1652 eleazar 822
                     $element = $form->get('coment');
1649 eleazar 823
                     $element->setAttributes(['class' => 'form-control']);
1657 eleazar 824
                     $element->setOptions(['label' => 'LABEL_COMMENT']);
1649 eleazar 825
                     echo $this->formLabel($element);
826
                     echo $this->formTextArea($element);
827
                    ?>
828
      	        </div>
829
                  <div class="form-group">
1631 eleazar 830
                    <?php
1658 eleazar 831
                    $element = $form->get('evaluation');
1649 eleazar 832
                    $element->setAttributes(['class' => 'form-control']);
1658 eleazar 833
                    $element->setOptions(['label' => 'LABEL_EVALUATION']);
1649 eleazar 834
                    echo $this->formLabel($element);
835
                    echo $this->formSelect($element);
836
                    ?>
837
                </div>
8620 eleazar 838
                <div class="form-group">
1649 eleazar 839
                    <?php
1616 eleazar 840
                    $element = $form->get('file');
1631 eleazar 841
                    $element->setAttributes(['class' => 'form-control', 'accept' => 'pdf/docx']);
1616 eleazar 842
                    $element->setOptions(['label' => 'LABEL_CURRICULUM']);
843
                    echo $this->formLabel($element);
844
                    ?>
845
                    <div class="file-loading">
1631 eleazar 846
                        <?php echo $this->formFile($element); ?>
1616 eleazar 847
                    </div>
8620 eleazar 848
 
849
                    <div class="mt-2" id="current-file">
8666 eleazar 850
                        <a href="" class="btn btn-primary" id="btn-cv"  target="_blank">CV actual</a>
8620 eleazar 851
                    </div>
1631 eleazar 852
                </div>
1619 eleazar 853
 
1631 eleazar 854
                <div class="form-group">
855
                    <?php
856
                    $element = $form->get('status');
857
                    $element->setAttributes(['class' => 'form-control']);
858
                    $element->setOptions(['label' => 'LABEL_STATUS']);
859
                    echo $this->formLabel($element);
860
                    echo $this->formSelect($element);
1619 eleazar 861
                    ?>
1631 eleazar 862
                </div>
863
            </div>
864
            <div class="modal-footer">
865
                <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
866
                <button type="button" class="btn btn-default btn-add-cancel">LABEL_CANCEL</button>
867
            </div>
868
            <?php echo $this->form()->closeTag($form); ?>
869
        </div>
870
    </div>
1485 eleazar 871
</div>