Añadindo la posibilidad de descaraga/crear pdf con entidades de la lista, cambiando el boton atras a un icono para volver atras al buscador principal. Creando un controlador nuevo para los pdf y ajustando y creando metodos en servicios para recuperacion de datos

Ajustes a creacion base de datos para que crean entidades de sector y skill para que no estan vacias
master
vicsash 4 months ago
parent c33623d270
commit a287df1ab8

@ -89,7 +89,7 @@ public class AdminController {
model.addAttribute("usuario", new Usuario());
return "admin/usuario/update";
}
//TODO add confirmation of if the user is a studen and if it is then cahnge the first email in alumno table
@PostMapping("/admin/update_usuario")
public String updateUser(@ModelAttribute Usuario usuario, Authentication authentication) {
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();

@ -172,7 +172,7 @@ public class BuscadorController {
}
}
List<Integer> itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50);
Page<Sucursal> page = null;
Page<Sucursal> page;
if(queryMultiWord.length>1){
page = sucursalService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption);

@ -0,0 +1,119 @@
package com.example.proyectofinal.controllers;
import com.example.proyectofinal.models.empresas.*;
import com.example.proyectofinal.servicios.empresa.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@Controller
public class PdfController {
@Autowired
private EmpresaService empresaService;
@Autowired
private AlumnoService alumnoService;
@Autowired
private CicloService cicloService;
@Autowired
private ContactosService contactosService;
@Autowired
private FamiliaService familiaService;
@Autowired
private OfertaService ofertaService;
@Autowired
private SectorService sectorService;
@Autowired
private SkillService skillService;
@Autowired
private SucursalService sucursalService;
@GetMapping("/empresas_pdf/search/all")
public ResponseEntity<List<Empresa>> searchEmpresasPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Empresa> empresas;
if(secondaryOption.equalsIgnoreCase("Todo")){
empresas = empresaService.findAll();
} else {
empresas = empresaService.searchForPdf(query,secondaryOption);
}
return ResponseEntity.ok(empresas);
}
@GetMapping("/alumnos_pdf/search/all")
public ResponseEntity<List<Alumno>> searchAlumnosPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Alumno> alumnos;
if(secondaryOption.equalsIgnoreCase("Todo")){
alumnos = alumnoService.findAll();
} else {
alumnos = alumnoService.searchForPdf(query,secondaryOption);
}
return ResponseEntity.ok(alumnos);
}
@GetMapping("/ciclos_pdf/search/all")
public ResponseEntity<List<Ciclo>> searchCiclosPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Ciclo> ciclos;
if(secondaryOption.equalsIgnoreCase("Todo")){
ciclos = cicloService.findAll();
} else {
ciclos = cicloService.searchForPdf(query,secondaryOption);
}
return ResponseEntity.ok(ciclos);
}
@GetMapping("/contactos_pdf/search/all")
public ResponseEntity<List<Contacto>> searchContactosPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Contacto> contactos;
if(secondaryOption.equalsIgnoreCase("Todo")){
contactos = contactosService.findAll();
} else {
contactos = contactosService.searchForPdf(query,secondaryOption);
}
return ResponseEntity.ok(contactos);
}
@GetMapping("/familias_pdf/search/all")
public ResponseEntity<List<Familia>> searchFamiliasPdf() {
List<Familia> familias;
familias = familiaService.findAll();
return ResponseEntity.ok(familias);
}
@GetMapping("/ofertas_pdf/search/all")
public ResponseEntity<List<Oferta>> searchOfertasPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Oferta> ofertas;
if(secondaryOption.equalsIgnoreCase("Todo")){
ofertas = ofertaService.findAll();
} else {
ofertas = ofertaService.searchForPdf(query, secondaryOption);
}
return ResponseEntity.ok(ofertas);
}
@GetMapping("/sectores_pdf/search/all")
public ResponseEntity<List<Sector>> searchSectorPdf() {
List<Sector> sectors;
sectors = sectorService.findAll();
return ResponseEntity.ok(sectors);
}
@GetMapping("/skills_pdf/search/all")
public ResponseEntity<List<Skill>> searchSkillsPdf() {
List<Skill> skills;
skills = skillService.findAll();
return ResponseEntity.ok(skills);
}
@GetMapping("/sucursales_pdf/search/all")
public ResponseEntity<List<Sucursal>> searchSucursalesPdf(@RequestParam String query, @RequestParam String secondaryOption) {
List<Sucursal> sucursals;
if(secondaryOption.equalsIgnoreCase("Todo")){
sucursals = sucursalService.findAll();
} else {
sucursals = sucursalService.searchForPdf(query,secondaryOption);
}
return ResponseEntity.ok(sucursals);
}
}

@ -14,47 +14,7 @@ INSERT INTO Ciclos (nombre, codigo, fk_familia) VALUES ('Tourismo','TOUR', 5);
INSERT INTO ciclos (nombre, codigo, fk_familia) VALUES ('Deporte','DEP', 4);
INSERT INTO ciclos (nombre, codigo, fk_familia) VALUES ('Contabilidad','Cont', 3);
-- Insert into Skill table
INSERT INTO skills (nombre) VALUES ('Java');
INSERT INTO skills (nombre) VALUES ('Microsoft XL');
INSERT INTO skills (nombre) VALUES ('Ingles');
INSERT INTO skills (nombre) VALUES ('Aluman');
INSERT INTO skills (nombre) VALUES ('Ruso');
INSERT INTO skills (nombre) VALUES ('Python');
INSERT INTO skills (nombre) VALUES ('C++');
INSERT INTO skills (nombre) VALUES ('C#');
INSERT INTO skills (nombre) VALUES ('HTML');
INSERT INTO skills (nombre) VALUES ('CSS');
INSERT INTO skills (nombre) VALUES ('JavaScript');
INSERT INTO skills (nombre) VALUES ('PHP');
INSERT INTO skills (nombre) VALUES ('SQL');
INSERT INTO skills (nombre) VALUES ('Marketing');
INSERT INTO skills (nombre) VALUES ('Carnet de conducir');
-- Insert into Sector table
INSERT INTO sectores (nombre) VALUES ('Agricultura');
INSERT INTO sectores (nombre) VALUES ('Tecnologías de la información y la comunicación');
INSERT INTO sectores (nombre) VALUES ('Ganadería');
INSERT INTO sectores (nombre) VALUES ('Pesca');
INSERT INTO sectores (nombre) VALUES ('Silvicultura');
INSERT INTO sectores (nombre) VALUES ('Turismo');
INSERT INTO sectores (nombre) VALUES ('Minería');
INSERT INTO sectores (nombre) VALUES ('Industria manufacturera');
INSERT INTO sectores (nombre) VALUES ('Construcción');
INSERT INTO sectores (nombre) VALUES ('Industria energética');
INSERT INTO sectores (nombre) VALUES ('Industria química');
INSERT INTO sectores (nombre) VALUES ('Transporte y logística');
INSERT INTO sectores (nombre) VALUES ('Turismo y hostelería');
INSERT INTO sectores (nombre) VALUES ('Salud');
INSERT INTO sectores (nombre) VALUES ('Finanzas');
INSERT INTO sectores (nombre) VALUES ('Telecomunicaciones');
INSERT INTO sectores (nombre) VALUES ('Entretenimiento y medios');
INSERT INTO sectores (nombre) VALUES ('Servicios profesionales');
INSERT INTO sectores (nombre) VALUES ('Investigación y desarrollo (I+D)');
INSERT INTO sectores (nombre) VALUES ('Tecnologías de la información y la comunicación (TIC)');
INSERT INTO sectores (nombre) VALUES ('Servicios de información');
INSERT INTO sectores (nombre) VALUES ('Servicios gubernamentales');
INSERT INTO sectores (nombre) VALUES ('Servicios sin ánimo de lucro');
-- Insert into Alumno table
INSERT INTO alumnos (nombre, apellido, apellido2, fecha_nacimiento, genero, nia, dni, correo, correo2, nacionalidad, keywords, fk_ciclo) VALUES ('Jorge', 'Doe', NULL , '2000-01-01', 'Masculino', '11345678', '123456A', 'john.doe@example.com', 'john.smith@example.com', 'American', 'Java, Python', 1);

@ -138,18 +138,13 @@ public class AlumnoService implements IAlumno{
if (!querySearchBar.isEmpty()) {
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
if (secondaryOption.equals("Nombre")) {
listEmpPrime.addAll(alumnoRepository.alumnosByNombreCust(query));
} else if (secondaryOption.equals("Apellido")) {
listEmpPrime.addAll(alumnoRepository.alumnosByApellidoCust(query));
} else if (secondaryOption.equals("Ciclo")) {
listEmpPrime.addAll(alumnoRepository.alumnosByCicloCust(query));
} else if (secondaryOption.equals("Keywords")) {
listEmpPrime.addAll(alumnoRepository.alumnosByKeywordsCust(query));
} else if (secondaryOption.equals("Nia")) {
listEmpPrime.addAll(alumnoRepository.alumnosByNiaCust(query));
} else if (secondaryOption.equals("Dni")) {
listEmpPrime.addAll(alumnoRepository.alumnosByDniCust(query));
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(alumnoRepository.alumnosByNombreCust(query));
case "Apellido" -> listEmpPrime.addAll(alumnoRepository.alumnosByApellidoCust(query));
case "Ciclo" -> listEmpPrime.addAll(alumnoRepository.alumnosByCicloCust(query));
case "Keywords" -> listEmpPrime.addAll(alumnoRepository.alumnosByKeywordsCust(query));
case "Nia" -> listEmpPrime.addAll(alumnoRepository.alumnosByNiaCust(query));
case "Dni" -> listEmpPrime.addAll(alumnoRepository.alumnosByDniCust(query));
}
}
}
@ -166,4 +161,22 @@ public class AlumnoService implements IAlumno{
public List<Alumno> findBySkillsIn(List<Skill> skills) {
return alumnoRepository.findBySkillsIn(skills,skills.size());
}
public List<Alumno> searchForPdf(String queryPrime, String secondaryOption) {
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Alumno> listEmpPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(alumnoRepository.alumnosByNombreCust(query));
case "Apellido" -> listEmpPrime.addAll(alumnoRepository.alumnosByApellidoCust(query));
case "Ciclo" -> listEmpPrime.addAll(alumnoRepository.alumnosByCicloCust(query));
case "Keywords" -> listEmpPrime.addAll(alumnoRepository.alumnosByKeywordsCust(query));
case "Nia" -> listEmpPrime.addAll(alumnoRepository.alumnosByNiaCust(query));
case "Dni" -> listEmpPrime.addAll(alumnoRepository.alumnosByDniCust(query));
}
}
return listEmpPrime;
}
}

@ -145,4 +145,20 @@ public class CicloService implements ICiclos {
listEmpPrime.retainAll(listEmpSec);
return listEmpPrime;
}
public List<Ciclo> searchForPdf(String queryPrime, String secondaryOption) {
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Ciclo> listEmpPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
if (secondaryOption.equals("Familia")) {
listEmpPrime.addAll(cicloRepository.cicloByFamCust(query));
} else if (secondaryOption.equals("Codigo")) {
listEmpPrime.addAll(cicloRepository.cicloByCodCust(query));
}
}
return listEmpPrime;
}
}

@ -24,7 +24,7 @@ public class ContactosService implements IContactos {
@Override
public List<Contacto> findAll() {
return List.of();
return contactoRepository.findAll();
}
@Override
@ -129,13 +129,10 @@ public class ContactosService implements IContactos {
@Override
public List<Contacto> searchCustom(String querySearchBar, String queryPrime, String secondaryOption) {
// See if the query is a single word or multiple words
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
// Create the ArrayLists to store the results
ArrayList<Contacto> listContactoPrime = new ArrayList<>();
ArrayList<Contacto> listContactoSec = new ArrayList<>();
// Confirm if the search bar is empty
ArrayList<Contacto> listContactoSec;
if (!querySearchBar.isEmpty()) {
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
@ -146,10 +143,23 @@ public class ContactosService implements IContactos {
}
}
}
System.out.println("listContactoPrime: TEST" + listContactoPrime);
listContactoSec = (ArrayList<Contacto>) contactoRepository.search(querySearchBar);
System.out.println("listContactoSec: TEST" + listContactoSec);
listContactoPrime.retainAll(listContactoSec);
return listContactoPrime;
}
public List<Contacto> searchForPdf(String queryPrime, String secondaryOption) {
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Contacto> listContactoPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
if (secondaryOption.equals("Nombre")) {
listContactoPrime.addAll(contactoRepository.findContactosByNameCust(query));
} else if (secondaryOption.equals("Empresa")) {
listContactoPrime.addAll(contactoRepository.findContactosByEmpresaNameCust(query));
}
}
return listContactoPrime;
}
}

@ -111,17 +111,21 @@ public class EmpresaService implements IEmpresa {
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
Page<Empresa> page;
if (secondaryOption.equals("Nombre")) {
switch (secondaryOption) {
case "Nombre" -> {
page = empresaRepository.findEmpresasByEmpresaName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending()));
allMatches.addAll(page.getContent());
} else if (secondaryOption.equals("Sector")) {
}
case "Sector" -> {
page = empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending()));
allMatches.addAll(page.getContent());
} else if (secondaryOption.equals("Keywords")) {
}
case "Keywords" -> {
page = empresaRepository.findEmpresasByMultKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending()));
allMatches.addAll(page.getContent());
}
}
}
// Convert the list of all matches to a page
int start = (int) PageRequest.of(pageNum - 1, size).getOffset();
int end = Math.min((start + PageRequest.of(pageNum - 1, size).getPageSize()), allMatches.size());
@ -135,17 +139,15 @@ public class EmpresaService implements IEmpresa {
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
//Create the ArrayLists to store the results
ArrayList<Empresa> listEmpPrime = new ArrayList<>();
ArrayList<Empresa> listEmpSec = new ArrayList<>();
ArrayList<Empresa> listEmpSec;
//Confirm if the search bar is empty
if (!querySearchBar.isEmpty()) {
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
if (secondaryOption.equals("Nombre")) {
listEmpPrime.addAll(empresaRepository.findEmpresasByEmpresaNameCust(query));
} else if (secondaryOption.equals("Sector")) {
listEmpPrime.addAll(empresaRepository.findEmpresasBySectorNameCust(query));
} else if (secondaryOption.equals("Keywords")) {
listEmpPrime.addAll(empresaRepository.findEmpresasByKeywordsCust(query));
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(empresaRepository.findEmpresasByEmpresaNameCust(query));
case "Sector" -> listEmpPrime.addAll(empresaRepository.findEmpresasBySectorNameCust(query));
case "Keywords" -> listEmpPrime.addAll(empresaRepository.findEmpresasByKeywordsCust(query));
}
}
}
@ -156,10 +158,25 @@ public class EmpresaService implements IEmpresa {
return listEmpPrime;
}
public List<Empresa> searchForPdf(String queryPrime,String secondaryOption) {
//See if the query is a single word or multiple words
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Empresa> listEmpPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(empresaRepository.findEmpresasByEmpresaNameCust(query));
case "Sector" -> listEmpPrime.addAll(empresaRepository.findEmpresasBySectorNameCust(query));
case "Keywords" -> listEmpPrime.addAll(empresaRepository.findEmpresasByKeywordsCust(query));
}
}
return listEmpPrime;
}
@Override
public void saveManualy(long id, String nombre, String cif, String correo, String telefono, String keywords, long id1) {
empresaRepository.saveManualy( id, nombre, cif, correo, telefono, keywords, id1);
}
}

@ -57,6 +57,11 @@ public class FamiliaService implements IFamilia {
return familiaRepository.search(query);
}
@Override
public List<Familia> findAll() {
return familiaRepository.findAll();
}
public List<Familia> findAllFamilias() {
return familiaRepository.findAll();
}

@ -214,4 +214,29 @@ public class OfertaService implements IOferta {
public List<Integer> findDistinctYears() {
return ofertaRepository.findDistinctYears();
}
public List<Oferta> searchForPdf(String queryPrime, String secondaryOption) {
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Oferta> listEmpPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(ofertaRepository.ofertasByNombreCust(query));
case "Empresa" -> listEmpPrime.addAll(ofertaRepository.ofertasByEmpresaCust(query));
case "Skill" -> listEmpPrime.addAll(ofertaRepository.ofertasBySkillCust(query));
case "Este Año" -> {
String year = new SimpleDateFormat("yyyy").format(new Date());
listEmpPrime.addAll(ofertaRepository.findOfertaByFechaAnyo(year, PageRequest.of(0, 1000, Sort.by("fecha").ascending())).getContent());
}
case "Ultimos 3 meses" ->
listEmpPrime.addAll(ofertaRepository.findOfertaByFechaUltimos3Meses(PageRequest.of(0, 1000, Sort.by("fecha").ascending())).getContent());
case "Ultimos 6 meses" ->
listEmpPrime.addAll(ofertaRepository.findOfertaByFechaUltimos6Meses(PageRequest.of(0, 1000, Sort.by("fecha").ascending())).getContent());
}
}
return listEmpPrime;
}
}

@ -126,12 +126,10 @@ public class SucursalService implements ISucursal {
if (!querySearchBar.isEmpty()) {
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
if (secondaryOption.equals("Nombre")) {
listEmpPrime.addAll(sucursalRepository.sucursalByNameCust(query));
} else if (secondaryOption.equals("Empresa")) {
listEmpPrime.addAll(sucursalRepository.sucursalByEmpNameCust(query));
} else if (secondaryOption.equals("Localidad")) {
listEmpPrime.addAll(sucursalRepository.sucursalByLoclCust(query));
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(sucursalRepository.sucursalByNameCust(query));
case "Empresa" -> listEmpPrime.addAll(sucursalRepository.sucursalByEmpNameCust(query));
case "Localidad" -> listEmpPrime.addAll(sucursalRepository.sucursalByLoclCust(query));
}
}
}
@ -139,4 +137,19 @@ public class SucursalService implements ISucursal {
listEmpPrime.retainAll(listEmpSec);
return listEmpPrime;
}
public List<Sucursal> searchForPdf(String queryPrime, String secondaryOption) {
String[] queryMultiWord = queryPrime.split(",");
queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new);
ArrayList<Sucursal> listEmpPrime = new ArrayList<>();
for (String query : queryMultiWord) {
query = query.trim().toLowerCase();
switch (secondaryOption) {
case "Nombre" -> listEmpPrime.addAll(sucursalRepository.sucursalByNameCust(query));
case "Empresa" -> listEmpPrime.addAll(sucursalRepository.sucursalByEmpNameCust(query));
case "Localidad" -> listEmpPrime.addAll(sucursalRepository.sucursalByLoclCust(query));
}
}
return listEmpPrime;
}
}

@ -17,4 +17,5 @@ public interface IFamilia extends IPagination<Familia> {
List<Familia> search(String query);
List<Familia> findAll();
}

@ -114,3 +114,121 @@ SELECT 'Servicios gubernamentales' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios sin ánimo de lucro' WHERE NOT EXISTS (SELECT 1 FROM sectores);
-- Insert skills if the skill table is empty
INSERT INTO skills (nombre)
SELECT 'Java' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Microsoft XL' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Ingles' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Aluman' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Ruso' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Python' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'C++' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'C#' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'HTML' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'CSS' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'JavaScript' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'PHP' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'SQL' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Marketing' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Carnet de conducir' WHERE NOT EXISTS (SELECT 1 FROM skills);
-- Insert for sectores
INSERT INTO sectores (nombre)
SELECT 'Agricultura' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Tecnologías de la información y la comunicación' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Ganadería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Pesca' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Silvicultura' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Turismo' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Minería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria manufacturera' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Construcción' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria energética' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria química' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Transporte y logística' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Turismo y hostelería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Salud' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Finanzas' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Telecomunicaciones' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Entretenimiento y medios' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios profesionales' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Investigación y desarrollo (I+D)' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Tecnologías de la información y la comunicación (TIC)' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios de información' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios gubernamentales' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios sin ánimo de lucro' WHERE NOT EXISTS (SELECT 1 FROM sectores);

@ -5,3 +5,118 @@ INSERT INTO autoridad (nombre)
SELECT 'WRITE' WHERE NOT EXISTS (SELECT 1 FROM autoridad);
INSERT INTO autoridad (nombre)
SELECT 'DELETE' WHERE NOT EXISTS (SELECT 1 FROM autoridad);
INSERT INTO skills (nombre)
SELECT 'Java' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Microsoft XL' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Ingles' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Aluman' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Ruso' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Python' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'C++' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'C#' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'HTML' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'CSS' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'JavaScript' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'PHP' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'SQL' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Marketing' WHERE NOT EXISTS (SELECT 1 FROM skills);
INSERT INTO skills (nombre)
SELECT 'Carnet de conducir' WHERE NOT EXISTS (SELECT 1 FROM skills);
-- Insert for sectores
INSERT INTO sectores (nombre)
SELECT 'Agricultura' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Tecnologías de la información y la comunicación' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Ganadería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Pesca' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Silvicultura' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Turismo' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Minería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria manufacturera' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Construcción' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria energética' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Industria química' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Transporte y logística' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Turismo y hostelería' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Salud' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Finanzas' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Telecomunicaciones' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Entretenimiento y medios' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios profesionales' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Investigación y desarrollo (I+D)' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Tecnologías de la información y la comunicación (TIC)' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios de información' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios gubernamentales' WHERE NOT EXISTS (SELECT 1 FROM sectores);
INSERT INTO sectores (nombre)
SELECT 'Servicios sin ánimo de lucro' WHERE NOT EXISTS (SELECT 1 FROM sectores);

@ -93,17 +93,29 @@ h1 {
}
body {
margin: 0;
padding: 0px;
padding: 0;
}
.header {
display: flex;
align-items: center;
background-color: #007BFF;
justify-content: space-between;
background-color: #007BFF;
padding: 0;
box-sizing: border-box;
}
.pdfButton {
font-size: 10px; /* Adjust font size */
padding: 2px 5px; /* Adjust padding */
width: auto; /* Adjust width to auto so it expands as needed */
white-space: normal; /* Allow text to wrap to next line */
text-align: center; /* Center the text */
z-index: 2;
position: relative;
}
.header h1 {
position: absolute;
left: 50%;
transform: translateX(-50%);
margin: 0;
}
.header button {
@ -217,3 +229,5 @@ html, body {
display: none;
}

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista: Alumnos</title>
<style>
@ -19,9 +21,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Alumnos</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Alumnos
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -174,7 +182,7 @@
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
var $table = $('#table');
var $modalDelete = $('#modalDelete');
@ -371,6 +379,91 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de alumnos', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('ciclos_alumnos.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/alumnos_pdf/search/all?query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de Alumnos', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Apellido</th>
<th>Apellido2</th>
<th>Fecha Nacimiento</th>
<th>Genero</th>
<th>NIA</th>
<th>DNI</th>
<th>Correo</th>
<th>Correo2</th>
<th>Nacionalidad</th>
<th>Keywords</th>
<th>Ciclo</th>
<th>Skills</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(alumno => {
var row = document.createElement('tr');
row.dataset.id = alumno.id;
row.innerHTML = `
<td>${alumno.nombre}</td>
<td>${alumno.apellido}</td>
<td>${alumno.apellido2}</td>
<td>${alumno.fechaNacimiento}</td>
<td>${alumno.genero}</td>
<td>${alumno.nia}</td>
<td>${alumno.dni}</td>
<td>${alumno.correo}</td>
<td>${alumno.correo2}</td>
<td>${alumno.nacionalidad}</td>
<td>${alumno.keywords}</td>
<td>${alumno.ciclo.nombre}</td>
<td>${alumno.skills.map(skill => skill.nombre).join(', ')}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_alumnos.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista: Cilos</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Ciclos</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Ciclos
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -93,7 +101,7 @@
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
@ -280,6 +288,70 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de ciclos', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_ciclos.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/ciclos_pdf/search/all?query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de ciclos', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Codigo</th>
<th>Familia</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(ciclo => {
var row = document.createElement('tr');
row.dataset.id = ciclo.id;
row.innerHTML = `
<td>${ciclo.nombre}</td>
<td>${ciclo.codigo}</td>
<td>${ciclo.familia.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_ciclos.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista: Contactos</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Contactos</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Contactos
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -113,7 +121,7 @@
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
@ -304,6 +312,77 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de contactos', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_contactos.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/contactos_pdf/search/all?querySearchBar=' + querySearchBar + '&query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de contactos', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Apellido</th>
<th>Apellido2</th>
<th>Correo</th>
<th>Telefono</th>
<th>Empresa</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(contacto => {
var row = document.createElement('tr');
row.dataset.id = contacto.id;
row.innerHTML = `
<td>${contacto.nombre}</td>
<td>${contacto.apellido}</td>
<td>${contacto.apellido2}</td>
<td>${contacto.correo}</td>
<td>${contacto.telefono}</td>
<td>${contacto.empresa.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_contactos.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista Empresas</title>
<style>
@ -13,8 +15,14 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Empresas</h1>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Empresas
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -110,13 +118,12 @@
<p>¿Estas seguro que quires borrar este elemnto?</p>
<span class="delete">Borrar</span>
<span class="close">Cancelar</span>
</div>
</div>
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
var isAdmin = [[${isAdmin}]];
@ -307,15 +314,77 @@
}
});
});
/*
/////////////////MOUSE SROLL FOR KEYWORD AND SKILLS//////////////////////
const cells = document.querySelectorAll('.keywords-cell');
cells.forEach(cell => {
cell.addEventListener('wheel', function(e) {
e.preventDefault();
this.scrollLeft += e.deltaY;
}, { passive: false });
});*/
/////////////////PDF FOR CURRENT ITEMS//////////////////////
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de empresas', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_empresas.pdf');
}
/////////////////PDF FOR ALL SEARCHED ITEMS//////////////////////
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/empresas_pdf/search/all?query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de empresas', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Cif</th>
<th>Correo</th>
<th>Telefono</th>
<th>Sector</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(empresa => {
var row = document.createElement('tr');
row.dataset.id = empresa.id;
row.innerHTML = `
<td>${empresa.nombre}</td>
<td>${empresa.cif}</td>
<td>${empresa.correo}</td>
<td>${empresa.telefono}</td>
<td>${empresa.sector.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_empresas.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista:Familia</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Familias</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Familias
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -82,7 +90,7 @@
<script src="/orderTable.js"></script>
<script>
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
var isAdmin = [[${isAdmin}]];
@ -260,6 +268,66 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de familais', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_familias.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/familias_pdf/search/all')
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de familias', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(familia => {
var row = document.createElement('tr');
row.dataset.id = familia.id;
row.innerHTML = `
<td>${familia.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_familias.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista Ofertas</title>
<style>
@ -16,9 +18,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Ofertas</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Ofertas
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -117,7 +125,7 @@
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
@ -311,7 +319,7 @@
event.preventDefault();
}
});
});
});/*
/////////////////MOUSE SROLL FOR KEYWORD AND SKILLS//////////////////////
const cells = document.querySelectorAll('.keywords-cell');
cells.forEach(cell => {
@ -319,7 +327,79 @@
e.preventDefault();
this.scrollLeft += e.deltaY;
}, { passive: false });
});*/
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de ofertas', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_ofertas.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/ofertas_pdf/search/all?query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de ofertas', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Fecha</th>
<th>Descripcion</th>
<th>Sucursal</th>
<th>Ciclo</th>
<th>Skills</th>
// Add more headers as per your data structure
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(oferta => {
var row = document.createElement('tr');
row.dataset.id = oferta.id;
row.innerHTML = `
<td>${oferta.nombre}</td>
<td>${oferta.fecha}</td>
<td>${oferta.descripcion}</td>
<td>${oferta.sucursal.nombre}</td>
<td>${oferta.ciclo.nombre}</td>
<td>${oferta.skills.map(skill => skill.nombre).join(', ')}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_ofertas.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista:Sectores</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Sectores</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Sectores
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -81,7 +89,7 @@
<script src="/orderTable.js"></script>
<script>
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
var isAdmin = [[${isAdmin}]];
@ -258,6 +266,66 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de sectores', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_sectores.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/sectores_pdf/search/all')
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de Sectores', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(sector => {
var row = document.createElement('tr');
row.dataset.id = sector.id;
row.innerHTML = `
<td>${sector.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_sectores.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista: Skills</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Skills</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Skills
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -81,7 +89,7 @@
<script src="/orderTable.js"></script>
<script>
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
var isAdmin = [[${isAdmin}]];
@ -259,6 +267,66 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de skills', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_skills.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/skills_pdf/search/all')
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de skills', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(skill => {
var row = document.createElement('tr');
row.dataset.id = skill.id;
row.innerHTML = `
<td>${skill.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_skills.pdf');
});
}
</script>
</body>
</html>

@ -5,6 +5,8 @@
<link rel="stylesheet" type="text/css" th:href="@{/style.css}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.23/jspdf.plugin.autotable.min.js"></script>
<meta charset="UTF-8">
<title>Lista Sucursales</title>
<style>
@ -13,9 +15,15 @@
</head>
<body>
<div class="header">
<button onclick="goBack()">Atras</button>
<h1>Listado de Sucursales</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a>
<div>
<button class="pdfButton" onclick="generatePDF()">Generar PDF de esta pagina</button>
<button class="pdfButton" onclick="generatePDF_All()">Generar PDF de todas entradas</button>
</div>
<h1>
<i class="fas fa-arrow-left" onclick="goBack()" style="cursor:pointer;"></i>
Listado de Ofertas
</h1>
<a href="/logout" class="logout-button"><i class="fas fa-door-open "></i></a>
</div>
@ -106,7 +114,7 @@
<script src="/orderTable.js"></script>
<script th:inline="javascript">
function goBack() {
window.history.back();
window.location.href = '/buscador';
}
/*<![CDATA[*/
@ -296,6 +304,70 @@
}
});
});
function generatePDF() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt'); // 'l' for landscape mode, 'pt' for points as unit
// Add a title to the PDF
doc.setFontSize(20); // Set the font size
doc.text('Lista de sucursales', 40, 40); // Add the title
// Get the HTML table
const tableElement = document.getElementById("table");
// Use jsPDF-AutoTable to convert the table to PDF
doc.autoTable({ html: tableElement, startY: 60 }); // Start the table below the title
// Save the PDF
doc.save('lista_sucursales.pdf');
}
function generatePDF_All() {
var querySearchBar = document.querySelector('#myInput').value;
var query = /*[[${query}]]*/ 'defaultQuery';
var secondaryOption = /*[[${secondaryOption}]]*/ 'defaultSecondaryOption';
fetch('/sucursales_pdf/search/all?query=' + query + '&secondaryOption=' + secondaryOption)
.then(response => response.json())
.then(data => {
const { jsPDF } = window.jspdf;
const doc = new jsPDF('l', 'pt');
doc.setFontSize(20);
doc.text('Lista de Sucursales', 40, 40);
// Create a new table for the PDF
var table = document.createElement('table');
// Create table headers
var tableHead = document.createElement('thead');
var headerRow = document.createElement('tr');
headerRow.innerHTML = `
<th>Nombre</th>
<th>Direccion</th>
<th>Empresa</th>
`;
tableHead.appendChild(headerRow);
table.appendChild(tableHead);
// Create table body
var tableBody = document.createElement('tbody');
data.forEach(sucursal => {
var row = document.createElement('tr');
row.dataset.id = sucursal.id;
row.innerHTML = `
<td>${sucursal.nombre}</td>
<td>${sucursal.direccion}</td>
<td>${sucursal.empresa.nombre}</td>
`;
tableBody.appendChild(row);
});
table.appendChild(tableBody);
doc.autoTable({ html: table, startY: 60 });
doc.save('lista_sucursales.pdf');
});
}
</script>
</body>
</html>
Loading…
Cancel
Save

Powered by INFORMATICA.FP.EDU.ES.