diff --git a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java index 7f61027..635260d 100644 --- a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java +++ b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.PathVariable; 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.*; @@ -354,13 +353,23 @@ public class BuscadorController { model.addAttribute("currentSize", size); } - + /** + * This mehod is used to search for entities in the database + * it uses the query that is passed as a parameter to search for the entities + * the query comes from the searchbar in the frontend, the list + * @param querySearchBar the text in searchbar from the lsit a String + * @return a list of entities that match the query + */ @GetMapping("/empresas/search") - public ResponseEntity> searchEmpresas(@RequestParam String query, @RequestParam String secondaryQuery) { - List searchResult = empresaService.search(query); - + public ResponseEntity> searchEmpresas(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + if(secondaryOption.equalsIgnoreCase("Todo")){ + List empresas = empresaService.search(querySearchBar); + return ResponseEntity.ok(empresas); + }else{ + List searchResultCust = empresaService.searchCustom(querySearchBar,query,secondaryOption); + return ResponseEntity.ok(searchResultCust); + } - return ResponseEntity.ok(searchResult); } @GetMapping("/sectores/search") @@ -369,15 +378,27 @@ public class BuscadorController { return ResponseEntity.ok(sectors); } + @GetMapping("/contactos/search") - public ResponseEntity> searchContactos(@RequestParam String query) { - List contactos = contactosService.search(query); - return ResponseEntity.ok(contactos); + public ResponseEntity> searchContactos(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + if(secondaryOption.equalsIgnoreCase("Todo")){ + List contactos = contactosService.search(querySearchBar); + return ResponseEntity.ok(contactos); + }else{ + List searchResultCust = contactosService.searchCustom(querySearchBar,query,secondaryOption); + return ResponseEntity.ok(searchResultCust); + } } + @GetMapping("/sucursales/search") - public ResponseEntity> searchSucursales(@RequestParam String query) { - List sucursals = sucursalService.search(query); - return ResponseEntity.ok(sucursals); + public ResponseEntity> searchSucursales(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + if(secondaryOption.equalsIgnoreCase("Todo")){ + List sucursals = sucursalService.search(querySearchBar); + return ResponseEntity.ok(sucursals); + }else{ + List searchResultCust = sucursalService.searchCustom(querySearchBar,query,secondaryOption); + return ResponseEntity.ok(searchResultCust); + } } @GetMapping("/familias/search") @@ -387,18 +408,31 @@ public class BuscadorController { } @GetMapping("/ciclos/search") - public ResponseEntity> searchCiclos(@RequestParam String query) { - List ciclos = cicloService.search(query); - return ResponseEntity.ok(ciclos); + public ResponseEntity> searchCiclos(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + if(secondaryOption.equalsIgnoreCase("Todo")){ + List ciclos = cicloService.search(querySearchBar); + return ResponseEntity.ok(ciclos); + }else{ + List searchResultCust = cicloService.searchCustom(querySearchBar,query,secondaryOption); + return ResponseEntity.ok(searchResultCust); + } } + @GetMapping("/skills/search") public ResponseEntity> searchSkills(@RequestParam String query) { List ciclos = skillService.search(query); return ResponseEntity.ok(ciclos); } + @GetMapping("/alumnos/search") - public ResponseEntity> searchAlumnos(@RequestParam String query) { - List alumnos = alumnoService.search(query); + public ResponseEntity> searchAlumnos(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + List alumnos; + if(secondaryOption.equalsIgnoreCase("Todo")){ + alumnos = alumnoService.search(querySearchBar); + } else { + alumnos = alumnoService.searchCustom(querySearchBar,query, secondaryOption); + } + for (Alumno alumno : alumnos) { List skillsData = alumnoRepository.findSkillsByAlumnoId(alumno.getId()); Set skills = new HashSet<>(); @@ -415,8 +449,13 @@ public class BuscadorController { @GetMapping("/ofertas/search") - public ResponseEntity> searchOfertas(@RequestParam String query) { - List ofertas = ofertasService.search(query); + public ResponseEntity> searchOfertas(@RequestParam String querySearchBar, @RequestParam String query, @RequestParam String secondaryOption) { + List ofertas; + if(secondaryOption.equalsIgnoreCase("Todo")){ + ofertas = ofertasService.search(querySearchBar); + } else { + ofertas = ofertasService.searchCustom(querySearchBar,query, secondaryOption); + } for (Oferta oferta : ofertas) { List skillsData = ofertaRepository.findSkillsByOfertaId(oferta.getId()); Set skills = new HashSet<>(); diff --git a/src/main/java/com/example/proyectofinal/database b/src/main/java/com/example/proyectofinal/database index de49fc2..a9bab67 100644 --- a/src/main/java/com/example/proyectofinal/database +++ b/src/main/java/com/example/proyectofinal/database @@ -135,6 +135,7 @@ INSERT INTO Ofertas (nombre, descripcion, fecha, fk_sucursal,fk_ciclo) VALUES (' INSERT INTO Alumno_Skill (fk_alumno, fk_skills) VALUES (1, 1); -- Jorge with Java +INSERT INTO Alumno_Skill (fk_alumno, fk_skills) VALUES (2, 10); -- Jane with ... INSERT INTO Alumno_Skill (fk_alumno, fk_skills) VALUES (3, 2); -- Robert with Microsoft XL INSERT INTO Alumno_Skill (fk_alumno, fk_skills) VALUES (4, 14); -- Emily with Marketing INSERT INTO Alumno_Skill (fk_alumno, fk_skills) VALUES (5, 13); -- James with SQL 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 1518aa5..ee9cfef 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java @@ -11,6 +11,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public interface AlumnoRepository extends JpaRepository { @@ -68,8 +69,23 @@ public interface AlumnoRepository extends JpaRepository { @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); + @Query("SELECT a FROM Alumno a WHERE lower(a.nombre) LIKE %:query%") + ArrayList alumnosByNombreCust(@Param("query") String query); + + @Query("SELECT a FROM Alumno a WHERE lower(a.apellido) LIKE %:query%") + ArrayList alumnosByApellidoCust(@Param("query") String query); + + @Query("SELECT a FROM Alumno a WHERE lower(a.ciclo.nombre) LIKE %:query%") + ArrayList alumnosByCicloCust(@Param("query") String query); + + @Query("SELECT a FROM Alumno a WHERE lower(a.keywords) LIKE %:query%") + ArrayList alumnosByKeywordsCust(@Param("query") String query); + + @Query("SELECT a FROM Alumno a WHERE lower(a.nia) LIKE %:query%") + ArrayList alumnosByNiaCust(@Param("query") String query); + + @Query("SELECT a FROM Alumno a WHERE lower(a.dni) LIKE %:query%") + ArrayList alumnosByDniCust(@Param("query") String query); + } 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 c37acdd..1b01dd7 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java @@ -10,6 +10,7 @@ import org.springframework.data.repository.query.Param; import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public interface CicloRepository extends JpaRepository { @@ -34,4 +35,10 @@ public interface CicloRepository extends JpaRepository { @Query("SELECT c FROM Ciclo c WHERE LOWER(c.codigo) LIKE LOWER(CONCAT('%', :query, '%'))") Page findCicloByCodigos(@Param("query") String query, Pageable pageable); + + @Query("SELECT c FROM Ciclo c WHERE c.familia.nombre LIKE %?1%") + ArrayList cicloByFamCust(String query); + + @Query("SELECT c FROM Ciclo c WHERE c.codigo LIKE %?1%") + ArrayList cicloByCodCust(String query); } 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 8171b74..ec9c9be 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java @@ -10,6 +10,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public interface ContactoRepository extends JpaRepository { @@ -43,4 +44,11 @@ public interface ContactoRepository extends JpaRepository { @Query("SELECT c FROM Contacto c WHERE lower(c.empresa.nombre) IN :companyNames") Page findContactosByCompanyNames(@Param("companyNames") List companyNames, Pageable pageable); + + @Query("SELECT c FROM Contacto c WHERE c.nombre like %:query%") + ArrayList findContactosByNameCust(String query); + + @Query("SELECT c FROM Contacto c WHERE c.empresa.nombre LIKE %:query%") + ArrayList findContactosByEmpresaNameCust(String query); + } 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 dfe909a..e03ecd5 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java @@ -12,6 +12,7 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public interface EmpressaRepository extends JpaRepository, JpaSpecificationExecutor { @@ -37,7 +38,7 @@ public interface EmpressaRepository extends JpaRepository, JpaSpe @Query(value = "SELECT * FROM empresas u WHERE u.fk_sector = :sectorId", nativeQuery = true) Page empresaBySector(@Param("sectorId") Long sectorId, Pageable pageable); - // In EmpressaRepository.java + //TODO: IMPLEMENT LOWERCASE FOR ALL QUERIES @Query("SELECT e FROM Empresa e WHERE e.sector.nombre like :sectorName") Page findEmpresasBySectorName(@Param("sectorName") String sectorName, Pageable pageable); @@ -47,15 +48,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("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("SELECT e FROM Empresa e WHERE e.sector.nombre like :sectorName") + ArrayList findEmpresasBySectorNameCust(@Param("sectorName") String sectorName); + + @Query("SELECT e FROM Empresa e WHERE e.nombre LIKE %:query%") + ArrayList findEmpresasByEmpresaNameCust(String quer); + + @Query("SELECT e FROM Empresa e WHERE e.keywords LIKE %:query%") + ArrayList findEmpresasByKeywordsCust(String query); + // @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 f2f6978..2108667 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.Collection; import java.util.Date; import java.util.List; @@ -71,4 +72,22 @@ public interface OfertaRepository extends JpaRepository { @Query("SELECT o FROM Oferta o JOIN o.skills s WHERE lower(s.nombre) IN :queryList") Page findOfertaBySkills(@Param("queryList") String queryList, Pageable pageable); + + @Query("SELECT o FROM Oferta o WHERE o.nombre LIKE %:query%") + Collection ofertasByNombreCust(@Param("query") String query); + + @Query("SELECT o FROM Oferta o WHERE o.sucursal.empresa.nombre LIKE %:query%") + Collection ofertasByEmpresaCust(@Param("query") String query); + + @Query("SELECT o FROM Oferta o WHERE o.fecha < :query") + Collection ofertasByFechaAntesCust(@Param("query") Date query); + + @Query("SELECT o FROM Oferta o WHERE o.fecha > :query") + Collection ofertasByFechaDespuesCust(@Param("query") Date query); + + @Query(value = "SELECT o FROM Oferta o WHERE YEAR(o.fecha) = :query", nativeQuery = true) + Collection ofertasByAnoCust(@Param("query") int query); + + @Query("SELECT o FROM Oferta o JOIN o.skills s WHERE s.nombre LIKE %:query%") + Collection ofertasBySkillCust(@Param("query") String query); } 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 4a9f2fe..73f7d47 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java @@ -20,7 +20,7 @@ public interface SucursalRepository extends JpaRepository { @Query(value="Select * from sucursales where fk_empressa = ?1", nativeQuery = true) public List findByEmpresaId(Long id); - @Query("SELECT s FROM Sucursal s WHERE s.nombre LIKE %:query% OR s.localidad LIKE %:query% OR s.direccion LIKE %:query% OR CAST(s.id AS string) = :query") + @Query("SELECT s FROM Sucursal s WHERE s.nombre LIKE %:query% OR s.localidad LIKE %:query% OR s.direccion LIKE %:query% OR s.empresa.nombre LIKE %:query% OR CAST(s.sedeCentral AS string) = :query") List search(@Param("query") String query); @Query("SELECT s FROM Sucursal s WHERE s.nombre = :nombre") @@ -43,4 +43,13 @@ public interface SucursalRepository extends JpaRepository { @Query("SELECT s FROM Sucursal s WHERE s.localidad LIKE %:query%") Page findSucursalesByLocalidad(@Param("query") String query, Pageable pageable); + + @Query("SELECT s FROM Sucursal s WHERE lower(s.nombre) LIKE %:query%") + ArrayList sucursalByNameCust(@Param("query") String query); + + @Query("SELECT s FROM Sucursal s WHERE lower(s.empresa.nombre) LIKE %:query%") + ArrayList sucursalByEmpNameCust(String query); + + @Query("SELECT s FROM Sucursal s WHERE lower(s.localidad) like %:query%") + ArrayList sucursalByLoclCust(String query); } diff --git a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java index a601faa..9a2460a 100644 --- a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java +++ b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java @@ -1,6 +1,7 @@ package com.example.proyectofinal.servicios; import com.example.proyectofinal.models.empresas.Alumno; +import com.example.proyectofinal.models.empresas.Ciclo; import com.example.proyectofinal.repositories.empresas.AlumnoRepository; import com.example.proyectofinal.servicios.implemetations.IAlumno; import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service @@ -126,4 +128,39 @@ public class AlumnoService implements IAlumno{ return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); } + @Override + public List searchCustom(String querySearchBar, String queryPrime, String secondaryOption) { + String[] queryMultiWord = queryPrime.split(","); + queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new); + ArrayList listEmpPrime = new ArrayList<>(); + ArrayList listEmpSec = new ArrayList<>(); + 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")) { + System.out.println("TEST QUERY: " + query); + 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)); + } + } + } + listEmpSec = (ArrayList) alumnoRepository.search(querySearchBar); + listEmpPrime.retainAll(listEmpSec); + return listEmpPrime; + } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/CicloService.java b/src/main/java/com/example/proyectofinal/servicios/CicloService.java index 7e1281c..4bee434 100644 --- a/src/main/java/com/example/proyectofinal/servicios/CicloService.java +++ b/src/main/java/com/example/proyectofinal/servicios/CicloService.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service @@ -124,4 +125,24 @@ public class CicloService implements ICiclos { return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); } + @Override + public List searchCustom(String querySearchBar, String queryPrime, String secondaryOption) { + String[] queryMultiWord = queryPrime.split(","); + queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new); + ArrayList listEmpPrime = new ArrayList<>(); + ArrayList listEmpSec = new ArrayList<>(); + if (!querySearchBar.isEmpty()) { + 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)); + } + } + } + listEmpSec = (ArrayList) cicloRepository.search(querySearchBar); + listEmpPrime.retainAll(listEmpSec); + return listEmpPrime; + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java index 5e09040..6122365 100644 --- a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java @@ -12,6 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -126,4 +127,30 @@ public class ContactosService implements IContactos { 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 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 listContactoPrime = new ArrayList<>(); + ArrayList listContactoSec = new ArrayList<>(); + // Confirm if the search bar is empty + if (!querySearchBar.isEmpty()) { + 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)); + } + } + } + System.out.println("listContactoPrime: TEST" + listContactoPrime); + listContactoSec = (ArrayList) contactoRepository.search(querySearchBar); + System.out.println("listContactoSec: TEST" + listContactoSec); + listContactoPrime.retainAll(listContactoSec); + return listContactoPrime; + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java index d1591c9..f177c3e 100644 --- a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java @@ -129,10 +129,32 @@ public class EmpresaService implements IEmpresa { return new PageImpl<>(allMatches.subList(start, end), PageRequest.of(pageNum - 1, size), allMatches.size()); } - // @Override -// public List getEmpresasByQueryAndSecondaryOption(String query, String secondaryQuery) { -// return empresaRepository.findByQueryAndSecondaryOption(query, secondaryQuery); -// } - + @Override + public List 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 listEmpPrime = new ArrayList<>(); + ArrayList listEmpSec = new ArrayList<>(); + //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)); + } + } + } + listEmpSec = (ArrayList) empresaRepository.search(querySearchBar); + //Retain the common elements between the two lists + //In this case, the common elements are the companies that match the search bar and the query + listEmpPrime.retainAll(listEmpSec); + return listEmpPrime; + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java index 5dea6dd..be71d1b 100644 --- a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java @@ -1,5 +1,6 @@ package com.example.proyectofinal.servicios; +import com.example.proyectofinal.models.empresas.Ciclo; import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Skill; import com.example.proyectofinal.models.empresas.Sucursal; @@ -160,4 +161,27 @@ public class OfertaService implements IOferta { } } + @Override + public List searchCustom(String querySearchBar, String queryPrime, String secondaryOption) { + String[] queryMultiWord = queryPrime.split(","); + queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new); + ArrayList listEmpPrime = new ArrayList<>(); + ArrayList listEmpSec = new ArrayList<>(); + if (!querySearchBar.isEmpty()) { + for (String query : queryMultiWord) { + query = query.trim().toLowerCase(); + if (secondaryOption.equals("Nombre")) { + listEmpPrime.addAll(ofertaRepository.ofertasByNombreCust(query)); + } else if (secondaryOption.equals("Empresa")) { + listEmpPrime.addAll(ofertaRepository.ofertasByEmpresaCust(query)); + } else if (secondaryOption.equals("Skill")) { + listEmpPrime.addAll(ofertaRepository.ofertasBySkillCust(query)); + } + } + } + listEmpSec = (ArrayList) ofertaRepository.search(querySearchBar); + listEmpPrime.retainAll(listEmpSec); + return listEmpPrime; + } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java index c7668d2..5000f5f 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java @@ -12,6 +12,7 @@ import org.springframework.data.domain.*; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service public class SucursalService implements ISucursal { @@ -111,11 +112,31 @@ public class SucursalService implements ISucursal { 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()); } + + @Override + public List searchCustom(String querySearchBar, String queryPrime,String secondaryOption) { + String[] queryMultiWord = queryPrime.split(","); + queryMultiWord = Arrays.stream(queryMultiWord).map(String::trim).toArray(String[]::new); + ArrayList listEmpPrime = new ArrayList<>(); + ArrayList listEmpSec = new ArrayList<>(); + 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)); + } + } + } + listEmpSec = (ArrayList) sucursalRepository.search(querySearchBar); + listEmpPrime.retainAll(listEmpSec); + return listEmpPrime; + } } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java index baf77c5..47aa0a1 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java @@ -25,4 +25,5 @@ public interface IAlumno extends IPagination { Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + List searchCustom(String querySearchBar, String query, String secondaryOption); } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java index b286725..56281d7 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java @@ -27,5 +27,7 @@ public interface ICiclos extends IPagination { void deleteByFamiliaId(Long id); Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + + List searchCustom(String querySearchBar, String query, String secondaryOption); } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java index 0c8d1bd..dbe02ae 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java @@ -25,4 +25,6 @@ public interface IContactos extends IPagination { Contacto exists(Contacto contacto); Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + + List searchCustom(String querySearchBar, String query, String secondaryOption); } 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 5622ccf..62c2638 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java @@ -26,5 +26,7 @@ public interface IEmpresa extends IPagination { Page getPageMultiWord(int pageNum, int size, String sortField, String sortDir, List queryMultiWord, String secondaryOption); + List searchCustom(String querySearchBar, String query,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 76eba93..deeb878 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java @@ -26,4 +26,6 @@ public interface IOferta extends IPagination { void deleteByCicloId(Long id); Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption) throws ParseException; + + List searchCustom(String querySearchBar, String query, String secondaryOption); } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java index 0280582..e415401 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java @@ -25,4 +25,6 @@ public interface ISucursal extends IPagination { Sucursal exists(Sucursal sucursal); Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); + + List searchCustom(String querySearchBar, String query, String secondaryOption); } diff --git a/src/main/java/com/example/proyectofinal/temp b/src/main/java/com/example/proyectofinal/temp index fac3380..e4af756 100644 --- a/src/main/java/com/example/proyectofinal/temp +++ b/src/main/java/com/example/proyectofinal/temp @@ -1,51 +1,7 @@ - - - - - - - - - - - - Title - - - -

Listado de Sucursales

-
- - - - - - - - - - - - - - - - - - - - - -
IdNombreLocalidadDirecciónSedeCentralEmpressa
[[${sucursal.id}]][[${sucursal.nombre}]][[${sucursal.localidad}]][[${sucursal.direccion}]][[${sucursal.sedeCentral}]][[${sucursal.empresa.nombre}]]
-
- - - - - \ No newline at end of file +listEmpPrime: TEST[Empresa(id=4, nombre=Keytara, cif=123456789W4, correo=keytara@example.com, telefono=12345678904, + keywords=programador, sector=Sector(id=4, nombre=Musica)), + Empresa(id=9, nombre=FinTrack, cif=123456789W9, correo=fintrack@example.com, telefono=12345678909, + keywords=finance,investment, sector=Sector(id=4, nombre=Musica)), + Empresa(id=14, nombre=WealthTrack, cif=123456789W9, correo=wealthtrack@example.com, telefono=12345678909, + keywords=finance,investment, sector=Sector(id=4, nombre=Musica))] +listEmpSec: TEST[] \ No newline at end of file diff --git a/src/main/resources/templates/buscador_admin.html b/src/main/resources/templates/buscador_admin.html index 739fd15..069bc87 100644 --- a/src/main/resources/templates/buscador_admin.html +++ b/src/main/resources/templates/buscador_admin.html @@ -101,7 +101,7 @@ } // Log the value of the search bar to the console - console.log("Query: " + searchBar.value); + //console.log("Query: " + searchBar.value); }); document.getElementById('searchForm').addEventListener('submit', function() { var searchOption = document.getElementById('searchOption').value; @@ -178,8 +178,8 @@ options = []; } - console.log("Primary dropdown value: " + primaryDropdown.value); // Add this line - console.log("Options to add to secondary dropdown: " + options); // Add this line + //console.log("Primary dropdown value: " + primaryDropdown.value); // Add this line + //console.log("Options to add to secondary dropdown: " + options); // Add this line // Add the new options to the secondary dropdown for (var i = 0; i < options.length; i++) { @@ -261,7 +261,7 @@ } // Log the query to the console - console.log("Query SENT TEST: " + datePicker.value); + //console.log("Query SENT TEST: " + datePicker.value); // Update the value of the hidden input field document.getElementById('hiddenSecondaryOption').value = secondaryOption; diff --git a/src/main/resources/templates/list/alumnos.html b/src/main/resources/templates/list/alumnos.html index 6d2b300..7d369c1 100644 --- a/src/main/resources/templates/list/alumnos.html +++ b/src/main/resources/templates/list/alumnos.html @@ -154,7 +154,7 @@ - - - - - -