diff --git a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java index a76f79c..e59e0ac 100644 --- a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java +++ b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java @@ -15,6 +15,7 @@ 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.util.*; @Controller @@ -58,35 +59,18 @@ public class BuscadorController { @RequestParam(defaultValue = "nombre") String sortField, @RequestParam(defaultValue = "asc") String sortDir, @RequestParam String secondaryOption, - Model model){ - System.out.println("Selected option TEST: " + secondaryOption); + Model model){ Page page = empresaService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); if(page!=null){ List empresas = page.getContent(); - model.addAttribute("currentPage", pageNum); - model.addAttribute("totalPages", page.getTotalPages()); - model.addAttribute("totalItems", page.getTotalElements()); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); model.addAttribute("empresas", empresas); - - model.addAttribute("sortField", sortField); - model.addAttribute("sortDir", sortDir); - model.addAttribute("reverseSortDir", sortDir.equals("asc") ? "desc" : "asc"); - model.addAttribute("query", query); model.addAttribute("secondaryOption", secondaryOption); - - model.addAttribute("itemsPage", itemsPage); - model.addAttribute("currentSize", size); - }else{ - System.out.println("No se encontraron empresas"); +// System.out.println("No se encontraron empresas"); } - -// List models = model.asMap().values().stream().toList(); -// for(Object m : models){ -// System.out.println(m); -// } return "/list/empresas"; } @@ -101,15 +85,11 @@ public class BuscadorController { String[] word = query.split("\\b(y|o)\\b|[,/]"); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); Map attributes = new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - + attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, sectorService, itemsPage); for (Map.Entry entry : attributes.entrySet()) { model.addAttribute(entry.getKey(), entry.getValue()); } + model.addAttribute("secondaryOption",secondaryOption); return "/list/sectores"; } @@ -122,17 +102,16 @@ public class BuscadorController { @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, Model model) { - String[] word = query.split("\\b(y|o)\\b|[,/]"); + Page page = contactosService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); - Map attributes =new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - - for (Map.Entry entry : attributes.entrySet()) { - model.addAttribute(entry.getKey(), entry.getValue()); + if(page!=null){ + List contactos = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, 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"; } @@ -145,16 +124,16 @@ public class BuscadorController { @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, Model model){ - String[] word = query.split("\\b(y|o)\\b|[,/]"); + Page page = sucursalService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); - Map attributes = new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - for (Map.Entry entry : attributes.entrySet()) { - model.addAttribute(entry.getKey(), entry.getValue()); + if(page!=null){ + List sucursals = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, itemsPage, size); + model.addAttribute("sucursals",sucursals); + model.addAttribute("query", query); + model.addAttribute("secondaryOption", secondaryOption); + }else{ +// System.out.println("No se encontraron sucursales"); } return "/list/sucursales"; } @@ -167,16 +146,16 @@ public class BuscadorController { @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, Model model){ - String[] word = query.split("\\b(y|o)\\b|[,/]"); + Page page = ofertasService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); - Map attributes = new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - for (Map.Entry entry : attributes.entrySet()) { - model.addAttribute(entry.getKey(), entry.getValue()); + if(page!=null){ + List ofertas = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, 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"; } @@ -195,11 +174,12 @@ public class BuscadorController { if (secondaryOption.equalsIgnoreCase("Todo")) { sortField = "nombre"; sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); + attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, familiaService, itemsPage); } for (Map.Entry entry : attributes.entrySet()) { model.addAttribute(entry.getKey(), entry.getValue()); } + model.addAttribute("secondaryOption",secondaryOption); return "/list/familias"; } @@ -211,16 +191,16 @@ public class BuscadorController { @RequestParam(defaultValue = "asc") String sortDir, @RequestParam(defaultValue = "") String secondaryOption, Model model) { - String[] word = query.split("\\b(y|o)\\b|[,/]"); + Page page =cicloService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); - Map attributes = new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - for (Map.Entry entry : attributes.entrySet()) { - model.addAttribute(entry.getKey(), entry.getValue()); + if(page!=null){ + List ciclos = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, 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"; } @@ -234,16 +214,16 @@ public class BuscadorController { @RequestParam(defaultValue = "") String secondaryOption, Model model) { - String[] word = query.split("\\b(y|o)\\b|[,/]"); + Page page = alumnoService.getPage(pageNum, size, sortField, sortDir, query, secondaryOption); List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); - Map attributes = new HashMap<>(); - if (secondaryOption.equalsIgnoreCase("Todo")) { - sortField = "nombre"; - sortDir = "asc"; - attributes = getPaginatedAttributes(pageNum, query, size, sortField, sortDir, alumnoService, itemsPage); - } - for (Map.Entry entry : attributes.entrySet()) { - model.addAttribute(entry.getKey(), entry.getValue()); + if(page!=null){ + List alumnos = page.getContent(); + addPaginationAttributes(model, pageNum, page, sortField, sortDir, query, 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,6 +248,7 @@ public class BuscadorController { for (Map.Entry entry : attributes.entrySet()) { model.addAttribute(entry.getKey(), entry.getValue()); } + model.addAttribute("secondaryOption",secondaryOption); return "/list/skills"; } public Map getPaginatedAttributes(int pageNum, String query, int size, String sortField, String sortDir, IPagination service, List itemsPage) { @@ -287,11 +268,24 @@ public class BuscadorController { return attributes; } + public void addPaginationAttributes(Model model, int pageNum, Page page, String sortField, String sortDir, String query, List itemsPage, int size) { + model.addAttribute("currentPage", pageNum); + model.addAttribute("totalPages", page.getTotalPages()); + model.addAttribute("totalItems", page.getTotalElements()); + model.addAttribute("sortField", sortField); + model.addAttribute("sortDir", sortDir); + model.addAttribute("reverseSortDir", sortDir.equals("asc") ? "desc" : "asc"); + model.addAttribute("itemsPage", itemsPage); + model.addAttribute("currentSize", size); + } + @GetMapping("/empresas/search") - public ResponseEntity> searchEmpresas(@RequestParam String query) { - List empresas = empresaService.search(query); - return ResponseEntity.ok(empresas); + public ResponseEntity> searchEmpresas(@RequestParam String query, @RequestParam String secondaryQuery) { + List searchResult = empresaService.search(query); + + + return ResponseEntity.ok(searchResult); } @GetMapping("/sectores/search") diff --git a/src/main/java/com/example/proyectofinal/controllers/EditController.java b/src/main/java/com/example/proyectofinal/controllers/EditController.java deleted file mode 100644 index 319a85d..0000000 --- a/src/main/java/com/example/proyectofinal/controllers/EditController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.proyectofinal.controllers; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("/editMain") -public class EditController { - - @GetMapping - public String editMain(){ - return "admin/editMain"; - } - - @GetMapping("/{text}") - public String editMain(@PathVariable String text, Model model){ - model.addAttribute("text", text); - return "admin/editMenu/edit_menu"; - } - - @GetMapping("/{text}/{action}") - public String operationSwitch(@PathVariable String text, @PathVariable String action, Model model){ - model.addAttribute("text", text); - switch(action) { - case "crear": - if(text.equalsIgnoreCase("familia")){ - return "admin/editMenu/familia/familia_crear"; - } - break; - case "editar": - System.out.println("editar "+text); - break; - case "borrar": - System.out.println("borrar "+ text); - break; - } - return "admin/editMenu/edit_menu"; - } - -} diff --git a/src/main/java/com/example/proyectofinal/interfaces/IPaginationStrategy.java b/src/main/java/com/example/proyectofinal/interfaces/IPaginationStrategy.java deleted file mode 100644 index b088e9b..0000000 --- a/src/main/java/com/example/proyectofinal/interfaces/IPaginationStrategy.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.proyectofinal.interfaces; - -import org.springframework.data.domain.Page; - -public interface IPaginationStrategy { - - Page getPage(int pageNum, int size, String sortField, String sortDir, String query, IPagination service); -} diff --git a/src/main/java/com/example/proyectofinal/interfaces/specific/IEmpresaSpecificPagination.java b/src/main/java/com/example/proyectofinal/interfaces/specific/IEmpresaSpecificPagination.java deleted file mode 100644 index a0bfbd9..0000000 --- a/src/main/java/com/example/proyectofinal/interfaces/specific/IEmpresaSpecificPagination.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.proyectofinal.interfaces.specific; - -import com.example.proyectofinal.interfaces.IPagination; -import com.example.proyectofinal.models.empresas.Empresa; -import org.springframework.data.domain.Page; - -import java.util.List; - -public interface IEmpresaSpecificPagination extends IPagination { - - Page findEmpresasBySectorPaginated(Long sectorId, int pageNum, int size, String sortField, String sortDir); - -} 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 3368b54..91c9e1c 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java @@ -2,6 +2,8 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Alumno; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -37,7 +39,26 @@ public interface AlumnoRepository extends JpaRepository { @Query("SELECT a FROM Alumno a WHERE a.nia = ?1") Alumno findByNia(String nia); + @Query("SELECT a FROM Alumno a WHERE a.apellido like ?1 or a.apellido2 like ?1") + Page findAlumnoByApellido(String query, PageRequest of); + + @Query("SELECT a FROM Alumno a WHERE a.nombre like ?1") + Page findAlumnoByNombre(String query, PageRequest of); + + @Query(value = "SELECT * FROM alumnos a WHERE FIND_IN_SET(?1, a.keywords)", nativeQuery = true) + Page findAlumnoByKeywords(String query, PageRequest of); + + @Query("SELECT a FROM Alumno a WHERE a.nia like ?1") + Page findAlumnoByNia(String query, PageRequest of); + + @Query("SELECT a FROM Alumno a WHERE a.dni like ?1") + Page findAlumnoByDni(String query, PageRequest of); + + @Query("SELECT a FROM Alumno a WHERE a.ciclo.nombre like ?1") + Page findAlumnoByCiclo(String query, PageRequest of); + // @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 ae2df96..584188d 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/CicloRepository.java @@ -1,6 +1,8 @@ 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.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -18,4 +20,10 @@ public interface CicloRepository extends JpaRepository { @Query("SELECT c FROM Ciclo c WHERE c.nombre LIKE %?1% or c.familia.nombre LIKE %?1% or c.codigo LIKE %?1%") List search(String query); + + @Query("SELECT c FROM Ciclo c WHERE c.familia.nombre LIKE %?1%") + Page findCicloByFamilia(String query, PageRequest of); + + @Query("SELECT c FROM Ciclo c WHERE c.codigo LIKE %?1%") + Page findCicloByCodigo(String query, PageRequest of); } 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 8365960..29e8d56 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java @@ -1,6 +1,8 @@ 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.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -13,9 +15,6 @@ public interface ContactoRepository extends JpaRepository { @Query("SELECT c FROM Contacto c WHERE c.empresa.id = ?1") ArrayList findBySector(Long id); -// @Query(value = "SELECT * FROM contactos u WHERE MATCH(u.nombre, u.apellido,u.apellido2, u.correo, u.telefono) AGAINST(?1 IN BOOLEAN MODE)", nativeQuery = true) -// public ArrayList getContactoFullTextSeach(String keyword1); - @Query(value="Delete from contactos where fk_empressa =?1", nativeQuery = true) public void deleteByEmpresaId(Long id); @@ -31,4 +30,10 @@ public interface ContactoRepository extends JpaRepository { @Modifying @Query(value = "INSERT INTO contactos (nombre, apellido, apellido2, correo, telefono, fk_empressa) VALUES (:nombre, :apellido, :apellido2, :correo, :telefono, :fk_empressa)", nativeQuery = true) void insertContacto(@Param("nombre") String nombre, @Param("apellido") String apellido, @Param("apellido2") String apellido2, @Param("correo") String correo, @Param("telefono") String telefono, @Param("fk_empressa") Long fk_empressa); + + @Query("SELECT c FROM Contacto c WHERE c.nombre like %:query%") + Page findContactoByNombre(String query, PageRequest of); + + @Query("SELECT c FROM Contacto c WHERE c.empresa.nombre LIKE %:query%") + Page findContactoByEmpresa(String query, PageRequest of); } 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 7d23b19..70aae6f 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/EmpressaRepository.java @@ -1,12 +1,16 @@ package com.example.proyectofinal.repositories.empresas; +import com.example.proyectofinal.models.empresas.Contacto; import com.example.proyectofinal.models.empresas.Empresa; 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.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + import java.util.ArrayList; import java.util.List; @@ -37,4 +41,15 @@ public interface EmpressaRepository extends JpaRepository, JpaSpe @Query("SELECT e FROM Empresa e WHERE e.sector.nombre = :sectorName") Page findEmpresasBySectorName(@Param("sectorName") String sectorName, Pageable pageable); + @Query("SELECT e FROM Empresa e WHERE e.nombre LIKE %:query%") + Page findEmpresasByEmpresaName(String query, PageRequest of); + + @Query("SELECT e FROM Empresa e WHERE e.keywords LIKE %:query%") + Page findEmpresasByKeywords(String query, PageRequest of); + +// @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 effffc6..6d4b3fe 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/OfertaRepository.java @@ -1,6 +1,9 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Oferta; +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; @@ -41,4 +44,16 @@ public interface OfertaRepository extends JpaRepository { Oferta findByNombre(String name); + @Query(value = "SELECT o FROM Oferta o JOIN o.skills s WHERE s.nombre = ?1", nativeQuery = false) + Page findOfertaBySkill(String skillName, Pageable pageable); + + @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.sucursal.nombre LIKE %:query%") + Page findOfertaByEmpresa(String query, PageRequest of); + } 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 3f60f0b..cf3f9cc 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/SucursalRepository.java @@ -1,6 +1,8 @@ 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.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -22,4 +24,13 @@ public interface SucursalRepository extends JpaRepository { @Query("SELECT s FROM Sucursal s WHERE s.nombre = :nombre") Sucursal findByName(String nombre); + + @Query("SELECT s FROM Sucursal s WHERE s.empresa.nombre LIKE %:query%") + Page findSucursalByEmpresa(String query, PageRequest of); + + @Query("SELECT s FROM Sucursal s WHERE s.nombre LIKE %:query%") + Page findSucursalaByNombre(String query, PageRequest of); + + @Query("SELECT s FROM Sucursal s WHERE s.localidad LIKE %:query%") + Page findSucursalByLocalidad(String query, PageRequest of); } diff --git a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java index 7bc3cb4..8ca495a 100644 --- a/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java +++ b/src/main/java/com/example/proyectofinal/servicios/AlumnoService.java @@ -17,6 +17,29 @@ import java.util.List; 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")){ + return findAllPaginated(pageNum, size, sortField, sortDir); + }else if (secondaryOption.equals("Apellido")) { + return alumnoRepository.findAlumnoByApellido(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Nombre")) { + return alumnoRepository.findAlumnoByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Keywords")) { + return alumnoRepository.findAlumnoByKeywords(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Nia")) { + return alumnoRepository.findAlumnoByNia(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Dni")) { + return alumnoRepository.findAlumnoByDni(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Ciclo")) { + return alumnoRepository.findAlumnoByCiclo(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + @Override public List findAll() { return alumnoRepository.findAll(); @@ -77,4 +100,6 @@ public class AlumnoService implements IAlumno{ } } + + } diff --git a/src/main/java/com/example/proyectofinal/servicios/CicloService.java b/src/main/java/com/example/proyectofinal/servicios/CicloService.java index e6b84f6..d0b753d 100644 --- a/src/main/java/com/example/proyectofinal/servicios/CicloService.java +++ b/src/main/java/com/example/proyectofinal/servicios/CicloService.java @@ -92,5 +92,18 @@ public class CicloService implements ICiclos { } } + @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("Familia")) { + return cicloRepository.findCicloByFamilia(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else if(secondaryOption.equals("Codigo")) { + return cicloRepository.findCicloByCodigo(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java index 147fa6f..db7e77d 100644 --- a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java @@ -2,6 +2,7 @@ package com.example.proyectofinal.servicios; import com.example.proyectofinal.models.empresas.Contacto; 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; @@ -91,5 +92,18 @@ public class ContactosService implements IContactos { return contactoRepository.existsByNombreApe(contacto.getNombre(),contacto.getApellido(),contacto.getApellido2()); } + @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("Nombre")) { + return contactoRepository.findContactoByNombre(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + }else if(secondaryOption.equals("Empresa")) { + return contactoRepository.findContactoByEmpresa(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java index aac2bba..b242aae 100644 --- a/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/EmpresaService.java @@ -1,9 +1,6 @@ package com.example.proyectofinal.servicios; - -import com.example.proyectofinal.interfaces.specific.IEmpresaSpecificPagination; import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.models.empresas.Oferta; -import com.example.proyectofinal.models.empresas.Sector; import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.repositories.empresas.EmpressaRepository; import com.example.proyectofinal.repositories.empresas.OfertaRepository; @@ -18,7 +15,7 @@ import org.springframework.stereotype.Service; import java.util.List; @Service -public class EmpresaService implements IEmpresa, IEmpresaSpecificPagination { +public class EmpresaService implements IEmpresa { @Autowired private EmpressaRepository empresaRepository; @@ -31,16 +28,23 @@ public class EmpresaService implements IEmpresa, IEmpresaSpecificPagination { @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; } - } + + + @Override public List findAll() { return empresaRepository.findAll(); @@ -53,13 +57,7 @@ public class EmpresaService implements IEmpresa, IEmpresaSpecificPagination { Page result = empresaRepository.findAll(pageRequest); return result; } - @Override - public Page findEmpresasBySectorPaginated(Long sectorId, int pageNum, int pageSize, String sortField, String sortDir) { - Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() : Sort.by(sortField).descending(); - PageRequest pageRequest = PageRequest.of(pageNum - 1, pageSize, sort); - Page result = empresaRepository.empresaBySector(sectorId, pageRequest); - return result; - } + @Override public Empresa findById(Long id) { @@ -106,5 +104,10 @@ public class EmpresaService implements IEmpresa, IEmpresaSpecificPagination { return empresaRepository.findBySector(id); } + // @Override +// public List getEmpresasByQueryAndSecondaryOption(String query, String secondaryQuery) { +// return empresaRepository.findByQueryAndSecondaryOption(query, secondaryQuery); +// } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java index 969574d..77d9a35 100644 --- a/src/main/java/com/example/proyectofinal/servicios/OfertaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/OfertaService.java @@ -26,6 +26,23 @@ 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() { return ofertaRepository.findAll(); @@ -102,4 +119,6 @@ public class OfertaService implements IOferta { } } } + + } diff --git a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java index fb55bf3..4fda1f5 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java @@ -80,5 +80,20 @@ public class SucursalService implements ISucursal { return sucursalRepository.findByName(sucursal.getNombre()); } + @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("Empressa")) { + 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())); + }else if(secondaryOption.equals("Localidad")) { + return sucursalRepository.findSucursalByLocalidad(query, PageRequest.of(pageNum - 1, size, Sort.by(sortField).ascending())); + } else { + return null; + } + } + } 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 cfabbba..baf77c5 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java @@ -2,6 +2,7 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Alumno; +import org.springframework.data.domain.Page; import java.util.List; @@ -21,4 +22,7 @@ public interface IAlumno extends IPagination { Alumno exists(Alumno alumno); void deleteByCiclo(Long id); + + Page getPage(int pageNum, int size, String sortField, String sortDir, 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 c41f86d..b286725 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Ciclo; import com.example.proyectofinal.models.empresas.Familia; +import org.springframework.data.domain.Page; import java.util.List; @@ -24,5 +25,7 @@ public interface ICiclos extends IPagination { Ciclo exists(Ciclo ciclo); void deleteByFamiliaId(Long id); + + Page getPage(int pageNum, int size, String sortField, String sortDir, 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 047e08c..0c8d1bd 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Contacto; import com.example.proyectofinal.models.empresas.Empresa; +import org.springframework.data.domain.Page; import java.util.List; @@ -22,4 +23,6 @@ public interface IContactos extends IPagination { void deleteByEmpresa(Empresa empresa); Contacto exists(Contacto contacto); + + Page getPage(int pageNum, int size, String sortField, String sortDir, 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 e950467..8ab58bf 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java @@ -1,8 +1,8 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; -import com.example.proyectofinal.interfaces.specific.IEmpresaSpecificPagination; import com.example.proyectofinal.models.empresas.Empresa; +import org.springframework.data.domain.Page; import java.util.List; @@ -22,4 +22,7 @@ public interface IEmpresa extends IPagination { List findBySector(Long id); + Page getPage(int pageNum, int size, String sortField, String sortDir, 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 b17eb71..ae2aa74 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Sucursal; +import org.springframework.data.domain.Page; import java.util.List; @@ -22,4 +23,6 @@ public interface IOferta extends IPagination { List findBySucursal(Sucursal sucursal); void deleteByCicloId(Long id); + + Page getPage(int pageNum, int size, String sortField, String sortDir, 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 526e1d1..0280582 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java @@ -3,6 +3,7 @@ package com.example.proyectofinal.servicios.implemetations; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.models.empresas.Sucursal; +import org.springframework.data.domain.Page; import java.util.List; @@ -22,4 +23,6 @@ public interface ISucursal extends IPagination { List findByEmpresa(Empresa empresa); Sucursal exists(Sucursal sucursal); + + Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f4b3c35..8e2b0d8 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/projfin spring.datasource.username=projfin spring.h2.console.enabled=true -spring.datasource.password=1234 +spring.datasource.password=1234S spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/static/back_button.css b/src/main/resources/static/back_button.css deleted file mode 100644 index 4647e0a..0000000 --- a/src/main/resources/static/back_button.css +++ /dev/null @@ -1,17 +0,0 @@ -.back-button { - display: flex; - position: fixed; - bottom: 0; - left: 0; - width: 200px !important; - height: 50px !important; - font-size: 25px !important; - margin-top: 100px; - background-color: #007BFF; - color: white; - font-weight: bolder; - border-radius: 5px; - justify-content: center; - align-items: center; - font-family: Verdana, Geneva, Tahoma, sans-serif; -} \ 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 137ab5a..a43d403 100644 --- a/src/main/resources/templates/buscador_admin.html +++ b/src/main/resources/templates/buscador_admin.html @@ -165,7 +165,7 @@ options = ['Todo', 'Nombre', 'Empresa']; break; case'ofertas': - options = ['Todo', 'Nombre', 'Empresa','Fecha']; + options = ['Todo', 'Nombre', 'Empresa','Fecha','Skill']; break; case'sucursales': options = ['Todo', 'Nombre', 'Empresa','Localidad']; @@ -177,10 +177,10 @@ options = ['Todo']; break; case'ciclos': - options = ['Todo','Familia']; + options = ['Todo','Familia','Codigo']; break; case'alumnos': - options = ['Todo', 'Nombre', 'Apellidos','Ciclo','Keywords']; + options = ['Todo', 'Nombre', 'Apellido','Ciclo','Keywords','Nia' ,'Dni']; break; default: options = []; diff --git a/src/main/resources/templates/list/alumnos.html b/src/main/resources/templates/list/alumnos.html index 73a3790..6d2b300 100644 --- a/src/main/resources/templates/list/alumnos.html +++ b/src/main/resources/templates/list/alumnos.html @@ -92,7 +92,7 @@ - + [[${alumno.nombre}]] @@ -120,24 +120,21 @@
diff --git a/src/main/resources/templates/list/ciclos.html b/src/main/resources/templates/list/ciclos.html index 12ec857..70e8180 100644 --- a/src/main/resources/templates/list/ciclos.html +++ b/src/main/resources/templates/list/ciclos.html @@ -42,7 +42,7 @@ - + [[${ciclo.nombre}]] @@ -57,24 +57,21 @@
diff --git a/src/main/resources/templates/list/contactos.html b/src/main/resources/templates/list/contactos.html index 979ca75..90a1e3f 100644 --- a/src/main/resources/templates/list/contactos.html +++ b/src/main/resources/templates/list/contactos.html @@ -58,7 +58,7 @@ - + [[${contacto.nombre}]] @@ -73,27 +73,25 @@
+
diff --git a/src/main/resources/templates/list/empresas.html b/src/main/resources/templates/list/empresas.html index f5d1d7e..a573c6b 100644 --- a/src/main/resources/templates/list/empresas.html +++ b/src/main/resources/templates/list/empresas.html @@ -59,6 +59,7 @@ + [[${empresa.nombre}]] @@ -76,24 +77,21 @@
@@ -116,18 +114,19 @@ function goBack() { window.history.back(); } + var $table = $('#table'); var $modalDelete = $('#modalDelete'); var $myInput = $('#myInput'); var $createIcon = $('#create-icon'); var isSearchBarUsed = false; - $table.on('click', '.edit-icon', function(event) { + $table.on('click', '.edit-icon', function (event) { console.log("Edit icon clicked"); handleEdit(event); }); - $table.on('click', '.delete-icon', function(event) { + $table.on('click', '.delete-icon', function (event) { console.log("Delete icon clicked"); handleDelete(event); }); @@ -152,16 +151,16 @@ document.body.style.pointerEvents = 'none'; modal.style.pointerEvents = 'auto'; - closeSpan.onclick = function() { + closeSpan.onclick = function () { modal.style.display = "none"; document.body.style.pointerEvents = 'auto'; } - deleteSpan.onclick = function() { + deleteSpan.onclick = function () { $.ajax({ url: '/empresa/delete/' + rowId, type: 'GET', - success: function(response) { + success: function (response) { if (response === "La empresa ha sido eliminada") { alert("Empresa borrada con exito"); window.location.reload(); @@ -173,10 +172,12 @@ } } - $myInput.on('input', function() { + + $myInput.on('input', function () { var query = document.querySelector('#myInput').value; var paginationControls = document.querySelector('#paginationControls'); var entriesCountDropdown = document.querySelector('#entriesCount'); + var empresasData = document.querySelector('#empresasData').value; // Retrieve the serialized empresas if (query == '') { isSearchBarUsed = false; @@ -213,12 +214,12 @@ tableBody.appendChild(row); }); - document.querySelectorAll('.edit-icon').forEach(function(icon) { + document.querySelectorAll('.edit-icon').forEach(function (icon) { icon.removeEventListener('click', handleEdit); icon.addEventListener('click', handleEdit); console.log("Edit icon event listener attached"); }); - document.querySelectorAll('.delete-icon').forEach(function(icon) { + document.querySelectorAll('.delete-icon').forEach(function (icon) { icon.removeEventListener('click', handleDelete); icon.addEventListener('click', handleDelete); console.log("Delete icon event listener attached"); @@ -229,7 +230,7 @@ } }); - document.querySelector('#table').addEventListener('click', function(event) { + document.querySelector('#table').addEventListener('click', function (event) { if (event.target.matches('.edit-icon')) { handleEdit(event); } else if (event.target.matches('.delete-icon')) { @@ -237,24 +238,24 @@ } }); - const observer = new MutationObserver(function() { - document.querySelectorAll('.edit-icon').forEach(function(icon) { + const observer = new MutationObserver(function () { + document.querySelectorAll('.edit-icon').forEach(function (icon) { icon.addEventListener('click', handleEdit); }); - document.querySelectorAll('.delete-icon').forEach(function(icon) { + document.querySelectorAll('.delete-icon').forEach(function (icon) { icon.addEventListener('click', handleDelete); }); }); - observer.observe(document.querySelector('#table tbody'), { childList: true }); + observer.observe(document.querySelector('#table tbody'), {childList: true}); - document.getElementById('create-icon').addEventListener('click', function() { + document.getElementById('create-icon').addEventListener('click', function () { console.log("Create button clicked : TEST"); window.location = "/admin/empresa/create"; }); var tableHeaders = document.querySelectorAll('.table-header'); - tableHeaders.forEach(function(header) { - header.addEventListener('click', function(event) { + tableHeaders.forEach(function (header) { + header.addEventListener('click', function (event) { if (isSearchBarUsed) { event.preventDefault(); } diff --git a/src/main/resources/templates/list/familias.html b/src/main/resources/templates/list/familias.html index 68ad470..95c8ffd 100644 --- a/src/main/resources/templates/list/familias.html +++ b/src/main/resources/templates/list/familias.html @@ -46,24 +46,21 @@
diff --git a/src/main/resources/templates/list/ofertas.html b/src/main/resources/templates/list/ofertas.html index b0a9ac9..91ef648 100644 --- a/src/main/resources/templates/list/ofertas.html +++ b/src/main/resources/templates/list/ofertas.html @@ -56,8 +56,7 @@ - - [[${oferta.id}]] + [[${oferta.nombre}]] @@ -77,24 +76,21 @@
diff --git a/src/main/resources/templates/list/sectores.html b/src/main/resources/templates/list/sectores.html index 5a264e6..38566f0 100644 --- a/src/main/resources/templates/list/sectores.html +++ b/src/main/resources/templates/list/sectores.html @@ -45,24 +45,21 @@
diff --git a/src/main/resources/templates/list/skills.html b/src/main/resources/templates/list/skills.html index d892e60..a56fd03 100644 --- a/src/main/resources/templates/list/skills.html +++ b/src/main/resources/templates/list/skills.html @@ -45,24 +45,21 @@
diff --git a/src/main/resources/templates/list/sucursales.html b/src/main/resources/templates/list/sucursales.html index 659b8cd..53bfaf8 100644 --- a/src/main/resources/templates/list/sucursales.html +++ b/src/main/resources/templates/list/sucursales.html @@ -53,7 +53,7 @@ - + [[${sucursal.nombre}]] @@ -70,24 +70,21 @@