{% extends 'base.html.twig' %}
{% block title %}Students List{% endblock %}
{% block body %}
<div class="row">
<div class='col-lg-3 col-md-3 col-sm-4'>
<h2>Students</h2>
</div>
</div>
<div class="row">
{# crear #}
<div class='col-sm-12'>
<div class="card-header">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#newOutlay" aria-expanded="false" aria-controls="collapseExample">
<span title="Expandir formulario de búsqueda"><i class="fa fa-arrow-right"></i></span>
BUSCAR ESTUDIANTES
<div class="tooltip" style="margin-left: 35px;color: #FFF;background-color: #dc3545;padding: 2px 7px;border-radius: 5px;width: auto;font-size: 1rem;">
{# <span style="margin-left: 35px;color: #FFF;background-color: #dc3545;padding: 1px 6px;border-radius: 5px;">#}
<i class="fa fa-search"></i>
{# </span>#}
<span class="tooltiptext" style="font-size: 0.7rem; width: 280px;">Presiona para expandir u ocultar el formulario</span>
</div>
</button>
</h5>
</div>
<div class="collapse" id="newOutlay">
<div class="card card-body formix">
<form id='form-search' class="form-group" method="GET">
<div class="form-row" style="margin-left: 1.5rem;">
<div class="col-sm-3 form-check">
<input type="checkbox" class="form-check-input" id="stdChReviewTest" name='checkProcessTest' value="1" {% if checkProcessTest == 1 %} checked {% endif %}>
<label class="form-check-label" for="stdChReviewTest">Evaluaciones por calificar</label>
<div class="tooltip">?<span class="tooltiptext" style="width: 250px;">Al seleccionar se buscarán los estudiantes con<br><b>Evaluaciones por calificar</b></span></div>
</div>
</div>
<div class="form-row">
<div class="col-sm-2">
<label class="lblMarginButon" for="stdName">Nombre del estudiante</label>
{# <div class="tooltip">?<span class="tooltiptext">Nombre del estudiante</span></div>#}
<input type="text" class="form-control" id="stdName" placeholder="Nombre del estudiante" name='names' autocomplete="off" value="{{ names }}">
</div>
<div class="col-sm-2">
<label class="lblMarginButon" for="stdLastname">Apellido del estudiante</label>
{# <div class="tooltip">?<span class="tooltiptext">Nombre del estudiante</span></div>#}
<input type="text" class="form-control" id="stdLastname" placeholder="Apellido del estudiante" name='lastname' autocomplete="off" value="{{ lastname }}">
</div>
<div class="col-sm-2">
<label class="lblMarginButon" for="stdIdentification">Identificación del estudiante</label>
{# <div class="tooltip">?<span class="tooltiptext">Nombre del estudiante</span></div>#}
<input type="text" class="form-control" id="stdIdentification" placeholder="00000000" name='identification' autocomplete="off" value="{{ identification }}">
</div>
<div class="col-sm-2">
<label class="lblMarginButon" for="stdPhone">Teléfono del estudiante</label>
{# <div class="tooltip">?<span class="tooltiptext">Nombre del estudiante</span></div>#}
<input type="text" class="form-control" id="stdPhone" placeholder="3100000000" name='phone' autocomplete="off" value="{{ phone }}">
</div>
<div class="col-sm-2">
<label class="lblMarginButon" for="stdEmail">Email del estudiante</label>
{# <div class="tooltip">?<span class="tooltiptext">Nombre del estudiante</span></div>#}
<input type="text" class="form-control" id="stdEmail" placeholder="example@mail.co" name='email' autocomplete="off" value="{{ email }}">
</div>
</div>
<div class="form-row">
<div class="col-sm-2">
<label class="lblMarginButon" for="modality">Modalidad</label>
<div class="tooltip">?<span class="tooltiptext">Modalidad de estudio</span></div>
{# <input type="text" class="form-control" id="stdEmail" placeholder="example@mail.co" name='email' autocomplete="off" value="{{ email }}">#}
<select name="modality" id="modality" class="form-control">
<option value="">Todas...</option>
<option value="Presencial" {% if modality == 'Presencial' %}selected{% endif %}>Presencial</option>
<option value="Online" {% if modality == 'Online' %}selected{% endif %}>Online</option>
<option value="Mixta" {% if modality == 'Mixta' %}selected{% endif %}>Mixta</option>
</select>
</div>
<div class="col-sm-2">
<label class="lblMarginButon" for="stdCampus">Sede/Campus</label>
<input type="text" class="form-control" id="stdCampus" name='campus' autocomplete="off" value="{{ campus }}">
</div>
<div class="col-auto">
<button type="submit" id="outSave" class="btn btn-danger btn-small mb-2 btnTopLabel btnTop5">Buscar</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="row" style="margin: 15px 5px;">
<div class='col-sm-5'>
<a href="{{ path('admin_student_create') }}" class="btn btn-danger btn-small">Crear Estudiantes</a>
</div>
<div class='col-sm-7'>
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<label for="exampleInputEmail1">Excel para activar examenes</label><br>
<input type="file" multiple="multiple" id="zipAttached" name="zipAttached" accept=".xlsx"/>
</div>
<span id="emailHelp" class="form-text text-danger" style="font-size: 1rem;"></span>
</div>
<div class="col-sm-3 center">
<div class="form-group">
<button type="submit" id="sendFile" class="btn btn-primary" style="width: 115px;" disabled><i class="fa fa-cogs"></i> Enviar</button>
<a href="{{ path('admin_student_excel_template') }}" class="btn btn-success mt-1" target="_blank" style="width: 115px;"><i class="fa fa-file-excel-o"></i> Plantilla</a>
</div>
</div>
<div id="spinsending" class="col-sm-2 hide">
<div class="spinner-border" style="color: #7145d6!important;"></div>
</div>
</div>
</div>
<div class="count col-4 col-sm-2">
<span class="small text-danger">Cantidad Total: {{ listdata.getTotalItemCount }}</span>
</div>
<div class="count col-3 col-sm-2">
{% if filters %}
<a href="{{ path('admin_student_list') }}" class="">Ver Todos</a>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-sm-12 table-responsive hide" style="margin-bottom: 50px;">
<table id="myTableScheduled" class="table table-striped table-hover table-sm">
<thead class="thead-light" style="font-size: 0.9rem;">
<tr>
<th id="IdCard" class="center" style="width: 20%;">Card ID</th>
<th id="Level" class="center" style="width: 15%;">Level</th>
<th id="Dates" class="center" style="width: 25%;">Dates</th>
</tr>
</thead>
<tbody></tbody>
</table>
<hr>
</div>
<div class="col-sm-12 heigthInList table-responsive">
<table id="myTable" class="table table-striped table-hover table-sm">
<thead class="thead-light" style="font-size: 0.9rem;">
<tr>
<th id="tdName" class="center" style="width: 30%;">Full Name</th>
<th class="center" style="width: 13%;"><span class="hdmovile">Dispose</span></th>
<th class="" style="width: 17%;"><span class="hdmovile">Campus</span></th>
<th class="" style="width: 20%;">Email/Phone</th>
<th class="" style="width: 10%;">Level</th>
<th class="center" style="width: 10%;"><span class="hdmovile"></span></th>
</tr>
</thead>
<tbody>
{% for student in listdata %}
<tr>
<td>
<div class="row">
<div class="col-12" style="line-height: 0.9;">
{{ student.names }} {{ student.lastname }} <br>
<small style="font-size: 0.75rem; padding-left: 22px;">{{ student.documentType }} {{ student.documentNumber }}</small>
</div>
<div class="col-sm-2"><a href="{{ path('admin_student_edit', {'id': student.id}) }}">Editar</a></div>
<div class="col-sm-2"><a href="{{ path('admin_student_modules', {'studentid': student.id}) }}">Modulos</a></div>
</div>
</td>
<td class="center" style="font-size: 0.86rem;">
<div class="row">
<div class="col-12" style="font-size: 0.7rem;">
{% if studentLevel[student.id] and studentLevel[student.id]['module'] and studentLevel[student.id]['module'].enableSince %}
{% set module = studentLevel[student.id]['module'] %}
<i class="fa fa-toggle-on" style="color: #23bf00;"></i> {{ module.module.level }} <br>
{{ module.enableSince ? module.enableSince | date('Y-m-d H:i') : '' }} <br>
{{ module.enableUntil ? module.enableUntil | date('Y-m-d H:i') : '' }}
{% endif %}
</div>
</div>
</td>
<td class="">
<div class="row">
<div class="col-12" style="font-size: 1rem;"><i class="fa fa-home text-primary"></i> {{ student.campus }}</div>
<div class="col-12" style="font-size: 0.85rem;"><i class="fa fa-thumb-tack text-primary"></i> {{ student.modality }}</div>
</div>
</td>
<td>
<div class="row">
<div class="col-12" style="font-size: 0.9rem;"><a href="mailto: {{ student.email }}"><i class="fa fa-envelope-o"></i> {{ student.email }}</a></div>
<div class="col-12" style="font-size: 0.9rem;"><a href="tel: +57{{ student.phone }}"><i class="fa fa-phone"></i> {{ student.phone }}</a></div>
</div>
</td>
<td>
<div class="row">
<div class="col-12" style="font-size: 0.9rem;">
{% if studentLevel[student.id] and studentLevel[student.id]['level'] %}
{{ studentLevel[student.id]['level'].level.course }}
{{ studentLevel[student.id]['level'].level.name }}
{% endif %}
</div>
</div>
</td>
<td>
{% if student.hasInProcessTest == 1 %}
<div class="tooltip" style="background-color: #FFF; width: 25px; border: solid 1px #ffe000; background-color: #00b024;">
<span class="tooltiptext">Revisar Evaluaciones</span>
<a href="{{ path('admin_student_modules', {'studentid': student.id}) }}" style=" font-size: 1rem; color: #ffe000;">
<i class="fa fa-bell-o"></i>
</a>
</div>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="navigation">
{{ knp_pagination_render(listdata) }}
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
$(document).ready(function () {
var fileUploadedName = '';
$('#zipAttached').change(function () {
var zipFile = $(this);
if ($(zipFile).val() == "") { return; }
$('#sendFile').attr('disabled', false);
});
$('#sendFile').click(function () {
$('#sendFile').attr('disabled', true);
var zipFile = $('#zipAttached');
if ($(zipFile).val() == "") { return; }
$('.newanswer').remove();
$('#emailHelp').text('Procesando...');
// inicio de la lectura del archivo
$('#preloaderView').show();
$('#message').text('The file is being uploading and processed');
proccessFile(2);
});
function proccessFile(proccesssSince) {
let fd = new FormData();
fd.append('fileUploadedName', fileUploadedName);
fd.append('since', proccesssSince);
if(!fileUploadedName) {
var zipFile = $('#zipAttached');
var files = $(zipFile)[0].files[0];
fd.append('file', files);
}
$.ajax({method: 'post', url: '{{ path('admin_student_excel_activate_modules') }}',
data: fd, contentType: false, cache: false, processData: false,
success: function (data) {
fileUploadedName = data.fileName;
$('#myTableScheduled').closest('div.hide').removeClass('hide');
appendScheduleRow(data.data);
if(data.isdocend) {
$('#sendFile').attr('disabled', true);
fileUploadedName = '';
$('#zipAttached').val('');
hideOnloading(300);
$('#emailHelp').text('File uploaded successfully');
return;
}
proccessFile(data.since);
},
error: function (error, status, strerror) {
$('#modalSelfContent h5.modal-title').text('ERROR en el procesamiento del documento');
$('#modalSelfContent .modal-body').html('<p>Se presentó un error al leer el archivo Excel</p><hr>'
+ '<p>' + 'Código ' + error.status + '<br>' + error.responseJSON.response + '</p>');
$('#modalSelfContent').modal('show');
hideOnloading(500);
$('#zipAttached, #company').val('');
$('#zipAttached, #company').attr('disabled', false);
}
});
}
});
function appendScheduleRow(data) {
let table = $('#myTableScheduled');
data.forEach(function(i, o) {
let tr = $('<tr>');
let td1 = $('<td>').text(i.fullName);
let td2 = $('<td>').text(i.cardId);
let td3 = $('<td>').text(i.course + ': ' + i.level);
let exdates = '<div class="small"><small>' + i.datei + '</small></div>'
+ '<div class="small"><small>' + i.dateo + '</small></div>';
let td4 = $('<td>').html(exdates);
$(tr).append(td1);
$(tr).append(td2);
$(tr).append(td3);
$(tr).append(td4);
$(table).append(tr);
});
}
</script>
{% endblock %}