From 70afff8de5754c32d2fdb6d06a58c386788004f2 Mon Sep 17 00:00:00 2001 From: vicsash Date: Wed, 29 May 2024 23:51:35 +0200 Subject: [PATCH] Arreglando fallo de ordinacion cuando pulsamos un th de la tabla --- .../controllers/BuscadorController.java | 1 + .../modelControllers/SucursalController.java | 5 +++- .../servicios/empresa/AlumnoService.java | 8 +++--- .../servicios/empresa/CicloService.java | 8 +++--- .../servicios/empresa/ContactosService.java | 4 +-- .../servicios/empresa/EmpresaService.java | 8 +++--- .../servicios/empresa/OfertaService.java | 27 +++++-------------- .../servicios/empresa/SucursalService.java | 15 ++++------- .../resources/templates/list/alumnos.html | 24 ++++++++--------- src/main/resources/templates/list/ciclos.html | 6 ++--- .../resources/templates/list/contactos.html | 12 ++++----- .../resources/templates/list/empresas.html | 12 ++++----- .../resources/templates/list/ofertas.html | 10 +++---- .../resources/templates/list/sucursales.html | 10 +++---- 14 files changed, 68 insertions(+), 82 deletions(-) diff --git a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java index 9bc50e8..436e809 100644 --- a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java +++ b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java @@ -81,6 +81,7 @@ public class BuscadorController { @RequestParam(defaultValue = "asc") String sortDir, @RequestParam String secondaryOption, Model model){ + System.out.println("TEST SORT DIR " + sortDir); String[] queryMultiWord = query.split(","); List queryList = new ArrayList<>(); for (String queryForList : queryMultiWord) { diff --git a/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java b/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java index 2e69d01..9480ebf 100644 --- a/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java +++ b/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java @@ -5,6 +5,7 @@ import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.servicios.empresa.EmpresaService; import com.example.proyectofinal.servicios.empresa.SucursalService; import jakarta.annotation.security.RolesAllowed; +import jakarta.persistence.EntityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -29,7 +30,8 @@ public class SucursalController { private SucursalService sucursalService; @Autowired private EmpresaService empresaService; - + @Autowired + private EntityManager entityManager; @GetMapping("/admin/sucursal/create") public String showCreateForm(Model model, Authentication authentication) { @@ -96,6 +98,7 @@ public class SucursalController { @PostMapping("/sucursal/update") public ResponseEntity updateSucursal(Sucursal sucursal, @RequestParam("empresa.id") Long sectorId, @RequestParam("sedeCentral") boolean sedeCentral){ try{ + entityManager.detach(sucursal); Empresa existingEmpresa = empresaService.findById(sectorId); sucursal.setEmpresa(existingEmpresa); Sucursal existingSucursal = sucursalService.findById(sucursal.getId()); diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java index bfccfd5..edc4c5e 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java @@ -28,9 +28,9 @@ public class AlumnoService implements IAlumno{ if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if(secondaryOption.equals("Keywords")) { - return alumnoRepository.findAlumnoByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return alumnoRepository.findAlumnoByKeywords(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); }else if(secondaryOption.equals("Ciclo")) { - return alumnoRepository.findAlumnoByCiclo(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return alumnoRepository.findAlumnoByCiclo(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -108,10 +108,10 @@ public class AlumnoService implements IAlumno{ query = query.trim().toLowerCase(); Page page; if(secondaryOption.equals("Ciclo")) { - page = alumnoRepository.findAlumnoByCiclos(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = alumnoRepository.findAlumnoByCiclos(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } else if (secondaryOption.equals("Keywords")) { - page = alumnoRepository.findAlumnoByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = alumnoRepository.findAlumnoByKeywords(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java index f266bf4..ffb06af 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java @@ -93,9 +93,9 @@ public class CicloService implements ICiclos { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if(secondaryOption.equals("Familia")) { - return cicloRepository.findCicloByFamilia(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return cicloRepository.findCicloByFamilia(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else if(secondaryOption.equals("Codigo")) { - return cicloRepository.findCicloByCodigo(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return cicloRepository.findCicloByCodigo(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -116,10 +116,10 @@ public class CicloService implements ICiclos { query = query.trim().toLowerCase(); Page page; if (secondaryOption.equals("Familia")) { - page = cicloRepository.findCicloByFamilias(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = cicloRepository.findCicloByFamilias(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } else if (secondaryOption.equals("Codigo")) { - page = cicloRepository.findCicloByCodigos(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = cicloRepository.findCicloByCodigos(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java index 69478af..7ede7ff 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java @@ -79,7 +79,7 @@ public class ContactosService implements IContactos { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if(secondaryOption.equals("Empresa")) { - return contactoRepository.findContactoByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return contactoRepository.findContactoByEmpresa(query, PageRequest.of(pageNum - 1, size,sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -92,7 +92,7 @@ public class ContactosService implements IContactos { query = query.trim().toLowerCase(); Page page; if(secondaryOption.equals("Empresa")) { - page = contactoRepository.findContactosByCompanyNames(Collections.singletonList(query), PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = contactoRepository.findContactosByCompanyNames(Collections.singletonList(query), PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java index f9276cc..601334c 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java @@ -95,9 +95,9 @@ public class EmpresaService implements IEmpresa { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if (secondaryOption.equals("Sector")) { - return empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); }else if(secondaryOption.equals("Keywords")) { - return empresaRepository.findEmpresasByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return empresaRepository.findEmpresasByKeywords(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -111,11 +111,11 @@ public class EmpresaService implements IEmpresa { Page page; switch (secondaryOption) { case "Sector" -> { - page = empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } case "Keywords" -> { - page = empresaRepository.findEmpresasByMultKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = empresaRepository.findEmpresasByMultKeywords(query, PageRequest.of(pageNum - 1, size, sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java index 33aa41a..624c8a3 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java @@ -41,7 +41,6 @@ public class OfertaService implements IOferta { Sort.by(sortField).descending(); Pageable pageable = PageRequest.of(pageNum - 1, pageSize, sort); Page page = this.ofertaRepository.findAll(pageable); - List ofertas = page.getContent(); for (Oferta oferta : ofertas) { List skillsData = ofertaRepository.findSkillsByOfertaId(oferta.getId()); @@ -54,7 +53,6 @@ public class OfertaService implements IOferta { } oferta.setSkills(skills); } - return page; } @@ -110,16 +108,16 @@ public class OfertaService implements IOferta { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if (secondaryOption.equals("Skill")) { - return ofertaRepository.findOfertaBySkill(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return ofertaRepository.findOfertaBySkill(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else if(secondaryOption.equals("Este Año")) { String year = new SimpleDateFormat("yyyy").format(new Date()); - return ofertaRepository.findOfertaByFechaAnyo(year, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return ofertaRepository.findOfertaByFechaAnyo(year, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); }else if(secondaryOption.equals("Ultimos 3 meses")){ - return ofertaRepository.findOfertaByFechaUltimos3Meses(PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return ofertaRepository.findOfertaByFechaUltimos3Meses(PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); }else if(secondaryOption.equals("Ultimos 6 meses")){ - return ofertaRepository.findOfertaByFechaUltimos6Meses(PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return ofertaRepository.findOfertaByFechaUltimos6Meses(PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else if(secondaryOption.equals("Empresa")) { - return ofertaRepository.findOfertaByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return ofertaRepository.findOfertaByEmpresa(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -132,11 +130,11 @@ public class OfertaService implements IOferta { Page page; switch (secondaryOption) { case "Empresa" -> { - page = ofertaRepository.findOfertaByEmpresas(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = ofertaRepository.findOfertaByEmpresas(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } case "Skill" -> { - page = ofertaRepository.findOfertaBySkills(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = ofertaRepository.findOfertaBySkills(query, PageRequest.of(pageNum - 1, size,sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } @@ -147,15 +145,6 @@ public class OfertaService implements IOferta { return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); } - public boolean isYear(String query) { - try { - Integer.parseInt(query); - return true; - } catch (NumberFormatException e) { - return false; - } - } - @Override public List searchCustom(String querySearchBar, String queryPrime, String secondaryOption) { String[] queryMultiWord = queryPrime.split(","); @@ -226,8 +215,6 @@ public class OfertaService implements IOferta { listEmpPrime.addAll(ofertaRepository.findOfertaByFechaUltimos6Meses(PageRequest.of(0, 1000, Sort.by("fecha").ascending())).getContent()); } } - - return listEmpPrime; } } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java index 1ea90ce..8b6c5a1 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java @@ -86,11 +86,9 @@ public class SucursalService implements ISucursal { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); }else if (secondaryOption.equals("Empresa")) { - return sucursalRepository.findSucursalByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - } else if(secondaryOption.equals("Nombre")) { - return sucursalRepository.findSucursalaByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return sucursalRepository.findSucursalByEmpresa(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); }else if(secondaryOption.equals("Localidad")) { - return sucursalRepository.findSucursalByLocalidad(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + return sucursalRepository.findSucursalByLocalidad(query, PageRequest.of(pageNum - 1, size,sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); } else { return null; } @@ -101,14 +99,11 @@ public class SucursalService implements ISucursal { for (String query : queryList) { query = query.trim().toLowerCase(); Page page; - if (secondaryOption.equals("Nombre")) { - page = sucursalRepository.findSucursalesByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - allMatches.addAll(page.getContent()); - } else if (secondaryOption.equals("Empresa")) { - page = sucursalRepository.findSucursalesByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + if (secondaryOption.equals("Empresa")) { + page = sucursalRepository.findSucursalesByEmpresa(query, PageRequest.of(pageNum - 1, size, sortField.equals("nombre") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } else if (secondaryOption.equals("Localidad")) { - page = sucursalRepository.findSucursalesByLocalidad(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + page = sucursalRepository.findSucursalesByLocalidad(query, PageRequest.of(pageNum - 1, size, sortDir.equals("asc") ? Sort.by(sortField).ascending() : Sort.by(sortField).descending())); allMatches.addAll(page.getContent()); } } diff --git a/src/main/resources/templates/list/alumnos.html b/src/main/resources/templates/list/alumnos.html index 5e061d1..4b7f61e 100644 --- a/src/main/resources/templates/list/alumnos.html +++ b/src/main/resources/templates/list/alumnos.html @@ -46,62 +46,62 @@ - + Nombre - + Apellido - + Apellido2 - + Fecha Nacimeinto - + Genero - + NIA - + Num Doc - + Correo - + Correo2 - + Nacionalidad - + Keywords - + Ciclo diff --git a/src/main/resources/templates/list/ciclos.html b/src/main/resources/templates/list/ciclos.html index aea97c3..03eecbc 100644 --- a/src/main/resources/templates/list/ciclos.html +++ b/src/main/resources/templates/list/ciclos.html @@ -39,17 +39,17 @@ - + Nombre - + Codigo - + Familia diff --git a/src/main/resources/templates/list/contactos.html b/src/main/resources/templates/list/contactos.html index 071e6de..052afe0 100644 --- a/src/main/resources/templates/list/contactos.html +++ b/src/main/resources/templates/list/contactos.html @@ -40,32 +40,32 @@ - + Nombre - + Apellido - + Apellido2 - + Correo - + Telefono - + Empresa diff --git a/src/main/resources/templates/list/empresas.html b/src/main/resources/templates/list/empresas.html index 1dcf763..321c210 100644 --- a/src/main/resources/templates/list/empresas.html +++ b/src/main/resources/templates/list/empresas.html @@ -43,32 +43,32 @@ - + Nombre - + Cif - + Correo - + Telefono - + Keywords - + Sector diff --git a/src/main/resources/templates/list/ofertas.html b/src/main/resources/templates/list/ofertas.html index cc109cc..bb9224e 100644 --- a/src/main/resources/templates/list/ofertas.html +++ b/src/main/resources/templates/list/ofertas.html @@ -42,27 +42,27 @@ - + Nombre - + Fecha - + Descripcion - + Sucursal - + Ciclo diff --git a/src/main/resources/templates/list/sucursales.html b/src/main/resources/templates/list/sucursales.html index 186f6d6..d84ce4c 100644 --- a/src/main/resources/templates/list/sucursales.html +++ b/src/main/resources/templates/list/sucursales.html @@ -39,27 +39,27 @@ - + Nombre - + Localidad - + Direccion - + Sede Central - + Empresa