3.4.14. Hoja de Seguimiento: Anexo III - diezMalena/api_FCTFiller GitHub Wiki

Introducción

El papel de este Anexo (también conocido como Hojas de seguimiento del alumno) en el desarrollo de las prácticas consta de hacer un seguimiento semanal del alumno en la empresa, es decir, el alumno debe definir las actividades que realiza, las horas que le dedica a ellas y las posibles observaciones que puedan surgir, de manera diaria. Al completar la hoja, debe ser firmada tanto por el alumno, como por el tutor de prácticas y por el tutor del centro de estudios.

Se completarán tantas hojas de seguimiento como jornadas realice el alumno en la empresa.

En cuanto su funcionalidad, la dividiremos en dos partes, la funcionalidad del alumno y la funcionalidad del tutor del centro de estudios.

Funcionalidad del alumno

En este caso, el alumno se encontrará con los datos básicos que le corresponden en cuanto a las prácticas (nombre y apellidos, departamento en el que se encuentra en la empresa, nombre de esta y tutor asignado en la empresa, y por último un sumatorio de horas totales, en el que se recogen las horas que el alumno indica en las jornadas y se van sumando de manera automática).

segcabecera

A continuación, se describen las distintas funciones que puede utilizar el alumno:

Editar tutor de empresa

El alumno podrá cambiar de tutor de empresa tan solo con la dirección email de este. Antes de confirmar su cambio, se comprueba en la Base de Datos si el email del tutor que indica el alumno se encuentra entre los tutores/responsables de la empresa en la que este está haciendo las prácticas, y si es así, podrá cambiar de tutor. Este cambio se lleva a cabo haciendo una llamada a la función ControladorAlumno/actualizarTutorEmpresa().

tutoremp

Para actualizar en la Base de Datos el tutor de empresa del alumno, se implementa el siguiente código en la función mencionada anteriormente en la API:

Fct::where('dni_alumno', $dni_alumno)->update([
   'dni_tutor_empresa' => $dni_tutor_nuevo->dni,
]);

Añadir jornada

Rellenará varios campos acerca de la jornada realizada para poder cumplimentar la hoja de seguimiento. Se añadirá con la función ControladorAlumno/addJornada().

addjornada

Gestión de las semanas

Las semanas se completan cada cinco jornadas, y el conjunto de semanas son las que se muestran en forma de acordeón. Al mostrarlas, se utiliza la función reverse() para poder poner lo reciente primero. Las jornadas organizadas en semanas se generan en la función ControladorAlumno/devolverJornadas(). El código implementado para organizar las jornadas en semanas es el siguiente:

for ($i = 0; $i < count($jornadas); $i++) {
  $semana[] = $jornadas[$i];
    if (count($semana) == 5 || $i == count($jornadas) - 1) {
          $semanas[] = $semana;
          $semana = [];
    }
}

semanas

Editar jornada

Tiene la opción de poder editar una jornada añadida. Para ello, se abrirá una ventana modal con los valores añadidos por el alumno, donde podrá editarlos y guardar los cambios. Esto es posible gracias a la comunicación de componentes de padre a hijo, en el que el padre (Seguimiento.component), a través de la función seguimiento.component/editar(), lanza un EventEmitter con la jornada que el alumno selecciona al hijo (ModalEditar.component). En este componente se recoge dicha jornada y se muestran sus datos para que el alumno pueda editarlos, y después al guardar los cambios con la función modal-editar.component/editJornada(), al volver al componente padre se muestran los datos de dicha jornada actualizada. Con la función seguimiento.component/editar(), enviamos la jornada seleccionada al ModalEditar.component para poder editar los cambios que se necesiten:

public editar(jornada: Jornada) {
    this.modal.open(ModalEditarComponent, { size: 'm' });
    this.modalJornadaService.jornadaTrigger.emit(jornada);
}

En ModalEditar.component, encontramos el siguiente código y en él se recoge la jornada enviada desde el componente padre:

this.modalJornadaService.jornadaTrigger.subscribe((data: Jornada) => {
      this.jornada = data;
});

editjornada

Generar documento Word

Siempre y cuando el alumno haya cumplimentado una semana (formada por cinco jornadas), podrá generar su hoja de seguimiento correspondiente en formato Word, para poder firmarla. Una peculiaridad de esta funcionalidad es que al generar un documento Word una vez firmada y subida una hoja, es que las firmas se eliminarán y deberán firmarlas de nuevo los tres roles implicados. El nombre con el que se generará el documento tendrá la estructura “Hoja_seguimiento_DNIAlumno_fecha-horaActual.docx”. Este archivo se almacenará en la carpeta correspondiente a alumno, dentro de la carpeta “Anexo3”. Dicho documento se genera con la función ControladorAlumno/generarAnexo3().

En el cliente, con la función seguimiento.component.ts/generarDocumento(), le establecemos el nombre del documento con el siguiente código:

 const blob = new Blob([res], { type: 'application/octet-stream' });
 var hoy = new Date(Date.now());
 var nombre = 'Hoja_seguimiento_' + this.dni_alumno + '_' + hoy.toISOString() + '.docx';
 FileSaver.saveAs(blob, nombre);

genword

Subir documento

Se mostrará una ventana modal, donde el usuario tendrá que seleccionar dentro de su Explorador de Archivos el documento PDF a subir. Una vez esté firmada la hoja de seguimiento generada, el alumno deberá firmarla y subirla en formato PDF. Este encontrará un checkbox para definir si la hoja que va a subir contiene también la firma del tutor de la empresa, ya que este no tiene opción de entrar a la aplicación a firmarla. Una vez esté subida, aparecerán unos ticks al lado de cada miembro implicado, reflejando que, por su parte, ya han firmado. Este archivo se almacenará con el nombre “Hoja_seguimiento_dniUsuario_fecha-horacompleta.pdf”, dentro de la carpeta del usuario que lo haya subido, tanto tutor como alumno. Dicho documento se subirá gracias a la función ControladorAlumno/subirAnexo3(). Desde esta función, en el Request encontraremos la casilla del tutor de empresa con el valor de $req->firmado_tutor_empresa, que será 1 en caso de que esté el check marcado, o 0 en caso de que no. El código en cuestión es el siguiente:

Semana::where('id_fct', '=', $req->id_fct)
      ->where('id_quinto_dia', '=', $req->id_quinto_dia)
      ->update([
              'ruta_hoja' => $ruta_hoja,
              'firmado_alumno' => 1,
              'firmado_tutor_empresa' => $req->firmado_tutor_empresa
]);

subirdoc

Descargar PDF

En este caso, se descargará el último documento que se haya subido a la aplicación. Primero, se comprueba que haya un documento subido de dicha semana, y en el caso de que lo haya, se coge la ruta dónde se encuentra dicho documento, y se procede a la descarga. Dicho documento se descargará llamando a la función ControladorAlumno/descargarAnexo3().

Funcionalidad del tutor del centro de estudios

El tutor del centro de estudios tendrá acceso a los seguimientos de los alumnos de los que él es tutor. Para ello la interfaz cuenta con un desplegable en la sección de “Alumno” en la que puede elegir a cualquier alumno, y hacer un chequeo de su seguimiento en la empresa. Cuando el tutor elige un alumno, se lanza la función seguimiento-tutores.component/elegirAlumno() en el que se recoge dicho alumno, y se interactúa con él.

En su caso, también visualizará los datos mencionados anteriormente en el apartado del alumno, solo que el tutor no puede editar el tutor de la empresa, ni editar ni añadir jornadas, ni tampoco generar el documento Word de la semana correspondiente.

segtutor

Este podrá descargarse el documento PDF que el alumno ha subido anteriormente con su firma y posiblemente también con la firma del tutor de la empresa, y una vez la firme el tutor del centro de estudios, deberá subir el documento PDF de nuevo. En cuanto esto ocurra, su firma se habilitará también en la sección de las firmas de los tres roles implicados.

functutor