File: /home/undanet/www/PortalEmpleo/src/Views/reports/candidatePersolInfo.php
<?php
$root = get_site_url() . '/';;
?>
<div class="table-responsive" id="candidatepersonalinfo">
<table class="table table-striped table-hover table-export table-export-persolinfo" id="candidate-personal-info-table">
<thead class="table-secondary input-container">
<tr>
<th scope="col">
<span class="col-title"><?php echo __( 'Name', 'panoramic_child' ); ?></span>
<div class="input-group mb-3 input-group-large">
<input type="text" name="name-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Name', 'panoramic_child' ); ?>" aria-label="Name" aria-describedby="basic-addon1">
<span class="col_ordened col_0_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'DNI', 'panoramic_child' ); ?></span>
<div class="input-group mb-3">
<input type="text" name="dni-field" class="form-control text-filter-field" placeholder="<?php echo __( 'DNI', 'panoramic_child' ); ?>" aria-label="DNI" aria-describedby="basic-addon1">
<span class="col_ordened col_1_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Email', 'panoramic_child' ); ?></span>
<div class="input-group mb-3 input-group-large">
<input type="text" name="email-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Email', 'panoramic_child' ); ?>" aria-label="Email" aria-describedby="basic-addon1">
<span class="col_ordened col_2_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Age', 'panoramic_child' ); ?></span>
<div class="input-group input-daterange mb-3">
<input type="text" name="age-date-field" class="daterange-filter-field datarange-filter-exact" value="<?php echo getMinDate(array_column($data, 'edad')); ?> - <?php echo getMaxDate(array_column($data, 'edad')); ?>" />
<input type="hidden" name="min-date-field" class="form-control min-date-field" value="100">
<input type="hidden" name="max-date-field" class="form-control max-date-field" value="0">
<span class="col_ordened col_3_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Area', 'panoramic_child' ); ?></span>
<div class="input-group mb-3">
<select class="selectpicker multiple-select-filter-field area-field" multiple name="area-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique(array_column($data, 'area')) as $area) { ?>
<option value="<?php echo strtolower($area); ?>"><?php echo $area; ?></option>
<?php } ?>
</select>
<span class="col_ordened col_4_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Title', 'panoramic_child' ); ?></span>
<div class="input-group mb-3 input-group-medium">
<input type="text" name="title-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Title', 'panoramic_child' ); ?>" aria-label="Title" aria-describedby="basic-addon1">
<span class="col_ordened col_5_order"></span>
</div>
</th>
<th scope="col"><span class="col-title"><?php echo __( 'Matter', 'panoramic_child' ); ?></span>
<div class="input-group mb-3 input-group-medium">
<input type="text" name="matter-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Matter', 'panoramic_child' ); ?>" aria-label="Matter" aria-describedby="basic-addon1">
<span class="col_ordened col_6_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Master', 'panoramic_child' ); ?></span>
<div class="input-group mb-3">
<select class="selectpicker select-filter-field master-field" name="master-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<option selected value=""></option>
<?php foreach(array_unique(array_column($data, 'master')) as $master) { ?>
<?php if(!empty($master)) { ?>
<option value="<?php echo strtolower($master); ?>"><?php echo $master; ?></option>
<?php }
} ?>
</select>
<span class="col_ordened col_7_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Specialization', 'panoramic_child' ); ?></span>
<div class="input-group mb-3">
<select class="selectpicker select-filter-field specialization-field" name="specialization-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<option selected value=""></option>
<?php foreach(array_unique(array_column($data, 'especializacion')) as $especializacion) {
if(!empty($especializacion)) { ?>
<option value="<?php echo strtolower($especializacion); ?>"><?php echo $especializacion; ?></option>
<?php }
} ?>
</select>
<span class="col_ordened col_8_order"></span>
</div>
</th>
<th scope="col" class="notexport col_9_order"><span class="col-title-not"><?php echo __( 'Curriculum', 'panoramic_child' ); ?></span></th>
<th scope="col" class="notexport col_10_order"><span class="col-title-not"><?php echo __( 'Presentation Letter', 'panoramic_child' ); ?></span></th>
<th scope="col">
<span class="col-title"><?php echo __( 'Languages', 'panoramic_child' );?></span>
<div class="input-group mb-3">
<div class="two-column">
<?php $idiomas = array();
foreach(array_column($data, 'idiomas') as $idioma) {
foreach(array_column($idioma, 'nombre') as $nombreIdioma){
array_push($idiomas, $nombreIdioma);
}
}
?>
<select class="selectpicker multiple-select-filter-field language-field" multiple name="language-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique($idiomas) as $nombreIdioma) { ?>
<option value="<?php echo strtolower($nombreIdioma); ?>"><?php echo $nombreIdioma; ?></option>
<?php } ?>
</select>
<?php $niveles = array();
foreach(array_column($data, 'idiomas') as $nivel) {
foreach(array_column($nivel, 'nivel') as $nombrenivel){
array_push($niveles, $nombrenivel);
}
}
?>
<select class="selectpicker multiple-select-filter-field level-field" multiple name="level-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique($niveles) as $nombrenivel) { ?>
<option value="<?php echo strtolower($nombrenivel); ?>"><?php echo $nombrenivel; ?></option>
<?php } ?>
</select>
</div>
<span class="col_ordened col_11_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Profiles', 'panoramic_child' );?></span>
<div class="input-group mb-3">
<div class="two-column">
<?php $perfiles = array();
foreach(array_column($data, 'perfiles') as $perfil) {
foreach(array_column($perfil, 'nombreperfil') as $nombrePerfil){
array_push($perfiles, $nombrePerfil);
}
}
?>
<select class="selectpicker multiple-select-filter-field profile-field" multiple name="profile-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique($perfiles) as $nombrePerfil) { ?>
<option value="<?php echo strtolower($nombrePerfil); ?>"><?php echo $nombrePerfil; ?></option>
<?php } ?>
</select>
<?php $experiencias = array();
foreach(array_column($data, 'perfiles') as $perfil) {
foreach(array_column($perfil, 'nombreexperiencia') as $nombreexperiencia){
array_push($experiencias, $nombreexperiencia);
}
}
?>
<select class="selectpicker multiple-select-filter-field experience-field" multiple name="experience-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique($experiencias) as $nombreexperiencia) { ?>
<option value="<?php echo strtolower($nombreexperiencia); ?>"><?php echo $nombreexperiencia; ?></option>
<?php } ?>
</select>
</div>
<span class="col_ordened col_12_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Calls', 'panoramic_child' );?></span>
<div class="input-group mb-3">
<?php $convocatorias = array();
foreach(array_column($data, 'convocatorias') as $convocatoria) {
foreach($convocatoria as $itemConvocatoria){
if (!empty($itemConvocatoria)) {
array_push($convocatorias, $itemConvocatoria['refdescconvocatoria'] . ' ' . $itemConvocatoria['descconvocatoria']);
}
}
}
sort($convocatorias);
?>
<select class="selectpicker multiple-select-filter-field call-field" multiple name="call-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
<?php foreach(array_unique($convocatorias) as $convocatoria) {
if (str_replace(' ', '', $convocatoria) != '') { ?>
<option value="<?php echo strtolower($convocatoria); ?>"><?php echo $convocatoria; ?></option>
<?php }
} ?>
</select>
<span class="col_ordened col_13_order"></span>
</div>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Lang hidden field', 'panoramic_child' ); ?></span>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Level hidden field', 'panoramic_child' ); ?></span>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Profile hidden field', 'panoramic_child' ); ?></span>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Experience hidden field', 'panoramic_child' ); ?></span>
</th>
<th scope="col">
<span class="col-title"><?php echo __( 'Call hidden field', 'panoramic_child' ); ?></span>
</th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $user) { ?>
<tr class="tr-row">
<td scope="row"><?php echo $user['nombre']; ?></td>
<td scope="row"><?php echo $user['dni']; ?></td>
<td scope="row"><?php echo $user['correo']; ?></td>
<td scope="row"><?php echo getEdad($user['edad']); ?></td>
<td scope="row"><?php echo $user['area']; ?></td>
<td scope="row"><?php echo $user['titulacion']; ?></td>
<td scope="row"><?php echo $user['materia']; ?></td>
<td scope="row"><?php echo $user['master']; ?></td>
<td scope="row"><?php echo $user['especializacion']; ?></td>
<td scope="row" class="not-export">
<a href="<?php echo $root . 'descarga/?id=' . $user['id'] . '&file=' . basename($user['cv']) ?>" target="_blank">
<?php echo __( 'Download', 'panoramic_child' ); ?>
</a>
</td>
<td scope="row" class="not-export">
<?php if (!empty($user['cp'])) { ?>
<a href="<?php echo $root . 'descarga/?id=' . $user['id'] . '&file=' . basename($user['cp']) ?>" target="_blank">
<?php echo __( 'Download', 'panoramic_child' ); ?>
</a>
<?php } else { ?>
-
<?php } ?>
</td>
<td scope="row"><?php echo customImplode( $user['idiomas']); ?></td>
<td scope="row"><?php echo customImplode( $user['perfiles']); ?></td>
<td scope="row"><?php echo customImplode( $user['convocatorias']); ?></td>
<td scope="row"><?php echo strtolower(implode(' ', array_column($user['idiomas'], 'nombre'))); ?></td>
<td scope="row"><?php echo strtolower(implode(' ', array_column($user['idiomas'], 'nivel'))); ?></td>
<td scope="row"><?php echo strtolower(implode(' ', array_column($user['perfiles'], 'nombreperfil'))); ?></td>
<td scope="row"><?php echo strtolower(implode(' ', array_column($user['perfiles'], 'nombreexperiencia'))); ?></td>
<?php
$stringconv = '';
foreach($user['convocatorias'] as $conv){
$stringconv .= $conv['refdescconvocatoria'] . ' ' . $conv['descconvocatoria'] . ' ' ;
}
?>
<td scope="row"><?php echo strtolower($stringconv); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<script>
(function($) {
$(document).ready(function () {
var table = $('#candidate-personal-info-table').DataTable({
dom: 'Bfrtlip',
initComplete: function(settings, json) {
$('th.sorting').off();
},
buttons: [{
extend: "csv",
charset: 'UTF-8',
text: '<?php echo __( 'Export results to CSV file', 'panoramic_child' ); ?>',
bom: true,
filename: '<?php echo __( 'personal_information_candidates', 'panoramic_child' ); ?>',
exportOptions: {
format: {
header: function (data) {
return $('<span></span>').append(data).find('.col-title').text()
}
},
columns: ':visible:not(.notexport)'
}
}],
columnDefs: [
{ targets: [14, 15, 16, 17, 18], visible: false },
],
language: {
paginate: {
next: '<?php echo __( 'Next', 'panoramic_child' ); ?>', // → or '→'
previous: '<?php echo __( 'Previous', 'panoramic_child' ); ?>' //← or '←'
},
'search':'<?php echo __( 'Search:', 'panoramic_child' ); ?>',
"info":"<?php echo __( 'Showing', 'panoramic_child' ); ?> _START_ <?php echo __( 'to', 'panoramic_child' ); ?> _END_ <?php echo __( 'of', 'panoramic_child' ); ?> _TOTAL_ <?php echo __( 'entries', 'panoramic_child' ); ?>",
"infoEmpty":"<?php echo __( 'Showing 0 to 0 of 0 entries', 'panoramic_child' ); ?>",
"infoFiltered":"(<?php echo __( 'filtered', 'panoramic_child' ); ?> <?php echo __( 'from', 'panoramic_child' ); ?> _MAX_ total <?php echo __( 'entries', 'panoramic_child' ); ?>)",
"zeroRecords":"<?php echo __( 'No matching records found', 'panoramic_child' ); ?>",
"lengthMenu": "<?php echo __( 'Show', 'panoramic_child' ); ?> _MENU_ <?php echo __( 'entries', 'panoramic_child' ); ?>",
"loadingRecords":"<?php echo __( 'Loading...', 'panoramic_child' ); ?>",
}
});
table.order.listener( '.col_0_order', 0 );
table.order.listener( '.col_1_order', 1 );
table.order.listener( '.col_2_order', 2 );
table.order.listener( '.col_3_order', 3 );
table.order.listener( '.col_4_order', 4 );
table.order.listener( '.col_5_order', 5 );
table.order.listener( '.col_6_order', 6 );
table.order.listener( '.col_7_order', 7 );
table.order.listener( '.col_8_order', 8 );
table.order.listener( '.col_9_order', 9 );
table.order.listener( '.col_10_order', 10 );
table.order.listener( '.col_11_order', 11 );
table.order.listener( '.col_12_order', 12 );
table.order.listener( '.col_13_order', 13 );
$('.input-container input[type="text"]').on('keyup', function() {
table.draw();
});
$('.input-container .selectpicker').on('change', function() {
table.draw();
});
$('input[name="age-date-field"]').daterangepicker({
opens: 'center'
}, function(start, end, label) {
var date1 = new Date(start);
var date2 = new Date(end);
$('.input-container input[name="min-date-field"]').val(getAge(date1));
$('.input-container input[name="max-date-field"]').val(getAge(date2));
table.draw();
});
});
$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
let namefield = $('.input-container input[name="name-field"]').val().toLowerCase();
let dnifield = $('.input-container input[name="dni-field"]').val().toLowerCase();
let emailfield = $('.input-container input[name="email-field"]').val().toLowerCase();
let age = parseFloat(data[3]) || 0;
let minAge = parseInt($('.input-container input[name="max-date-field"]').val(), 10);
let maxAge = parseInt($('.input-container input[name="min-date-field"]').val(), 10);
let areafield = $('.input-container .selectpicker.area-field').val().join(' ').toLowerCase();
let titlefield = $('.input-container input[name="title-field"]').val().toLowerCase();
let matterfield = $('.input-container input[name="matter-field"]').val().toLowerCase();
let masterfield = $('.input-container .selectpicker.master-field').val().toLowerCase();
let specializationfield = $('.input-container .selectpicker.specialization-field').val().toLowerCase();
let languagefield = $('.input-container .selectpicker.language-field').val();
let levelfield = $('.input-container .selectpicker.level-field').val();
let profilefield = $('.input-container .selectpicker.profile-field').val();
let experiencefield = $('.input-container .selectpicker.experience-field').val();
let callfield = $('.input-container .selectpicker.call-field').val();
if (
data[0].toLowerCase().indexOf(namefield) > -1 &&
data[1].toLowerCase().indexOf(dnifield) > -1 &&
data[2].toLowerCase().indexOf(emailfield) > -1 &&
((isNaN(minAge) && isNaN(maxAge)) ||
(isNaN(minAge) && age <= maxAge) ||
(minAge <= age && isNaN(maxAge)) ||
(minAge <= age && age <= maxAge)
) &&
(areafield == '' || areafield.indexOf(data[4].toLowerCase()) > -1) &&
data[5].toLowerCase().indexOf(titlefield) > -1 &&
data[6].toLowerCase().indexOf(matterfield) > -1 &&
(masterfield == '' || data[7].toLowerCase().indexOf(masterfield) > -1) &&
(specializationfield == '' || data[8].toLowerCase().indexOf(specializationfield) > -1) &&
(languagefield.length === 0 ||
languagefield.every(
(element) => data[14].toLowerCase().indexOf(element.toLowerCase()) > -1
)
) &&
(levelfield.length === 0 ||
levelfield.every(
(element) => data[15].toLowerCase().indexOf(element.toLowerCase()) > -1
)
) &&
(profilefield.length === 0 ||
profilefield.every(
(element) => data[16].toLowerCase().indexOf(element.toLowerCase()) > -1
)
) &&
(experiencefield.length === 0 ||
experiencefield.every(
(element) => data[17].toLowerCase().indexOf(element.toLowerCase()) > -1
)
) &&
(callfield.length === 0 ||
callfield.every(
(element) => data[18].toLowerCase().indexOf(element.toLowerCase()) > -1
)
)
) {
return true;
}
return false;
});
})(jQuery);
function getAge(birthDate) {
var today = new Date();
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
</script>
</div>