From 8cef213edf8f7674b9a8995d17dfa2797642b171 Mon Sep 17 00:00:00 2001 From: vicsash Date: Wed, 8 May 2024 20:43:50 +0200 Subject: [PATCH] Implementar busqueda de elemntos multiples como empresas de varios sectores. Ajustes a controlador,repositorio y servicio para implemetralo. --- .../controllers/BuscadorController.java | 151 +++++++++++++----- .../proyectofinal/interfaces/IPagination.java | 5 + .../empresas/AlumnoRepository.java | 11 ++ .../empresas/CicloRepository.java | 8 + .../empresas/ContactoRepository.java | 7 + .../empresas/EmpressaRepository.java | 16 +- .../empresas/OfertaRepository.java | 23 ++- .../empresas/SucursalRepository.java | 10 ++ .../servicios/AlumnoService.java | 50 ++++-- .../proyectofinal/servicios/CicloService.java | 42 +++-- .../servicios/ContactosService.java | 30 +++- .../servicios/EmpresaService.java | 55 +++++-- .../servicios/FamiliaService.java | 5 + .../servicios/OfertaService.java | 85 +++++++--- .../servicios/SectorService.java | 5 + .../proyectofinal/servicios/SkillService.java | 5 + .../servicios/SucursalService.java | 36 ++++- .../servicios/implemetations/IEmpresa.java | 2 + .../servicios/implemetations/IOferta.java | 3 +- .../resources/templates/buscador_admin.html | 70 ++++++-- .../resources/templates/list/sucursales.html | 2 +- 21 files changed, 490 insertions(+), 131 deletions(-) diff --git a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java index e59e0ac..7f61027 100644 --- a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java +++ b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpSession; +import java.text.ParseException; import java.util.*; @Controller @@ -54,22 +55,33 @@ public class BuscadorController { @GetMapping("/empresas/page/{pageNum}") public String searchEmpresasList(@PathVariable int pageNum, - @RequestParam(defaultValue = "") String query, - @RequestParam(defaultValue = "10") int size, - @RequestParam(defaultValue = "nombre") String sortField, - @RequestParam(defaultValue = "asc") String sortDir, - @RequestParam String secondaryOption, + @RequestParam(defaultValue = "") String query, + @RequestParam(defaultValue = "10") int size, + @RequestParam(defaultValue = "nombre") String sortField, + @RequestParam(defaultValue = "asc") String sortDir, + @RequestParam String secondaryOption, Model model){ - Page page = empresaService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + if(queryMultiWord.length>1){ + page = empresaService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = empresaService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } if(page!=null){ List empresas = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); model.addAttribute("empresas", empresas); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ -// System.out.println("No se encontraron empresas"); } return "/list/empresas"; } @@ -91,7 +103,6 @@ public class BuscadorController { } model.addAttribute("secondaryOption",secondaryOption); return "/list/sectores"; - } @GetMapping("/contactos/page/{pageNum}") @@ -100,18 +111,29 @@ public class BuscadorController { @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "nombre") String sortField, @RequestParam(defaultValue = "asc") String sortDir, - @RequestParam(defaultValue = "") String secondaryOption, + @RequestParam String secondaryOption, Model model) { - Page page = contactosService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + if(queryMultiWord.length>1){ + page = contactosService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = contactosService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } if(page!=null){ List contactos = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); model.addAttribute("contactos", contactos); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ - //System.out.println("No se encontraron Contactos"); } return "/list/contactos"; } @@ -122,18 +144,30 @@ public class BuscadorController { @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "nombre") String sortField, @RequestParam(defaultValue = "asc") String sortDir, - @RequestParam(defaultValue = "") String secondaryOption, - Model model){ - Page page = sucursalService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + @RequestParam String secondaryOption, + Model model) { + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + + if(queryMultiWord.length>1){ + page = sucursalService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = sucursalService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } if(page!=null){ - List sucursals = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); - model.addAttribute("sucursals",sucursals); + List sucursales = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); + model.addAttribute("sucursales", sucursales); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ -// System.out.println("No se encontraron sucursales"); } return "/list/sucursales"; } @@ -145,17 +179,30 @@ public class BuscadorController { @RequestParam(defaultValue = "nombre") String sortField, @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, - Model model){ - Page page = ofertasService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + Model model) throws ParseException { + System.out.println("Query: TEST " + query); + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + + if(queryMultiWord.length>1){ + page = ofertasService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = ofertasService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } if(page!=null){ List ofertas = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); model.addAttribute("ofertas", ofertas); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ -// System.out.println("No se encontraron ofertas"); } return "/list/ofertas"; } @@ -190,17 +237,30 @@ public class BuscadorController { @RequestParam(defaultValue = "nombre") String sortField, @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, - Model model) { - Page page =cicloService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + Model model) throws ParseException { + System.out.println("Query: TEST " + query); + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + + if(queryMultiWord.length>1){ + page = cicloService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = cicloService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } if(page!=null){ List ciclos = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); model.addAttribute("ciclos", ciclos); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ -// System.out.println("No se encontraron ofertas"); } return "/list/ciclos"; } @@ -214,17 +274,32 @@ public class BuscadorController { @RequestParam(defaultValue = "") String secondaryOption, Model model) { - Page page = alumnoService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + String[] queryMultiWord = query.split(","); + List queryList = new ArrayList<>(); + for (String queryForList : queryMultiWord) { + String trimmedQuery = queryForList.trim(); + if (!trimmedQuery.isEmpty()) { + queryList.add(trimmedQuery); + } + } + List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + Page page = null; + + if(queryMultiWord.length>1){ + page = alumnoService.getPageMultiWord(pageNum, size, sortField, sortDir, queryList, secondaryOption); + }else{ + page = alumnoService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); + } + if(page!=null){ List alumnos = page.getContent(); - addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, itemsPage, size); model.addAttribute("alumnos", alumnos); model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - }else{ -// System.out.println("No se encontraron alumnos"); } + return "/list/alumnos"; } @@ -268,7 +343,7 @@ public class BuscadorController { return attributes; } - public void addPaginationAttributes(Model model, int pageNum, Page page, String sortField, String sortDir, String query, List itemsPage, int size) { + public void addPaginationAttributes(Model model, int pageNum, Page page, String sortField, String sortDir, List itemsPage, int size) { model.addAttribute("currentPage", pageNum); model.addAttribute("totalPages", page.getTotalPages()); model.addAttribute("totalItems", page.getTotalElements()); diff --git a/src/main/java/com/example/proyectofinal/interfaces/IPagination.java b/src/main/java/com/example/proyectofinal/interfaces/IPagination.java index 0ade10b..8ed0f6f 100644 --- a/src/main/java/com/example/proyectofinal/interfaces/IPagination.java +++ b/src/main/java/com/example/proyectofinal/interfaces/IPagination.java @@ -1,9 +1,14 @@ package com.example.proyectofinal.interfaces; +import com.example.proyectofinal.models.empresas.Contacto; import org.springframework.data.domain.Page; +import java.util.List; + public interface IPagination { Page findAllPaginated(int pageNum, int size, String sortField, String sortDir); + Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption); + } diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java index 91c9e1c..1518aa5 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java @@ -4,9 +4,11 @@ import com.example.proyectofinal.models.empresas.Alumno; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.ArrayList; import java.util.List; @@ -57,6 +59,15 @@ public interface AlumnoRepository extends JpaRepository { @Query("SELECT a FROM Alumno a WHERE a.ciclo.nombre like ?1") Page findAlumnoByCiclo(String query, PageRequest of); + @Query("SELECT a FROM Alumno a WHERE lower(a.ciclo.nombre) IN :ciclos") + Page findAlumnoByNombres(@Param("ciclos") String ciclos, Pageable pageable); + + @Query("SELECT a FROM Alumno a WHERE lower(a.apellido) IN :queryList or lower(a.apellido2) IN :queryList") + Page findAlumnoByApellidos(@Param("queryList") String queryList, PageRequest of); + + @Query("SELECT a FROM Alumno a WHERE lower(a.ciclo.nombre) IN :ciclos") + Page findAlumnoByCiclos(@Param("ciclos") String ciclos, Pageable pageable); + // @Query(value = "SELECT * FROM alumnos u WHERE MATCH(u.nombre, u.keywords, " + // "u.apellido, u.apellido2, u.correo, u.correo2, u.nacionalidad, u.genero, u.dni, u.nia ) AGAINST(?1 IN BOOLEAN MODE)", nativeQuery = true) // public ArrayList getAlumnoByKeywordsOrName(String keyword1); diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java index 584188d..c37acdd 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java @@ -3,8 +3,10 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Ciclo; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.lang.reflect.Array; import java.util.ArrayList; @@ -26,4 +28,10 @@ public interface CicloRepository extends JpaRepository { @Query("SELECT c FROM Ciclo c WHERE c.codigo LIKE %?1%") Page findCicloByCodigo(String query, PageRequest of); + + @Query("SELECT c FROM Ciclo c WHERE LOWER(c.familia.nombre) LIKE LOWER(CONCAT('%', :query, '%'))") + Page findCicloByFamilias(@Param("query") String query, Pageable pageable); + + @Query("SELECT c FROM Ciclo c WHERE LOWER(c.codigo) LIKE LOWER(CONCAT('%', :query, '%'))") + Page findCicloByCodigos(@Param("query") String query, Pageable pageable); } diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java index 29e8d56..8171b74 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Contacto; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -36,4 +37,10 @@ public interface ContactoRepository extends JpaRepository { @Query("SELECT c FROM Contacto c WHERE c.empresa.nombre LIKE %:query%") Page findContactoByEmpresa(String query, PageRequest of); + + @Query("SELECT c FROM Contacto c WHERE lower(c.nombre) IN :names") + Page findContactosByNames(@Param("names") List names, Pageable pageable); + + @Query("SELECT c FROM Contacto c WHERE lower(c.empresa.nombre) IN :companyNames") + Page findContactosByCompanyNames(@Param("companyNames") List companyNames, Pageable pageable); } diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java index 70aae6f..dfe909a 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java @@ -38,7 +38,7 @@ public interface EmpressaRepository extends JpaRepository, JpaSpe Page empresaBySector(@Param("sectorId") Long sectorId, Pageable pageable); // In EmpressaRepository.java - @Query("SELECT e FROM Empresa e WHERE e.sector.nombre = :sectorName") + @Query("SELECT e FROM Empresa e WHERE e.sector.nombre like :sectorName") Page findEmpresasBySectorName(@Param("sectorName") String sectorName, Pageable pageable); @Query("SELECT e FROM Empresa e WHERE e.nombre LIKE %:query%") @@ -47,8 +47,18 @@ public interface EmpressaRepository extends JpaRepository, JpaSpe @Query("SELECT e FROM Empresa e WHERE e.keywords LIKE %:query%") Page findEmpresasByKeywords(String query, PageRequest of); -// @Query() -// List findByQueryAndSecondaryOption(String query, String secondaryQuery); + @Query("SELECT e FROM Empresa e WHERE lower(e.sector.nombre) IN :sectors") + Page findEmpresasBySectorNames(@Param("sectors") List sectors, Pageable pageable); + + @Query("SELECT e FROM Empresa e WHERE lower(e.nombre) IN :queryList") + Page findEmpresasByEmpresaNames(List queryList, PageRequest of); + + @Query("SELECT e FROM Empresa e WHERE lower(e.keywords) LIKE lower(concat('%', :query, '%'))") + Page findEmpresasByMultKeywords(@Param("query") String query, Pageable pageable); + + + // @Query() + // List findByQueryAndSecondaryOption(String query, String secondaryQuery); } diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java index 6d4b3fe..f2f6978 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java @@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.Date; import java.util.List; public interface OfertaRepository extends JpaRepository { @@ -50,10 +51,24 @@ public interface OfertaRepository extends JpaRepository { @Query("SELECT o FROM Oferta o WHERE o.nombre LIKE %:query%") Page findOfertaByNombre(String query, PageRequest of); - @Query("SELECT o FROM Oferta o WHERE o.fecha LIKE %:query%") - Page findOfertaByFecha(String query, PageRequest of); + @Query("SELECT o FROM Oferta o WHERE o.fecha < :query") + Page findOfertaByFechaAntes(Date query, PageRequest of); - @Query("SELECT o FROM Oferta o WHERE o.sucursal.nombre LIKE %:query%") - Page findOfertaByEmpresa(String query, PageRequest of); + @Query("SELECT o FROM Oferta o WHERE o.fecha > :query") + Page findOfertaByFechaDespues(Date query, PageRequest of); + @Query("SELECT o FROM Oferta o WHERE o.sucursal.empresa.nombre LIKE %:query%") + Page findOfertaByEmpresa(@Param("query") String query, Pageable pageable); + + @Query(value = "SELECT * FROM ofertas o WHERE YEAR(o.fecha) = YEAR(:dateQuery)", nativeQuery = true) + Page findOfertaByFechaAnyo(@Param("dateQuery") Date dateQuery, Pageable pageable); + + @Query("SELECT o FROM Oferta o WHERE lower(o.nombre) IN :queryList") + Page findOfertasByNombres(@Param("queryList") String queryList, Pageable pageable); + + @Query("SELECT o FROM Oferta o WHERE lower(o.sucursal.empresa.nombre) IN :queryList") + Page findOfertaByEmpresas(@Param("queryList") String queryList, Pageable pageable); + + @Query("SELECT o FROM Oferta o JOIN o.skills s WHERE lower(s.nombre) IN :queryList") + Page findOfertaBySkills(@Param("queryList") String queryList, Pageable pageable); } diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java index cf3f9cc..4a9f2fe 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Sucursal; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -33,4 +34,13 @@ public interface SucursalRepository extends JpaRepository { @Query("SELECT s FROM Sucursal s WHERE s.localidad LIKE %:query%") Page findSucursalByLocalidad(String query, PageRequest of); + + @Query("SELECT s FROM Sucursal s WHERE s.nombre LIKE %:query%") + Page findSucursalesByNombre(@Param("query") String query, Pageable pageable); + + @Query("SELECT s FROM Sucursal s WHERE s.empresa.nombre LIKE %:query%") + Page findSucursalesByEmpresa(@Param("query") String query, Pageable pageable); + + @Query("SELECT s FROM Sucursal s WHERE s.localidad LIKE %:query%") + Page findSucursalesByLocalidad(@Param("query") String query, Pageable pageable); } diff --git a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java index 8ca495a..a601faa 100644 --- a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java +++ b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java @@ -4,13 +4,11 @@ import com.example.proyectofinal.models.empresas.Alumno; import com.example.proyectofinal.repositories.empresas.AlumnoRepository; import com.example.proyectofinal.servicios.implemetations.IAlumno; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; @Service @@ -18,7 +16,6 @@ public class AlumnoService implements IAlumno{ @Autowired private AlumnoRepository alumnoRepository; - @Override public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) { if(secondaryOption.equalsIgnoreCase("Todo")){ @@ -45,14 +42,8 @@ public class AlumnoService implements IAlumno{ return alumnoRepository.findAll(); } - @Override - public Page findAllPaginated(int pageNum, int pageSize, String sortField, String sortDir) { - Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) - ? Sort.by(sortField).ascending() : - Sort.by(sortField).descending(); - Pageable pageable = PageRequest.of(pageNum - 1,pageSize,sort); - return this.alumnoRepository.findAll(pageable); - } + + @Override public Alumno findById(Long id) { return alumnoRepository.findById(id).orElse(null); @@ -100,6 +91,39 @@ public class AlumnoService implements IAlumno{ } } + @Override + public Page findAllPaginated(int pageNum, int pageSize, String sortField, String sortDir) { + Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) + ? Sort.by(sortField).ascending() : + Sort.by(sortField).descending(); + Pageable pageable = PageRequest.of(pageNum - 1,pageSize,sort); + return this.alumnoRepository.findAll(pageable); + } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + List allMatches = new ArrayList<>(); + for (String query : queryList) { + query = query.trim().toLowerCase(); + Page page; + if (secondaryOption.equals("Nombre")) { + page = alumnoRepository.findAlumnoByNombres(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Apellido")) { + page = alumnoRepository.findAlumnoByApellidos(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Ciclo")) { + page = alumnoRepository.findAlumnoByCiclos(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Keywords")) { + page = alumnoRepository.findAlumnoByKeywords(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()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/CicloService.java b/src/main/java/com/example/proyectofinal/servicios/CicloService.java index d0b753d..7e1281c 100644 --- a/src/main/java/com/example/proyectofinal/servicios/CicloService.java +++ b/src/main/java/com/example/proyectofinal/servicios/CicloService.java @@ -5,13 +5,11 @@ import com.example.proyectofinal.models.empresas.Familia; import com.example.proyectofinal.repositories.empresas.CicloRepository; import com.example.proyectofinal.servicios.implemetations.ICiclos; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; @Service @@ -23,14 +21,7 @@ public class CicloService implements ICiclos { @Autowired private OfertaService ofertaService; - @Override - public Page findAllPaginated(int pageNum, int pageSize, String sortField, String sortDir) { - Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) - ? Sort.by(sortField).ascending() : - Sort.by(sortField).descending(); - Pageable pageable = PageRequest.of(pageNum - 1,pageSize,sort); - return this.cicloRepository.findAll(pageable); - } + @Override public List findAll() { @@ -104,6 +95,33 @@ public class CicloService implements ICiclos { return null; } } + @Override + public Page findAllPaginated(int pageNum, int pageSize, String sortField, String sortDir) { + Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) + ? Sort.by(sortField).ascending() : + Sort.by(sortField).descending(); + Pageable pageable = PageRequest.of(pageNum - 1,pageSize,sort); + return this.cicloRepository.findAll(pageable); + } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + List allMatches = new ArrayList<>(); + for (String query : queryList) { + query = query.trim().toLowerCase(); + Page page; + if (secondaryOption.equals("Familia")) { + page = cicloRepository.findCicloByFamilias(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Codigo")) { + page = cicloRepository.findCicloByCodigos(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()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java index db7e77d..5e09040 100644 --- a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java @@ -5,14 +5,14 @@ import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.repositories.empresas.EmpressaRepository; import com.example.proyectofinal.servicios.implemetations.IContactos; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; import org.springframework.stereotype.Service; import com.example.proyectofinal.repositories.empresas.ContactoRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Collections; import java.util.List; @Service @@ -34,6 +34,8 @@ public class ContactosService implements IContactos { return this.contactoRepository.findAll(pageRequest); } + + @Override public Contacto findById(Long id) { return contactoRepository.findById(id).orElse(null); @@ -105,5 +107,23 @@ public class ContactosService implements IContactos { } } - + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + List allMatches = new ArrayList<>(); + for (String query : queryList) { + query = query.trim().toLowerCase(); + Page page; + if (secondaryOption.equals("Nombre")) { + page = contactoRepository.findContactosByNames(Collections.singletonList(query), PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Empresa")) { + page = contactoRepository.findContactosByCompanyNames(Collections.singletonList(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()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java index b242aae..d1591c9 100644 --- a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java @@ -5,6 +5,7 @@ import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.repositories.empresas.EmpressaRepository; import com.example.proyectofinal.repositories.empresas.OfertaRepository; import com.example.proyectofinal.servicios.implemetations.IEmpresa; +import org.springframework.data.domain.PageImpl; import org.springframework.transaction.annotation.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -12,11 +13,12 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service public class EmpresaService implements IEmpresa { - @Autowired private EmpressaRepository empresaRepository; @Autowired @@ -28,20 +30,6 @@ public class EmpresaService implements IEmpresa { @Autowired private OfertaRepository ofertaRepository; - @Override - public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) { - 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())); - } else if(secondaryOption.equals("Nombre")) { - return empresaRepository.findEmpresasByEmpresaName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - }else if(secondaryOption.equals("Keywords")) { - return empresaRepository.findEmpresasByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - } else { - return null; - } - } @@ -103,6 +91,43 @@ public class EmpresaService implements IEmpresa { public List findBySector(Long id) { return empresaRepository.findBySector(id); } + @Override + public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) { + 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())); + } else if(secondaryOption.equals("Nombre")) { + return empresaRepository.findEmpresasByEmpresaName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Keywords")) { + return empresaRepository.findEmpresasByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir,List queryMultiWord, String secondaryOption) { + List allMatches = new ArrayList<>(); + for (String query : queryMultiWord) { + query = query.trim().toLowerCase(); + Page page; + if (secondaryOption.equals("Nombre")) { + page = empresaRepository.findEmpresasByEmpresaName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Sector")) { + page = empresaRepository.findEmpresasBySectorName(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("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()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } // @Override // public List getEmpresasByQueryAndSecondaryOption(String query, String secondaryQuery) { diff --git a/src/main/java/com/example/proyectofinal/servicios/FamiliaService.java b/src/main/java/com/example/proyectofinal/servicios/FamiliaService.java index 40cf1dc..f1f20c5 100644 --- a/src/main/java/com/example/proyectofinal/servicios/FamiliaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/FamiliaService.java @@ -36,6 +36,11 @@ public class FamiliaService implements IFamilia { return result; } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + return null; + } + @Override public Familia findById(Long id) { return familiaRepository.findById(id).orElse(null); diff --git a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java index 77d9a35..5dea6dd 100644 --- a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java @@ -7,16 +7,13 @@ import com.example.proyectofinal.repositories.empresas.OfertaRepository; import com.example.proyectofinal.servicios.implemetations.IOferta; import jakarta.persistence.EntityManager; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; @Service public class OfertaService implements IOferta { @@ -26,22 +23,7 @@ public class OfertaService implements IOferta { @Autowired private OfertaRepository ofertaRepository; - @Override - public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) { - 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())); - } else if(secondaryOption.equals("Nombre")) { - return ofertaRepository.findOfertaByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - }else if(secondaryOption.equals("Fecha")) { - return ofertaRepository.findOfertaByFecha(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - }else if(secondaryOption.equals("Empresa")) { - return ofertaRepository.findOfertaByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); - } else { - return null; - } - } + @Override public List findAll() { @@ -72,6 +54,7 @@ public class OfertaService implements IOferta { return page; } + @Override public Oferta findById(Long id) { return ofertaRepository.findById(id).orElse(null); @@ -119,6 +102,62 @@ public class OfertaService implements IOferta { } } } + @Override + public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) throws ParseException { + Date dateQuery = null; + if(isDate(query)){ + dateQuery = new SimpleDateFormat("yyyy-MM-dd").parse(query); + System.out.println("Date query TEST: " + dateQuery); + } + 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())); + } else if(secondaryOption.equals("Nombre")) { + return ofertaRepository.findOfertaByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Fecha antes")) { + return ofertaRepository.findOfertaByFechaAntes(dateQuery, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Fecha despues")) { + return ofertaRepository.findOfertaByFechaDespues(dateQuery, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Año")) { + return ofertaRepository.findOfertaByFechaAnyo(dateQuery, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Empresa")) { + return ofertaRepository.findOfertaByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryMultiWord, String secondaryOption) { + List allMatches = new ArrayList<>(); + for (String query : queryMultiWord) { + query = query.trim().toLowerCase(); + Page page; + if (secondaryOption.equals("Nombre")) { + page = ofertaRepository.findOfertasByNombres(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Empresa")) { + page = ofertaRepository.findOfertaByEmpresas(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Skill")) { + page = ofertaRepository.findOfertaBySkills(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()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } + public boolean isDate(String query) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // Adjust this to match the date format of your query + try { + Date date = formatter.parse(query); + return true; // The query is a date + } catch (ParseException e) { + return false; // The query is not a date + } + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/SectorService.java b/src/main/java/com/example/proyectofinal/servicios/SectorService.java index f0bba12..99b78d4 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SectorService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SectorService.java @@ -46,6 +46,11 @@ public class SectorService implements ISector { return this.sectorRepository.findAll(pageable); } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + return null; + } + @Override public Sector findById(Long id) { return sectorRepository.findById(id).orElse(null); diff --git a/src/main/java/com/example/proyectofinal/servicios/SkillService.java b/src/main/java/com/example/proyectofinal/servicios/SkillService.java index 27b0485..7bc62ff 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SkillService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SkillService.java @@ -35,6 +35,11 @@ public class SkillService implements ISkill { return this.skillRepository.findAll(pageable); } + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + return null; + } + @Override public Skill findById(Long id) { return skillRepository.findById(id).orElse(null); diff --git a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java index 4fda1f5..c7668d2 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java @@ -8,12 +8,10 @@ import com.example.proyectofinal.repositories.empresas.SkillRepository; import com.example.proyectofinal.repositories.empresas.SucursalRepository; import com.example.proyectofinal.servicios.implemetations.ISucursal; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service public class SucursalService implements ISucursal { @@ -40,6 +38,8 @@ public class SucursalService implements ISucursal { return this.sucursalRepository.findAll(pageable); } + + @Override public Sucursal findById(Long id) { return sucursalRepository.findById(id).orElse(null); @@ -84,7 +84,7 @@ public class SucursalService implements ISucursal { public Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) { if(secondaryOption.equalsIgnoreCase("Todo")){ return findAllPaginated(pageNum, size, sortField, sortDir); - }else if (secondaryOption.equals("Empressa")) { + }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())); @@ -94,6 +94,28 @@ public class SucursalService implements ISucursal { return null; } } - - + @Override + public Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryList, String secondaryOption) { + List allMatches = new ArrayList<>(); + 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())); + allMatches.addAll(page.getContent()); + } else if (secondaryOption.equals("Localidad")) { + page = sucursalRepository.findSucursalesByLocalidad(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + allMatches.addAll(page.getContent()); + } + } + // Convert the list of all matches to a page + System.out.println("TEST TEST TEST size"+allMatches.size()); + System.out.println("TEST TEST TEST " + allMatches); + int start = (int) PageRequest.of(pageNum - 1, size).getOffset(); + int end = Math.min((start + PageRequest.of(pageNum - 1, size).getPageSize()), allMatches.size()); + return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java index 8ab58bf..5622ccf 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java @@ -24,5 +24,7 @@ public interface IEmpresa extends IPagination { Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryMultiWord, String secondaryOption); + // List getEmpresasByQueryAndSecondaryOption(String query, String secondaryQuery); } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java index ae2aa74..76eba93 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java @@ -5,6 +5,7 @@ import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Sucursal; import org.springframework.data.domain.Page; +import java.text.ParseException; import java.util.List; public interface IOferta extends IPagination { @@ -24,5 +25,5 @@ public interface IOferta extends IPagination { void deleteByCicloId(Long id); - Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) throws ParseException; } diff --git a/src/main/resources/templates/buscador_admin.html b/src/main/resources/templates/buscador_admin.html index a43d403..739fd15 100644 --- a/src/main/resources/templates/buscador_admin.html +++ b/src/main/resources/templates/buscador_admin.html @@ -47,6 +47,9 @@ justify-content: space-between; width: 100%; } + #date{ + margin-top: 15px; + } @@ -56,7 +59,7 @@
-
+
@@ -77,26 +80,63 @@
+
+ +