diff --git a/pom.xml b/pom.xml
index ad485bc..cc64a73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,16 @@
spring-boot-starter-test
test
+
+ jakarta.persistence
+ jakarta.persistence-api
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.0
+
+
diff --git a/src/main/java/com/example/project/management/DTO/PrioridadProyectoDTO.java b/src/main/java/com/example/project/management/DTO/PrioridadProyectoDTO.java
new file mode 100644
index 0000000..e47c102
--- /dev/null
+++ b/src/main/java/com/example/project/management/DTO/PrioridadProyectoDTO.java
@@ -0,0 +1,15 @@
+package com.example.project.management.DTO;
+
+import com.example.project.management.model.PrioridadProyecto;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class PrioridadProyectoDTO {
+
+ private Long id;
+ private String nombre;
+ private LocalDateTime fechaEliminacion;
+
+}
diff --git a/src/main/java/com/example/project/management/controller/PrioridadProyectoController.java b/src/main/java/com/example/project/management/controller/PrioridadProyectoController.java
new file mode 100644
index 0000000..c308a7f
--- /dev/null
+++ b/src/main/java/com/example/project/management/controller/PrioridadProyectoController.java
@@ -0,0 +1,83 @@
+package com.example.project.management.controller;
+
+import com.example.project.management.DTO.PrioridadProyectoDTO;
+import com.example.project.management.exception.BadRequestException;
+import com.example.project.management.exception.ResponseService;
+import com.example.project.management.mapper.PrioridadProyectoMapper;
+import com.example.project.management.model.PrioridadProyecto;
+import com.example.project.management.service.PrioridadProyectoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/prioridad-proyecto")
+@CrossOrigin (origins = "*")
+public class PrioridadProyectoController {
+ @Autowired
+ private PrioridadProyectoService modelService;
+
+ @Autowired
+ private ResponseService responseService;
+
+ @GetMapping({"/"})
+ public ResponseEntity> getAll() {
+ List prioridades = modelService.findAllByFechaEliminacionIsNull();
+ if (prioridades.isEmpty()) {
+ throw new BadRequestException("No hay roles creados");
+ }
+ return responseService.successResponse(prioridades, "OK");
+ }
+
+ @GetMapping("/id/{id}")
+ public ResponseEntity> getPorId(@PathVariable Long id){
+ PrioridadProyecto model = modelService.findByIdAndFechaEliminacionIsNull(id);
+ PrioridadProyectoDTO modelDTO = PrioridadProyectoMapper.toDTO(model);
+ return responseService.successResponse(modelDTO, "OK");
+ }
+ @GetMapping("/nombre/{nombre}")
+ public ResponseEntity> getPorNombre(@PathVariable String nombre){
+ PrioridadProyecto model = modelService.findByNombreAndFechaEliminacionIsNull(nombre);
+ PrioridadProyectoDTO modelDTO = PrioridadProyectoMapper.toDTO(model);
+ return responseService.successResponse(modelDTO, "OK");
+ }
+
+
+ @PostMapping({"/"})
+ public ResponseEntity> crear(@RequestBody PrioridadProyectoDTO prioridadProyectoDTO) {
+ return responseService.successResponse(modelService.crear(prioridadProyectoDTO), "Prioridad creada");
+ }
+
+
+ @DeleteMapping("/id/{id}")
+ public ResponseEntity> deleteById(@PathVariable Long id) {
+ modelService.deleteById(id);
+ return responseService.successResponse(null, "Prioridad eliminada");
+ }
+
+ @DeleteMapping("/nombre/{nombre}")
+ public ResponseEntity> deleteByNombre(@PathVariable String nombre) {
+ modelService.deleteByNombre(nombre);
+ return responseService.successResponse(null, "Prioridad eliminada");
+ }
+
+ @PostMapping("/recuperar/id/{id}")
+ public ResponseEntity> recuperarPorId(@PathVariable Long id) {
+ modelService.recuperarPorId(id);
+ return responseService.successResponse(null, "Prioridad recuperada");
+ }
+
+ @PostMapping("/recuperar/nombre/{nombre}")
+ public ResponseEntity> recuperarPorNombre(@PathVariable String nombre) {
+ modelService.recuperarPorNombre(nombre);
+ return responseService.successResponse(null, "Prioridad recuperada");
+ }
+
+ @PutMapping ("/")
+ public ResponseEntity> update( @RequestBody PrioridadProyectoDTO prioridadProyectoDTO) {
+ return responseService.successResponse(modelService.update(prioridadProyectoDTO), "Prioridad actualizada");
+ }
+
+}
diff --git a/src/main/java/com/example/project/management/exception/ApiResponse.java b/src/main/java/com/example/project/management/exception/ApiResponse.java
new file mode 100644
index 0000000..ab1ccc8
--- /dev/null
+++ b/src/main/java/com/example/project/management/exception/ApiResponse.java
@@ -0,0 +1,16 @@
+package com.example.project.management.exception;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ApiResponse {
+ private int status; // Código de estado HTTP
+ private String message; // Mensaje de estado (éxito o error)
+ private T data; // Datos relevantes que se devuelven
+ private String errors; // En caso de error, detalles del mismo
+}
+
diff --git a/src/main/java/com/example/project/management/exception/BadRequestException.java b/src/main/java/com/example/project/management/exception/BadRequestException.java
new file mode 100644
index 0000000..919c080
--- /dev/null
+++ b/src/main/java/com/example/project/management/exception/BadRequestException.java
@@ -0,0 +1,16 @@
+package com.example.project.management.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.BAD_REQUEST)
+public class BadRequestException extends RuntimeException {
+ public BadRequestException(String message) {
+ super(message);
+ }
+}
+/*
+* El BadRequestException es una excepcion personalizada que se utiliza para manejar
+* errores de validaciones de datos.
+* Por ejemplo: Cuando un argumento tiene que tener un tipo de dato correcto.
+* */
\ No newline at end of file
diff --git a/src/main/java/com/example/project/management/exception/ConflictException.java b/src/main/java/com/example/project/management/exception/ConflictException.java
new file mode 100644
index 0000000..921c8b0
--- /dev/null
+++ b/src/main/java/com/example/project/management/exception/ConflictException.java
@@ -0,0 +1,11 @@
+package com.example.project.management.exception;
+
+public class ConflictException extends RuntimeException {
+ public ConflictException(String message) {
+ super(message);
+ }
+}
+/*
+* ConflictException se usa para manejar errores de conflictos
+* Por ejemplo: Cuando un recurso ya existe.
+* */
\ No newline at end of file
diff --git a/src/main/java/com/example/project/management/exception/ForbiddenException.java b/src/main/java/com/example/project/management/exception/ForbiddenException.java
new file mode 100644
index 0000000..445030e
--- /dev/null
+++ b/src/main/java/com/example/project/management/exception/ForbiddenException.java
@@ -0,0 +1,11 @@
+package com.example.project.management.exception;
+
+public class ForbiddenException extends RuntimeException {
+ public ForbiddenException(String message) {
+ super(message);
+ }
+}
+/*
+* ForbiddenException sirve para manejar los errores de acceso denegado
+* Por ejemplo: Cuando un usuario no tiene permiso para acceder a un recurso.
+* */
\ No newline at end of file
diff --git a/src/main/java/com/example/project/management/exception/GlobalExceptionHandler.java b/src/main/java/com/example/project/management/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..6591f62
--- /dev/null
+++ b/src/main/java/com/example/project/management/exception/GlobalExceptionHandler.java
@@ -0,0 +1,93 @@
+package com.example.project.management.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ // Manejo de BadRequestException (400)
+ @ExceptionHandler(BadRequestException.class)
+ public ResponseEntity