3.4.12. Documento de confidencialidad - diezMalena/api_FCTFiller GitHub Wiki
Objetivo
El documento de confidencialidad es un documento que rellena el alumno y firma con la intención de guardar confidencialidad y secreto con respecto a la empresa en la que realizará sus FCT. Este Anexo se va a rellenar automaticamente con tan solo el dni del alumno logueado en la aplicación y se descargará automaticamente, ahorrando mucho trabajo.
Rellenar Anexo
- Para acceder a rellenar este Anexo, primero debes acceder al CRUD de anexos de los alumnos y después al botón rellenar, la funcionalidad de estas acciones se explica en este enlace : Anexos-alumnos
-
Al pulsar el botón Generar Anexo se llama a la función
onSubmit()
, se comprueba de que tipo de anexo se esta haciendo la petición y se llama a la función del servidorrellenarAnexoXV()
que recibe como parametro una request, que contiene el dni del alumno solicitante y el codigo de anexo, que es el nombre del fichero que se va a rellenar, por ejemplo: AnexoXV_13c_2022_.docx. -
Esta función contiene estas variables necesarias para rellenar el anexo:
$fecha = Carbon::now();
$dni_alumno = $req->get('dni');
$dni_tutor = $this->getDniTutorDelAlumno($dni_alumno);
$nombre_archivo = $req->get('cod_anexo');
$nombre_alumno = $this->getNombreAlumno($dni_alumno);
$nombre_ciclo = $this->getNombreCicloAlumno($dni_alumno);
$centro_estudios = $this->getCentroEstudiosYLocalidad($dni_alumno);
$familia_profesional = $this->getDescripcionFamiliaProfesional($nombre_ciclo[0]->nombre_ciclo);
- Variables almacenamiento del alumno:
- Estas variables indican, de donde se saca la plantilla que vamos a rellenar , donde se va a almacenar estando ya rellena y también
$rutaCarpeta
que se refiere a la ruta de la carpeta del tutor, para poder usar la funciónphp Auxiliar::existeCarpeta($rutaCarpeta)
que nos permitirá revisar si la carpeta existe y sino, la creara.
$rutaOriginal = 'anexos' . DIRECTORY_SEPARATOR . 'plantillas' . DIRECTORY_SEPARATOR . 'AnexoXV.docx';
$rutaCarpeta = public_path($dni_alumno . DIRECTORY_SEPARATOR . 'AnexoXV');
$rutaDestino = $dni_alumno . DIRECTORY_SEPARATOR . 'AnexoXV' . DIRECTORY_SEPARATOR . $nombre_archivo;
Auxiliar::existeCarpeta($rutaCarpeta);
- Variables almacenamiento del alumno:
- Con el mismo significado que para los alumnos
$rutaCarpetaTutor = public_path($dni_tutor[0]->dni_profesor . DIRECTORY_SEPARATOR . 'AnexoXV');
$rutaDestinoTutor = $dni_tutor[0]->dni_profesor . DIRECTORY_SEPARATOR . 'AnexoXV' . DIRECTORY_SEPARATOR . $nombre_archivo;
Auxiliar::existeCarpeta($rutaCarpetaTutor);
- Habilitamos el anexo
Anexo::where('ruta_anexo', 'like', "%$nombre_archivo")->update([
'habilitado' => 1,
]);
- Añadimos el anexo a la base de datos referenciando esta vez al tutor, por que para el alumno, en base de datos este anexo ya existe
$existeAnexo = Anexo::where('tipo_anexo', '=', 'AnexoXV')->where('ruta_anexo', 'like', "$rutaDestinoTutor")->get();
if (count($existeAnexo) == 0) {
Anexo::create(['tipo_anexo' => 'AnexoXV', 'ruta_anexo' => $rutaDestinoTutor, 'habilitado' => 1]);
}
- Preparamos los datos para rellenar el .docx
$auxPrefijos = ['alumno', 'ciclo', 'centro', 'familia_profesional'];
$auxDatos = [$nombre_alumno, $nombre_ciclo[0], $centro_estudios[0], $familia_profesional[0]];
$datos = Auxiliar::modelsToArray($auxDatos, $auxPrefijos);
$datos = $datos + [
'dia' => $fecha->day,
'mes' => Parametros::MESES[$fecha->month],
'year' => $fecha->year,
'dni' => $dni_alumno,
'curso' => '2º'
];
- Rellenamos el documento y lo almacenamos para alumno y para profesor
$template = new TemplateProcessor($rutaOriginal);
$template->setValues($datos);
$template->saveAs($rutaDestino);
$template = new TemplateProcessor($rutaOriginal);
$template->setValues($datos);
$template->saveAs($rutaDestinoTutor);
- Y finalmente devuelve un archivo que se descargará automaticamente para el usuario
return response()->download(public_path($rutaDestino));
- En Angular el archivo será recibido gracias a estos parametros
import * as FileSaver from 'file-saver';
const blob = new Blob([response], { type: 'application/octet-stream' });
FileSaver.saveAs(blob, this.codAnexo);