diff --git a/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java b/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java index c8f112c..dcdb97b 100644 --- a/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java +++ b/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java @@ -2,6 +2,7 @@ package com.ieslamar.GestionInventario; import com.ieslamar.GestionInventario.dto.BotonDTO; import com.ieslamar.GestionInventario.entities.Role; +import com.ieslamar.GestionInventario.services.DepartamentoService; import com.ieslamar.GestionInventario.services.UserService; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Bean; @@ -17,10 +18,13 @@ public class DataInitializer { // userService.registerUser("user", "user123", Role.USER.name(), "user123@ejemplo.com",null); // }; // } -// public static void test(){ -// BotonDTO boton1 = new BotonDTO("Inventario", "/Inventario/management"); -// boton1.isRequireAdmin(); -// + +// @Bean +// public CommandLineRunner initData(DepartamentoService departamentoService) { +// return args -> { +// departamentoService.registerDepartamento("Informática"); +// departamentoService.registerDepartamento("Ciencias"); +// }; // } } diff --git a/src/main/java/com/ieslamar/GestionInventario/SecurityConfig.java b/src/main/java/com/ieslamar/GestionInventario/SecurityConfig.java index 6c36a3d..ab3c0bf 100644 --- a/src/main/java/com/ieslamar/GestionInventario/SecurityConfig.java +++ b/src/main/java/com/ieslamar/GestionInventario/SecurityConfig.java @@ -25,7 +25,7 @@ public class SecurityConfig { .requestMatchers("/css/**", "/js/**", "/images/**").permitAll() // Permitir acceso a CSS, JS e imágenes .requestMatchers("/admin/**").hasRole("ADMIN") .requestMatchers("/user/**").hasAnyRole("USER", "ADMIN") - .requestMatchers("/management", "/user_management", "/register").hasRole("ADMIN") + .requestMatchers("/management", "/user_management", "/register","/generic_list","generic_list_departamento").hasRole("ADMIN") .requestMatchers("/", "/login").permitAll() .anyRequest().authenticated() ) diff --git a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java index 042277e..808ef4c 100644 --- a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java +++ b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java @@ -3,6 +3,7 @@ package com.ieslamar.GestionInventario.controllers; import com.ieslamar.GestionInventario.dto.BotonDTO; import com.ieslamar.GestionInventario.entities.User; +import com.ieslamar.GestionInventario.services.DepartamentoService; import com.ieslamar.GestionInventario.services.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; @@ -20,15 +21,18 @@ import java.util.ArrayList; import java.util.ArrayList; import java.util.List; +import java.util.Map; @Controller public class UserController { private final UserService userService; + private final DepartamentoService departamentoService; - public UserController(UserService userService) { + public UserController(UserService userService, DepartamentoService departamentoService) { this.userService = userService; + this.departamentoService = departamentoService; } private final BotonDTO gestionUsuarios = new BotonDTO("Gestión de usuarios", "/user_management", true, null); @@ -128,4 +132,51 @@ public class UserController { return "redirect:/user_management"; } + + + + + + + + + @GetMapping("/generic_list") + public String genericPage(Model model) { + model.addAttribute("title", "Gestión Genérica"); + model.addAttribute("headers", List.of("ID", "Nombre", "Rol", "Email", "Acciones")); + model.addAttribute("items", userService.getAllUsers().stream() + .map(user -> Map.of( + "id", user.getId(), + "values", List.of(user.getId(), user.getNombre(), user.getRole(), user.getMail()) + )) + .toList()); + model.addAttribute("actionsUrl", Map.of( + "edit", "/edit_user", + "delete", "/delete_user" + )); + model.addAttribute("backUrl", "/Inventario/home"); + model.addAttribute("addUrl", "/Inventario/register"); + return "generic_list"; + } + + @GetMapping("/generic_list_departamento") + public String genericPageDepartamento(Model model) { + model.addAttribute("title", "Gestión Genérica"); + model.addAttribute("headers", List.of("ID", "Nombre","Acciones")); + model.addAttribute("items", departamentoService.getAllDepartamentos().stream() + .map(departamento -> Map.of( + "id", departamento.getId(), + "values", List.of(departamento.getId(), departamento.getNombre()) + )) + .toList()); + model.addAttribute("actionsUrl", Map.of( + "edit", "/edit_user", + "delete", "/delete_user" + )); + model.addAttribute("backUrl", "/Inventario/home"); + model.addAttribute("addUrl", "/Inventario/register"); + return "generic_list"; + } + + } diff --git a/src/main/java/com/ieslamar/GestionInventario/services/DepartamentoService.java b/src/main/java/com/ieslamar/GestionInventario/services/DepartamentoService.java index 465bd1d..e080658 100644 --- a/src/main/java/com/ieslamar/GestionInventario/services/DepartamentoService.java +++ b/src/main/java/com/ieslamar/GestionInventario/services/DepartamentoService.java @@ -16,4 +16,10 @@ public class DepartamentoService { public List getAllDepartamentos() { return departamentoRepository.findAll(); } + + public void registerDepartamento(String nombre) { + Departamento departamento = new Departamento(); + departamento.setNombre(nombre); + departamentoRepository.save(departamento); + } } diff --git a/src/main/resources/db/Inventario_bueno_v1.sql b/src/main/resources/db/Inventario_bueno_v1.sql index cb57562..c7b4443 100644 --- a/src/main/resources/db/Inventario_bueno_v1.sql +++ b/src/main/resources/db/Inventario_bueno_v1.sql @@ -23,7 +23,7 @@ USE `inventario` ; DROP TABLE IF EXISTS `inventario`.`departamentos` ; CREATE TABLE IF NOT EXISTS `inventario`.`departamentos` ( - `iddepartamentos` INT NOT NULL, + `iddepartamentos` INT NOT NULL AUTO_INCREMENT, `Nombre` VARCHAR(45) NULL, PRIMARY KEY (`iddepartamentos`)) ENGINE = InnoDB; @@ -147,7 +147,7 @@ ENGINE = InnoDB; DROP TABLE IF EXISTS `inventario`.`proveedores` ; CREATE TABLE IF NOT EXISTS `inventario`.`proveedores` ( - `idproveedores` INT NOT NULL, + `idproveedores` INT NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(45) NOT NULL, PRIMARY KEY (`idproveedores`)) ENGINE = InnoDB; @@ -159,7 +159,7 @@ ENGINE = InnoDB; DROP TABLE IF EXISTS `inventario`.`factura` ; CREATE TABLE IF NOT EXISTS `inventario`.`factura` ( - `idfactura` INT NOT NULL, + `idfactura` INT NOT NULL AUTO_INCREMENT, `foto` LONGBLOB NULL, `fecha` DATE NOT NULL, `fin_garantia` DATE NOT NULL, diff --git a/src/main/resources/db/Modelo_Inventario.mwb b/src/main/resources/db/Modelo_Inventario.mwb index bb62a4d..18be971 100644 Binary files a/src/main/resources/db/Modelo_Inventario.mwb and b/src/main/resources/db/Modelo_Inventario.mwb differ diff --git a/src/main/resources/templates/fragments/list.html b/src/main/resources/templates/fragments/list.html deleted file mode 100644 index 9708975..0000000 --- a/src/main/resources/templates/fragments/list.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - -
- -
- - - - - - diff --git a/src/main/resources/templates/generic_list.html b/src/main/resources/templates/generic_list.html new file mode 100644 index 0000000..64fde65 --- /dev/null +++ b/src/main/resources/templates/generic_list.html @@ -0,0 +1,44 @@ + + + + Página Genérica + + + +
+

+
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + \ No newline at end of file