Commit 54e3598f by Billy Larru

[ADD programacion de seminario]

parent 99e79605
......@@ -37,6 +37,9 @@ const URI_ADMINISTRATIVOS_TOLERANCIA_INDIVIDUAL = "toleranciasIndividuales";
const URI_ADMINISTRATIVOS_ESTADO_TOLERANCIA_INDIVIDUAL = "estadoTolerancias";
const URI_ADMINISTRATIVOS_VACACIONES_INDIVIDUAL = "vacacionesAdministrativasIndividuales";
const URI_CARGOS = "cargoLaboral";
const URI_DOCENTES_PROGRAMACION_SEMINARIO = "programacionSeminario";
const URI_DOCENTES_TIPO_SEMINARIO = "tipoSeminario";
const URI_DOCENTES_GRUPO_ACADEMICO = "grupoAcademico";
//</editor-fold>
......
function getColumns() {
let columns = [
{
title: `N°`,
data: `id`,
className: 'text-center'
},
{
title: `APELLIDOS Y NOMBRES`,
data: null,
render: (data) => {
let nombresCompletos;
let nombres = data.trabajador_nombres;
let apellidos = data.trabajador_apellidos;
nombresCompletos = `${apellidos} ${nombres}`;
return nombresCompletos;
}
},
{
title: `TIPO`,
data: `tiposeminario_descripcion`,
className: 'text-center'
},
{
title: `GRUPO ACAD.`.split(" ").join("<br>"),
data: `grupoacademico_descripcion`,
className: 'text-center'
},
{
title: `FECHA`,
data: `fecha_seminario`,
className: 'text-center'
},
{
title: `HORA INICIO`,
data: `hora_inicio`,
className: 'text-center'
},
{
title: `HORA FIN`,
data: `hora_fin`,
className: 'text-center'
},
{
title: `OBSERVACIÓN`,
data: `observacion`,
className: 'text-center'
},
{
title: `ESTADO`,
data: `estado`,
className: 'text-center',
render: (data) => {
let label = "";
let text = "";
switch (data) {
case 0:
label = "label bg-purple";
text = "PENDIENTE";
break;
case 1:
label = "label label-success";
text = "ACEPTADO";
break;
case 2:
label = "label label-danger";
text = "RECHAZADO";
break;
}
return `<span class="${label}">${text}</span>`;
}
},
{
title: `ACCIONES`,
data: null,
className: 'text-center',
render: (data) => {
let acciones = "";
let verdetalle = "";
let editar = "";
let eliminar = "";
let aceptar = "";
let rechazar = "";
if (data.estado === 1) {
eliminar = `<span style="cursor: pointer"><i class="eliminar fa fa-power-off text-danger-700"></i>&nbsp;&nbsp;</span>`;
} else {
eliminar = `<span style="cursor: pointer"><i class="eliminar fa fa-power-off text-success-700"></i>&nbsp;&nbsp;</span>`;
}
aceptar = `<span style="cursor: pointer"><i class="aceptar icon-checkmark4 text-success-700"></i>&nbsp;&nbsp;</span>`;
rechazar = `<span style="cursor: pointer"><i class="rechazar icon-cross2 text-danger-700"></i>&nbsp;&nbsp;</span>`;
verdetalle = `<span style="cursor: pointer"><i class="verdetalle icon-three-bars text-primary-700"></i>&nbsp;&nbsp;</span>`;
editar = `<span style="cursor: pointer"><i class="editar icon-pencil text-slate-800"></i>&nbsp;&nbsp;</span>`;
acciones = aceptar + rechazar + verdetalle + editar + eliminar;
return acciones;
}
},
];
return columns;
}
const listarPersonal = (selectorName) => {
initSelect2(selectorName, baseURLRest + URI_TRABAJADORES, {title: "nombresapellidos", subtitle: "documentoidentidad"});
};
const listarSedes = (selectorName) => {
ajaxWebService.get(URI_SEDES).then((result) => {
let sedes = result.data;
sedes = _.orderBy(sedes, s => s.descripcion);
let html = `<option value="">[TODOS]</option>`;
sedes.forEach(sede => html += `<option value="${sede.codigo}">${sede.descripcion}</option>`);
$(`${selectorName}`).html(html);
$(selectorName).select2();
});
};
const mostrarModalAprobarSeminario = (data) => {
let {id, estado} = data;
let titulo = "";
let textoConfirmacion = ""
let tituloOperacion = "";
if (estado == 0) {
titulo = 'Está seguro de aprobar el seminario?';
textoConfirmacion = 'Sí, aprobar!';
tituloOperacion = '¡Aprobado exitosamente!';
estado = 1;
}
swal({
title: titulo,
text: "",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: textoConfirmacion
}).then((result) => {
if (result.value) {
ajaxWebService.patch(`${URI_DOCENTES_PROGRAMACION_SEMINARIO}/${id}`, {estado}).then((response) => {
if (response.status) {
swal({
type: 'success',
title: tituloOperacion,
showConfirmButton: false,
timer: 1500
});
listarSeminariosProgramados();
}
});
}
});
};
const mostrarModalRechazarSeminario = (data) => {
let {id, estado} = data;
let titulo = "";
let textoConfirmacion = ""
let tituloOperacion = "";
if (estado == 0) {
titulo = 'Está seguro de desaaprobar el seminario?';
textoConfirmacion = 'Sí, desaprobar!';
tituloOperacion = '¡Desaprobado exitosamente!';
estado = 2;
}
swal({
title: titulo,
text: "",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: textoConfirmacion
}).then((result) => {
if (result.value) {
ajaxWebService.patch(`${URI_DOCENTES_PROGRAMACION_SEMINARIO}/${id}`, {estado}).then((response) => {
if (response.status) {
swal({
type: 'success',
title: tituloOperacion,
showConfirmButton: false,
timer: 1500
});
listarSeminariosProgramados();
}
});
}
});
};
function listarSeminariosProgramados(objParams = {}){
ajaxWebService.get(URI_DOCENTES_PROGRAMACION_SEMINARIO, objParams).then((response) => {
let columns = getColumns();
let wrapsNameDatatable = `divDatatable`;
let classNameForDatatable = `display table table-bordered`;
makeDatatable(
wrapsNameDatatable,
{
data: response.data,
columns,
},
classNameForDatatable,
).then((nodes) => {
nodes.container
.off()
.on("click", ".verdetalle", function () {
let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
mostrarModalVerDetalleTolerancia(data);
})
.on("click", ".editar", function () {
let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
mostrarModalEditarTolerancia(data);
})
.on("click", ".eliminar", function () {
let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
mostrarModalEliminarTolerancia(data);
})
.on("click", ".aceptar", function () {
let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
mostrarModalAprobarSeminario(data);
})
.on("click", ".rechazar", function () {
let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
mostrarModalRechazarSeminario(data);
});
});
});
}
const aplicarFiltro = () => {
};
const listarTipoSeminario = (nodeIdentifier) => {
ajaxWebService.get(URI_DOCENTES_TIPO_SEMINARIO).then((response) => {
let tiposSeminario = response.data;
tiposSeminario = _.orderBy(tiposSeminario, s => s.descripcion);
let html = `<option value="">[SELECCIONE]</option>`;
html += tiposSeminario.map(tipoSeminario => `<option value="${tipoSeminario.id}">${tipoSeminario.descripcion}</option>`);
$(nodeIdentifier).html(html);
});
};
const listarGrupoAcademico = (nodeIdentifier) => {
ajaxWebService.get(URI_DOCENTES_GRUPO_ACADEMICO).then((response) => {
let gruposacademicos = response.data;
gruposacademicos = _.orderBy(gruposacademicos, grupoAcademico => grupoAcademico.descripcion);
let html = `<option value="">[SELECCIONE]</option>`;
html += gruposacademicos.map(grupoAcademico => `<option value="${grupoAcademico.id}">${grupoAcademico.descripcion}</option>`);
$(nodeIdentifier).html(html);
});
};
const inicializarInputsModalNuevoSeminario = () => {
listarPersonal("#cboDocentes");
listarTipoSeminario("#cboTipoSeminario");
listarGrupoAcademico("#cboGrupoAcademico");
initDatePicker("#dpFechaSeminario");
};
const registrarSeminario = () => {
let trabajador = $("#cboDocentes").select2('data')[0];
let trabajador_id = trabajador.id;
let trabajador_apellidos = trabajador.apellidos;
let trabajador_nombres = trabajador.nombres;
let trabajador_documentoidentidad = "";
let tiposeminario_id = $("#cboTipoSeminario").val();
let tiposeminario_descripcion = $("#cboTipoSeminario option:selected").text();
let grupoacademico_id = $("#cboGrupoAcademico").val();
let grupoacademico_descripcion = $("#cboGrupoAcademico option:selected").text();
let fecha_seminario = $("#dpFechaSeminario").val();
let hora_inicio = $("#txtHoraInicio").val();
let hora_fin = $("#txtHoraFin").val();
let observacion = $("#txtObservacion").val();
let params = {
trabajador_id,
trabajador_apellidos,
trabajador_nombres,
trabajador_documentoidentidad,
tiposeminario_id,
tiposeminario_descripcion,
grupoacademico_id,
grupoacademico_descripcion,
fecha_seminario,
hora_inicio,
hora_fin,
observacion,
estado: 0
};
ajaxWebService.post(URI_DOCENTES_PROGRAMACION_SEMINARIO, params)
.then((response) => {
if (response.status) {
swal({
type: 'success',
title: '¡Seminario registrado exitosamente!',
showConfirmButton: false,
timer: 1500
});
listarSeminariosProgramados();
} else {
swal({
type: 'success',
title: '¡No ha sido posible registrar el seminario!',
showConfirmButton: false,
timer: 1500
})
}
});
};
const mostrarModalNuevoSeminario = () => {
ajaxModal.get("docentesporhoras/programacionSeminario/registroSeminario.jspf").then((response) => {
swal({
title: '<strong>Registro de seminario</strong>',
html: response.data,
showCloseButton: true,
showCancelButton: true,
focusConfirm: false,
confirmButtonText: '<i class="icon-checkmark2"></i> Registrar seminario',
confirmButtonAriaLabel: 'Registrar seminario',
cancelButtonText: '<i class="icon-cross3"></i>Cancelar',
cancelButtonAriaLabel: 'Thumbs down',
width: '30%',
customClass: 'swal2-overflow',
onOpen: () => {
inicializarInputsModalNuevoSeminario();
}
}).then((result) => {
if (result.value) {
registrarSeminario();
}
});
});
};
$(document).ready(function () {
$("#btnNuevoSeminario").click(mostrarModalNuevoSeminario);
$("#btnMostrarTodo").click(listarSeminariosProgramados);
$("#btnAplicarFiltro").click(aplicarFiltro);
listarPersonal("#cboDocenteFiltro");
listarSedes("#cboSedesFiltro");
initDatePicker("#dpFechaInicioFiltro", "#dpFechaFinFiltro");
});
\ No newline at end of file
<form id="frm" onsubmit="return false;" autocomplete="off">
<div class="row">
<div class="form-group col-md-8">
<label>Docente</label>
<select id="cboDocentes" class="select-search form-control"></select>
</div>
<div class="form-group col-md-4">
<label>Tipo de seminario</label>
<select id="cboTipoSeminario" class="select-search form-control"></select>
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label>Fecha Seminario</label>
<div class="input-group">
<span class="input-group-addon"><i class="icon-calendar"></i></span>
<input type="text" class="form-control" id="dpFechaSeminario">
</div>
</div>
<div class="form-group col-md-4">
<label>Hora inicio</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-clock-o"></i></span>
<input type="time" class="form-control" id="txtHoraInicio">
</div>
</div>
<div class="form-group col-md-4">
<label>Hora fin</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-clock-o"></i></span>
<input type="time" class="form-control" id="txtHoraFin">
</div>
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label>Grupo academico</label>
<select id="cboGrupoAcademico" class="select-search form-control"></select>
</div>
<div class="form-group col-md-8">
<label>Observacion</label>
<textarea name="txtObservacion" id="txtObservacion" cols="30" rows="4" class="form-control"></textarea>
</div>
</div>
</form>
\ No newline at end of file
......@@ -6,18 +6,82 @@
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css de la pagina-->
<link href="../css/lib/sweetalert2.min.css" rel="stylesheet" type="text/css"/>
<!--css-->
</head>
<body>
<%@include file="templates/header-body.jsp" %>
<!-- content -->
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h5 class="panel-title">Busqueda</h5>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6 form-group">
<label>Docente</label>
<select class="select-search form-control" id="cboDocenteFiltro">
</select>
</div>
<div class="col-md-6 form-group">
<label>Sede</label>
<select id="cboSedesFiltro" class="select-search form-control">
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 form-group">
<label>Fecha Inicio</label>
<div class="input-group">
<span class="input-group-addon"><i class="icon-calendar"></i></span>
<input type="text" class="form-control" name="dpFechaInicioFiltro" id="dpFechaInicioFiltro">
</div>
</div>
<div class="col-md-6 form-group">
<label>Fecha Fin</label>
<div class="input-group">
<span class="input-group-addon"><i class="icon-calendar"></i></span>
<input type="text" class="form-control" name="dpFechaFinFiltro" id="dpFechaFinFiltro">
</div>
</div>
</div>
</div>
<div class="panel-footer">
<div class="text-center">
<button class="btn btn-primary" id="btnAplicarFiltro"><i class="icon-eye4"></i> Aplicar filtro</button>&nbsp;
<button class="btn btn-primary" id="btnMostrarTodo"><i class="icon-eye4"></i> Mostrar Todo</button>&nbsp;
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="panel panel-primary card-3" style="margin-top: 30px">
<div class="panel-heading" style="padding: 8px 15px">
<h6 class="panel-title" style="font-size: 15px; font-family: inherit">LISTADO DE SEMINARIOS PROGRAMADOS</h6>
<div class="heading-elements">
<button type="button" id="btnNuevoSeminario" class="btn bg-slate border-slate-600 btn-xs"><i class="glyphicon glyphicon-plus"></i>&nbsp; Nuevo seminario</button>
</div>
</div>
<div id="divDatatable">
</div>
</div>
</div>
<!-- / content -->
<%@include file="templates/footer-body.jsp"%>
<!--js de la pagina-->
<script src="../plantilla/assets/js/core/libraries/jquery_ui/widgets.min.js" type="text/javascript"></script>
<script src="../plantilla/assets/js/plugins/ui/moment/moment.min.js" type="text/javascript"></script>
<script src="../plantilla/assets/js/plugins/pickers/datepicker.js" type="text/javascript"></script>
<script src="../js/lib/bootstrap-select.min.js" type="text/javascript"></script>
<script src="../plantilla/assets/js/plugins/forms/selects/select2.min.js"></script>
<script src="../js/lib/lodash.js" type="text/javascript"></script>
<script src="../js/pages/programacion_seminario.js" type="text/javascript"></script>
<!--js-->
</body>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment