diff --git a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java index d885d13..b6d2760 100644 --- a/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java +++ b/src/main/java/com/example/proyectofinal/controllers/BuscadorController.java @@ -5,6 +5,7 @@ import com.example.proyectofinal.models.empresas.*; import com.example.proyectofinal.repositories.empresas.*; import com.example.proyectofinal.servicios.ContactosService; import com.example.proyectofinal.servicios.SectorService; +import com.example.proyectofinal.servicios.SucursalService; import com.example.proyectofinal.servicios.implemetations.IEmpresa; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -33,7 +34,7 @@ public class BuscadorController { @Autowired private SectorService sectorService; @Autowired - private SucursalRepository sucursalRepository; + private SucursalService sucursalService; @Autowired private SkillRepository skillRepository; @@ -101,7 +102,7 @@ public class BuscadorController { } - @GetMapping("/contactos/page/{pageNum") + @GetMapping("/contactos/page/{pageNum}") public String searchContactosList(@PathVariable int pageNum, @RequestParam(defaultValue = "") String query, Model model, @@ -124,6 +125,28 @@ public class BuscadorController { return "/list/contactos"; } + @GetMapping("/sucursales/page/{pageNum}") + public String searchSucursalesList(@PathVariable int pageNum, + @RequestParam(defaultValue = "") String query, + Model model, + @RequestParam(defaultValue = "10") int size, + @RequestParam(defaultValue = "id") String sortField, + @RequestParam(defaultValue = "asc") String sortDir){ + String[] word = query.split("\\b(y|o)\\b|[,/]"); + List itemsPage = Arrays.asList(5, 10, 15, 20, 25, 50); + if (word.length == 1 && (word[0].equalsIgnoreCase("all") || word[0].equalsIgnoreCase("todas"))) { + sortField = "id"; + sortDir = "asc"; + } + Page page = this.sucursalService.finadAllpaginated(pageNum, size, sortField, sortDir); + List sucursals = page.getContent(); + model.addAttribute("currentSize", size); + Map attributes = getPagAtrSucursales(pageNum, query, size, sortField, sortDir, sucursals, itemsPage); + for (Map.Entry entry : attributes.entrySet()) { + model.addAttribute(entry.getKey(), entry.getValue()); + } + return "/list/sucursales"; + } public String searchAlumnosList(@RequestParam String query, @RequestParam String searchOption, @RequestParam(required = false) String filter, Model model, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size) { Pageable pageable = PageRequest.of(page, size); String[] word = query.split("\\b(y|o)\\b|[,/]"); @@ -147,23 +170,6 @@ public class BuscadorController { return "/list/ofertas"; } - - - @GetMapping("/sucursales") - public String searchSucursalesList(@RequestParam String query, @RequestParam String searchOption, @RequestParam(required = false) String filter, Model model, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size){ - Pageable pageable = PageRequest.of(page, size); - String[] word = query.split("\\b(y|o)\\b|[,/]"); - if (word.length == 1 && word[0].equalsIgnoreCase("all") || word[0].equalsIgnoreCase("todas")) { - List sucursalSet = new ArrayList<>(sucursalRepository.findAll()); - model.addAttribute("sucursales", sucursalSet); - return "/list/sucursales"; - } - return "/list/sucursales"; - } - - - - @GetMapping("/familias") public String searchFamiliasList(@RequestParam String query, @RequestParam String searchOption, @RequestParam(required = false) String filter, Model model, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size) { Pageable pageable = PageRequest.of(page, size); @@ -247,6 +253,21 @@ public class BuscadorController { attributes.put("itemsPage", itemsPage); return attributes; } + public Map getPagAtrSucursales(int pageNum, String query, int size, String sortField, String sortDir, List sucursals, List itemsPage) { + Map attributes = new HashMap<>(); + Page page = this.sucursalService.finadAllpaginated(pageNum, size, "id", "asc"); + attributes.put("currentPage", pageNum); + attributes.put("totalPages", page.getTotalPages()); + attributes.put("totalItems", page.getTotalElements()); + attributes.put("sortField", sortField); + attributes.put("sortDir", sortDir); + attributes.put("reverseSortDir", sortDir.equals("asc") ? "desc" : "asc"); + attributes.put("sucursales", sucursals); + attributes.put("query", query); + attributes.put("itemsPage", itemsPage); + return attributes; + } + @GetMapping("/empresas/search") public ResponseEntity> searchEmpresas(@RequestParam String query) { @@ -260,9 +281,15 @@ public class BuscadorController { return ResponseEntity.ok(sectors); } - @GetMapping("/sectores/search") + @GetMapping("/contactos/search") public ResponseEntity> searchContactos(@RequestParam String query) { - List contactos = null; + List contactos = contactosService.search(query); return ResponseEntity.ok(contactos); } + @GetMapping("/sucursales/search") + public ResponseEntity> searchSucursales(@RequestParam String query) { + List sucursals = sucursalService.search(query); + return ResponseEntity.ok(sucursals); + } + } \ No newline at end of file diff --git a/src/main/java/com/example/proyectofinal/controllers/modelControllers/ContactoController.java b/src/main/java/com/example/proyectofinal/controllers/modelControllers/ContactoController.java index 5f8eceb..a2eee01 100644 --- a/src/main/java/com/example/proyectofinal/controllers/modelControllers/ContactoController.java +++ b/src/main/java/com/example/proyectofinal/controllers/modelControllers/ContactoController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; + import java.util.List; @Controller @@ -38,22 +39,18 @@ public class ContactoController { @PostMapping("/contacto/save") - public ResponseEntity saveContacto(Contacto contacto, @RequestParam("sector.id") Long empresaId){ + public ResponseEntity saveContacto(Contacto contacto, @RequestParam("empresa.id") Long empresaId){ try{ Empresa existingEmpresa = empresaService.findById(empresaId); - if(existingEmpresa != null) { - contacto.setEmpresa(existingEmpresa); - } else { - return new ResponseEntity<>("Empresa no encontrada", HttpStatus.BAD_REQUEST); - } - if(contactosService.exists(contacto)){ - + contacto.setEmpresa(existingEmpresa); + if(contactosService.exists(contacto) != null){ return new ResponseEntity<>("Este contacto ya existe en la base de datos", HttpStatus.BAD_REQUEST); - }else { + }else{ contactosService.save(contacto); return new ResponseEntity<>("El contacto fue guardado con exito", HttpStatus.OK); } }catch (Exception e) { + e.printStackTrace(); return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } } @@ -69,7 +66,7 @@ public class ContactoController { } @PostMapping("/contacto/update") - public ResponseEntity updateContacto(Contacto contacto, @RequestParam("sector.id") Long empresaId){ + public ResponseEntity updateContacto(Contacto contacto, @RequestParam("empresa.id") Long empresaId){ try{ Empresa existingEmpresa = empresaService.findById(empresaId); if(existingEmpresa != null) { diff --git a/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java b/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java index 822c639..e4fd75f 100644 --- a/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java +++ b/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java @@ -52,13 +52,8 @@ public class EmpressaController { public ResponseEntity saveEmpresa(Empresa empresa, @RequestParam("sector.id") Long sectorId){ try{ Sector existingSector = sectorService.findById(sectorId); - if(existingSector != null) { - empresa.setSector(existingSector); - } else { - return new ResponseEntity<>("Sector no encontrado", HttpStatus.BAD_REQUEST); - } + empresa.setSector(existingSector); if(empresaService.exists(empresa) != null){ - System.out.println("Empresa ya existe"); return new ResponseEntity<>("Este empresa ya existe en la base de datos", HttpStatus.BAD_REQUEST); }else { empresaService.save(empresa); @@ -102,9 +97,8 @@ public class EmpressaController { @GetMapping("/empresa/delete/{id}") public ResponseEntity deleteEmpresa(@PathVariable Long id){ try{ - System.out.println("Deleting empresa with id: " + id); empresaService.deleteById(id); - return new ResponseEntity<>("El sector ha sido eliminado", HttpStatus.OK); + return new ResponseEntity<>("La empresa ha sido eliminado", HttpStatus.OK); }catch (Exception e){ return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } diff --git a/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java b/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java new file mode 100644 index 0000000..f216e29 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/controllers/modelControllers/SucursalController.java @@ -0,0 +1,89 @@ +package com.example.proyectofinal.controllers.modelControllers; + +import com.example.proyectofinal.models.empresas.Empresa; +import com.example.proyectofinal.models.empresas.Sucursal; +import com.example.proyectofinal.servicios.EmpresaService; +import com.example.proyectofinal.servicios.SucursalService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@Controller +public class SucursalController { + + @Autowired + private SucursalService sucursalService; + @Autowired + private EmpresaService empresaService; + + @GetMapping("/admin/sucursal/create") + public String showCreateForm(Model model) { + Sucursal sucursal = new Sucursal(); + Empresa empresa = new Empresa(); + List empresas = empresaService.findAll(); + model.addAttribute("sucursal", sucursal); + model.addAttribute("empresa", empresa); + model.addAttribute("empresas", empresas); + return "admin/sucursal/create"; + } + + + @PostMapping("/sucursal/save") + public ResponseEntity saveSucursal(Sucursal sucursal, @RequestParam("empresa.id") Long empresaId){ + try{ + Empresa existingEmpresa = empresaService.findById(empresaId); + sucursal.setEmpresa(existingEmpresa); + if(sucursalService.exists(sucursal) != null){ + return new ResponseEntity<>("Este sucursal ya existe en la base de datos", HttpStatus.BAD_REQUEST); + }else { + sucursalService.save(sucursal); + return new ResponseEntity<>("La sucursal fue guardado con exito", HttpStatus.OK); + } + }catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + @GetMapping("/admin/sucursal/update/{id}") + public String showUpdateForm(Model model, @PathVariable Long id) { + Sucursal sucursal = sucursalService.findById(id); + Empresa empresa = new Empresa(); + List empresas = empresaService.findAll(); + model.addAttribute("sucursal", sucursal); + model.addAttribute("empresa", empresa); + model.addAttribute("empresas", empresas); + model.addAttribute("sedeCentral", sucursal.getSedeCentral()); + return "admin/sucursal/update"; + } + + @PostMapping("/sucursal/update") + public ResponseEntity updateSucursal(Sucursal sucursal, @RequestParam("empresa.id") Long sectorId){ + try{ + Empresa existingEmpresa = empresaService.findById(sectorId); + sucursal.setEmpresa(existingEmpresa); + sucursalService.save(sucursal); + return new ResponseEntity<>("Los datos del sucursal fue renovados con exito", HttpStatus.OK); + }catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + @GetMapping("/sucursal/delete/{id}") + public ResponseEntity deleteSucursal(@PathVariable Long id){ + System.out.println("Attempting to delete Sucursal with ID: " + id); + try{ + sucursalService.deleteById(id); + return new ResponseEntity<>("La empresa ha sido eliminado", HttpStatus.OK); + }catch (Exception e){ + System.out.println("Error deleting Sucursal: " + e.getMessage()); + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } +} diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Alumno.java b/src/main/java/com/example/proyectofinal/models/empresas/Alumno.java index 15bdeb0..8a4fc21 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Alumno.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Alumno.java @@ -79,64 +79,4 @@ public class Alumno { @JoinColumn(name = "fk_ciclo",referencedColumnName = "id") @OnDelete(action = OnDeleteAction.CASCADE) private Ciclo ciclo; - - public Alumno(@NonNull String nombre, @NonNull String apellido, String apellido2, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, String correo2, @NonNull String nacionalidad, @NonNull String keyword, Set skills, Ciclo ciclo) { - this.nombre = nombre; - this.apellido = apellido; - this.apellido2 = apellido2; - this.fechaNacimiento = fechaNacimiento; - this.genero = genero; - this.nia = nia; - this.dni = dni; - this.correo = correo; - this.correo2 = correo2; - this.nacionalidad = nacionalidad; - this.keywords = keyword; - this.skills = skills; - this.ciclo = ciclo; - } - -// public Alumno(@NonNull String nombre, @NonNull String apellido, String apellido2, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, @NonNull String nacionalidad, @NonNull String keyword, Set skills, Ciclo ciclo) { -// this.nombre = nombre; -// this.apellido = apellido; -// this.apellido2 = apellido2; -// this.fechaNacimiento = fechaNacimiento; -// this.genero = genero; -// this.nia = nia; -// this.dni = dni; -// this.correo = correo; -// this.nacionalidad = nacionalidad; -// this.keyword = keyword; -// this.skills = skills; -// this.ciclo = ciclo; -// } -// -// public Alumno( @NonNull String nombre, @NonNull String apellido, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, @NonNull String nacionalidad, @NonNull String keyword, Set skills, Ciclo ciclo) { -// this.nombre = nombre; -// this.apellido = apellido; -// this.fechaNacimiento = fechaNacimiento; -// this.genero = genero; -// this.nia = nia; -// this.dni = dni; -// this.correo = correo; -// this.nacionalidad = nacionalidad; -// this.keyword = keyword; -// this.skills = skills; -// this.ciclo = ciclo; -// } -// -// public Alumno(@NonNull String nombre, @NonNull String apellido, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, String correo2, @NonNull String nacionalidad, @NonNull String keyword, Set skills, Ciclo ciclo) { -// this.nombre = nombre; -// this.apellido = apellido; -// this.fechaNacimiento = fechaNacimiento; -// this.genero = genero; -// this.nia = nia; -// this.dni = dni; -// this.correo = correo; -// this.correo2 = correo2; -// this.nacionalidad = nacionalidad; -// this.keyword = keyword; -// this.skills = skills; -// this.ciclo = ciclo; -// } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Ciclo.java b/src/main/java/com/example/proyectofinal/models/empresas/Ciclo.java index 4d9b4c3..95e6adf 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Ciclo.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Ciclo.java @@ -33,9 +33,4 @@ public class Ciclo { @OnDelete(action = OnDeleteAction.CASCADE) private Familia familia; - public Ciclo(@NonNull String nombre, @NonNull String codigo, Familia familia) { - this.nombre = nombre; - this.codigo = codigo; - this.familia = familia; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Contacto.java b/src/main/java/com/example/proyectofinal/models/empresas/Contacto.java index 59aa7a1..e606ce1 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Contacto.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Contacto.java @@ -21,14 +21,14 @@ public class Contacto { private long id; @NonNull - @Column(length = 70) + @Column(length = 75) private String nombre; @NonNull - @Column(length = 70) + @Column(length = 125) private String apellido; - @Column(length = 70) + @Column(length = 125) private String apellido2; @Column(length = 100) @@ -37,25 +37,8 @@ public class Contacto { @Column(length = 70) private String telefono; - @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},fetch = FetchType.LAZY) + @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},fetch = FetchType.EAGER) @JoinColumn(name = "fk_empressa",referencedColumnName = "id") @OnDelete(action = OnDeleteAction.CASCADE) private Empresa empresa; - - public Contacto(@NonNull String nombre, @NonNull String apellido1, String apellido2, String correo, String telefono, Empresa empresa) { - this.nombre = nombre; - this.apellido = apellido1; - this.apellido2 = apellido2; - this.correo = correo; - this.telefono = telefono; - this.empresa = empresa; - } - - public Contacto(@NonNull String nombre, @NonNull String apellido1, String correo, String telefono, Empresa empresa) { - this.nombre = nombre; - this.apellido = apellido1; - this.correo = correo; - this.telefono = telefono; - this.empresa = empresa; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Empresa.java b/src/main/java/com/example/proyectofinal/models/empresas/Empresa.java index 2245397..4dc42c1 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Empresa.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Empresa.java @@ -43,13 +43,4 @@ public class Empresa { @JoinColumn(name = "fk_sector",referencedColumnName = "id") @OnDelete(action = OnDeleteAction.CASCADE) private Sector sector; - - public Empresa(@NonNull String nombre, @NonNull String cif, @NonNull String correo, @NonNull String telefono1, @NonNull String keywords, Sector sector) { - this.nombre = nombre; - this.cif = cif; - this.correo = correo; - this.telefono = telefono1; - this.keywords = keywords; - this.sector = sector; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Oferta.java b/src/main/java/com/example/proyectofinal/models/empresas/Oferta.java index 117cca7..1f544c8 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Oferta.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Oferta.java @@ -53,11 +53,4 @@ public class Oferta { ) private Set skills; - public Oferta(@NonNull String nombre, String descripcion, @NonNull String fecha, Sucursal sucursal, Set skills) { - this.nombre = nombre; - this.descripcion = descripcion; - this.fecha = fecha; - this.sucursal = sucursal; - this.skills = skills; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Sector.java b/src/main/java/com/example/proyectofinal/models/empresas/Sector.java index 84d4136..038a601 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Sector.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Sector.java @@ -20,7 +20,4 @@ public class Sector { @Column(length = 75) private String nombre; - public Sector(@NonNull String nombre) { - this.nombre = nombre; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Skill.java b/src/main/java/com/example/proyectofinal/models/empresas/Skill.java index 8e89e64..639544e 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Skill.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Skill.java @@ -30,7 +30,4 @@ public class Skill { @ManyToMany(mappedBy = "skills") private Set ofertas; - public Skill(@NonNull String nombre) { - this.nombre = nombre; - } } diff --git a/src/main/java/com/example/proyectofinal/models/empresas/Sucursal.java b/src/main/java/com/example/proyectofinal/models/empresas/Sucursal.java index 12a1dab..5b33b8e 100644 --- a/src/main/java/com/example/proyectofinal/models/empresas/Sucursal.java +++ b/src/main/java/com/example/proyectofinal/models/empresas/Sucursal.java @@ -35,16 +35,12 @@ public class Sucursal { @Name("sede_central") private boolean sedeCentral; - @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},fetch = FetchType.LAZY) + @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},fetch = FetchType.EAGER) @JoinColumn(name = "fk_empressa", referencedColumnName = "id") @OnDelete(action = OnDeleteAction.CASCADE) private Empresa empresa; - public Sucursal(@NonNull String nombre, @NonNull String localidad, @NonNull String direccion, @NonNull boolean sedeCentral, Empresa empresa) { - this.nombre = nombre; - this.localidad = localidad; - this.direccion = direccion; - this.sedeCentral = sedeCentral; - this.empresa = empresa; + public boolean getSedeCentral() { + return this.sedeCentral; } } 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 707ecca..9655d75 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/ContactoRepository.java @@ -2,9 +2,12 @@ package com.example.proyectofinal.repositories.empresas; import com.example.proyectofinal.models.empresas.Contacto; 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; public interface ContactoRepository extends JpaRepository { @Query("SELECT c FROM Contacto c WHERE c.empresa.id = ?1") @@ -19,6 +22,13 @@ public interface ContactoRepository extends JpaRepository { @Query(value="SELECT * FROM contactos WHERE fk_empressa = ?1", nativeQuery = true) public ArrayList findByEmpresaId(Long id); - @Query(value="SELECT * FROM contactos WHERE nombre=?1", nativeQuery = true) - boolean existsByNombre(String nombre); + @Query(value="SELECT * FROM contactos c WHERE nombre= ?1 and apellido = ?2 and apellido2 =?3", nativeQuery = true) + Contacto existsByNombreApe(String nombre, String apellido, String apellido2); + + @Query("SELECT c FROM Contacto c WHERE c.nombre LIKE %:query% OR c.apellido LIKE %:query% OR c.apellido2 LIKE %:query% OR c.correo LIKE %:query% OR c.telefono LIKE %:query% OR c.empresa.nombre LIKE %:query% OR CAST(c.id AS string) = :query") + List search(@Param("query") String query); + + @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); } 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 00ba2dd..3f60f0b 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.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.ArrayList; import java.util.List; @@ -15,4 +16,10 @@ 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") + List search(@Param("query") String query); + + @Query("SELECT s FROM Sucursal s WHERE s.nombre = :nombre") + Sucursal findByName(String nombre); } diff --git a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java index 5f68237..b6bf0ae 100644 --- a/src/main/java/com/example/proyectofinal/servicios/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/ContactosService.java @@ -10,11 +10,13 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import com.example.proyectofinal.repositories.empresas.ContactoRepository; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; @Service public class ContactosService implements IContactos { + private static final Logger log = LoggerFactory.getLogger(ContactosService.class); @Autowired private ContactoRepository contactoRepository; @@ -48,6 +50,26 @@ public class ContactosService implements IContactos { return contactoRepository.save(contacto); } + public void insertContacto(Contacto contacto) { + Contacto newContacto = new Contacto(); + long id = Long.parseLong(null); + newContacto.setId(id); + newContacto.setNombre(contacto.getNombre()); + newContacto.setApellido(contacto.getApellido()); + newContacto.setApellido2(contacto.getApellido2()); + newContacto.setCorreo(contacto.getCorreo()); + newContacto.setTelefono(contacto.getTelefono()); + newContacto.setEmpresa(contacto.getEmpresa()); + contactoRepository.insertContacto( + newContacto.getNombre(), + newContacto.getApellido(), + newContacto.getApellido2(), + newContacto.getCorreo(), + newContacto.getTelefono(), + newContacto.getEmpresa().getId() + ); + } + @Override public void deleteById(Long id) { contactoRepository.deleteById(id); @@ -55,7 +77,7 @@ public class ContactosService implements IContactos { @Override public List search(String query) { - return List.of(); + return contactoRepository.search(query); } @Override @@ -67,7 +89,7 @@ public class ContactosService implements IContactos { } @Override - public boolean exists(Contacto contacto) { - return contactoRepository.existsByNombre(contacto.getNombre()); + public Contacto exists(Contacto contacto) { + return contactoRepository.existsByNombreApe(contacto.getNombre(),contacto.getApellido(),contacto.getApellido2()); } } diff --git a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java index e7e7c76..b9d0273 100644 --- a/src/main/java/com/example/proyectofinal/servicios/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/SucursalService.java @@ -1,11 +1,17 @@ package com.example.proyectofinal.servicios; import com.example.proyectofinal.models.empresas.Empresa; +import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Sucursal; +import com.example.proyectofinal.repositories.empresas.OfertaRepository; +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.stereotype.Service; import java.util.List; @@ -14,6 +20,12 @@ public class SucursalService implements ISucursal { @Autowired private SucursalRepository sucursalRepository; + @Autowired + private OfertaService ofertaService; + @Autowired + private SkillRepository skillRepository; + @Autowired + private OfertaRepository ofertaRepository; @Override public List findAll() { @@ -22,7 +34,11 @@ public class SucursalService implements ISucursal { @Override public Page finadAllpaginated(int pageNum, int pageSize, String sortField, String sortDir) { - return null; + 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.sucursalRepository.findAll(pageable); } @Override @@ -42,12 +58,18 @@ public class SucursalService implements ISucursal { @Override public void deleteById(Long id) { + Sucursal sucursal = findById(id); + List ofertas = ofertaService.findBySucursal(sucursal); + for (Oferta oferta : ofertas) { + ofertaRepository.deleteSkillsByOfertaId(oferta.getId()); + ofertaService.deleteById(oferta.getId()); + } sucursalRepository.deleteById(id); } @Override public List search(String query) { - return List.of(); + return sucursalRepository.search(query); } @Override @@ -55,4 +77,9 @@ public class SucursalService implements ISucursal { return sucursalRepository.findByEmpresaId(empresa.getId()); } + @Override + public Sucursal exists(Sucursal sucursal) { + return sucursalRepository.findByName(sucursal.getNombre()); + } + } 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 8cfdc95..927d843 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java @@ -24,5 +24,5 @@ public interface IContactos { void deleteByEmpresa(Empresa empresa); - boolean exists(Contacto contacto); + Contacto exists(Contacto contacto); } 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 415d10b..c58b4e1 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java @@ -22,4 +22,6 @@ public interface ISucursal { List search(String query); List findByEmpresa(Empresa empresa); + + Sucursal exists(Sucursal sucursal); } diff --git a/src/main/java/com/example/proyectofinal/temp b/src/main/java/com/example/proyectofinal/temp index 168b7ed..fac3380 100644 --- a/src/main/java/com/example/proyectofinal/temp +++ b/src/main/java/com/example/proyectofinal/temp @@ -4,6 +4,10 @@ + + + + Title - - -

Listado de Alumnos

+

Listado de Sucursales

- - - - + + + - - - - - - - - - - + + + + + + +
Id NombreApellido 1Apellido 2CorreoTelefonoLocalidadDirecciónSedeCentral Empressa
[[${contacto.id}]][[${contacto.nombre}]][[${contacto.apellido}]][[${contacto.apellido2}]][[${contacto.correo}]][[${contacto.telefono}]][[${contacto.empresa.nombre}]]
[[${sucursal.id}]][[${sucursal.nombre}]][[${sucursal.localidad}]][[${sucursal.direccion}]][[${sucursal.sedeCentral}]][[${sucursal.empresa.nombre}]]
diff --git a/src/main/resources/templates/admin/contacto/create.html b/src/main/resources/templates/admin/contacto/create.html index d1d4232..25d1be6 100644 --- a/src/main/resources/templates/admin/contacto/create.html +++ b/src/main/resources/templates/admin/contacto/create.html @@ -2,7 +2,7 @@ - Creacion: Empresa + Creacion: Contacto @@ -49,51 +49,51 @@ -

Añadir Empresa

+

Añadir Contacto

- +
- +
- +
- +
- +
- + + + + + + +

Añadir Empresa

+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
+
+ + + + diff --git a/src/main/resources/templates/admin/sucursal/update.html b/src/main/resources/templates/admin/sucursal/update.html new file mode 100644 index 0000000..7eeaf9f --- /dev/null +++ b/src/main/resources/templates/admin/sucursal/update.html @@ -0,0 +1,137 @@ + + + + + Update: Empresa + + + + + + + + +

Editar datos de Empresa

+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + +
+
+
+ + + + diff --git a/src/main/resources/templates/list/contactos.html b/src/main/resources/templates/list/contactos.html index f906d8d..ed13729 100644 --- a/src/main/resources/templates/list/contactos.html +++ b/src/main/resources/templates/list/contactos.html @@ -6,7 +6,7 @@ - Lista: Sectore + Lista: Contactos @@ -14,7 +14,7 @@
-

Listado de Sectores

+

Listado de Contactos

@@ -46,7 +46,7 @@ - + Correo @@ -57,7 +57,7 @@ - Sector + Empresa @@ -83,23 +83,23 @@ @@ -130,14 +130,12 @@ var entriesCountDropdown = document.querySelector('#entriesCount'); if (query == '') { - // If the search bar is empty, show the pagination controls and the entries count dropdown, and reload the page paginationControls.style.display = ''; entriesCountDropdown.style.display = ''; table.style.pointerEvents = ''; location.reload(); } else { - // If the search bar is not empty, hide the pagination controls and the entries count dropdown, and perform the search paginationControls.style.display = 'none'; entriesCountDropdown.style.display = 'none'; table.style.pointerEvents = 'none'; @@ -156,18 +154,18 @@ - [[${contacto.apellido}]] - [[${contacto.apellido2}]] - [[${contacto.correo}]] - [[${contacto.telefono}]] - [[${contacto.empresa.nombre}]] + ${contacto.apellido} + ${contacto.apellido2} + ${contacto.correo} + ${contacto.telefono} + ${contacto.empresa.nombre} `; tableBody.appendChild(row); }); }); } }); - + }); diff --git a/src/main/resources/templates/list/sucursales.html b/src/main/resources/templates/list/sucursales.html index fac3380..0e56baf 100644 --- a/src/main/resources/templates/list/sucursales.html +++ b/src/main/resources/templates/list/sucursales.html @@ -3,35 +3,68 @@ + - - - - - Title + Lista Sucursales -

Listado de Sucursales

-
- +
+ +

Listado de Sucursales

+ +
+ + + + +
+
- - - - - - + + + + + + - + @@ -40,12 +73,143 @@
IdNombreLocalidadDirecciónSedeCentralEmpressa + + Id + + + + Nombre + + + + Localidad + + + + Direccion + + + + Sede Central + + + + Empresa + +
[[${sucursal.id}]][[${sucursal.nombre}]] + [[${sucursal.nombre}]] + + + [[${sucursal.localidad}]] [[${sucursal.direccion}]] [[${sucursal.sedeCentral}]]
- +
+ +
+ + + + + \ No newline at end of file