From a391e1579453a31d62dab12888b9ee480a8db398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Rando?= Date: Mon, 18 May 2026 15:37:19 -0300 Subject: [PATCH 1/3] Update entities --- .../domain/entity/Documentacion.java | 20 +++++++++++++++++ .../domain/entity/Empleado.java | 7 ++++++ .../domain/entity/Justificacion.java | 16 ++++++++++++++ .../domain/entity/RegistroHorario.java | 22 +++++++++++++++++++ .../domain/enums/EstadoAsistencia.java | 8 ------- .../domain/enums/EstadoRegistroHorario.java | 6 +++++ .../domain/enums/TipoDocumentacion.java | 5 +++++ .../domain/enums/TipoEmpleado.java | 5 +++++ 8 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/Documentacion.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoAsistencia.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoRegistroHorario.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoDocumentacion.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoEmpleado.java diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Documentacion.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Documentacion.java new file mode 100644 index 0000000..bfa0ff4 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Documentacion.java @@ -0,0 +1,20 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; + +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper=false) +@Audited +public class Documentacion extends Base { + private TipoDocumentacion tipoDocumentacion; + private String observacion; + private String pathArchivo; + private String nombreArchivo; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java new file mode 100644 index 0000000..0e4a35b --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java @@ -0,0 +1,7 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import com.apkrew.staffManagementServer.domain.enums.TipoEmpleado; + +public class Empleado extends Persona { + private TipoEmpleado tipoEmpleado; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java new file mode 100644 index 0000000..91389c5 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java @@ -0,0 +1,16 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; + +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper=false) +@Audited +public class Justificacion extends Base { + +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java new file mode 100644 index 0000000..29b0012 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java @@ -0,0 +1,22 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import com.apkrew.staffManagementServer.domain.enums.EstadoRegistroHorario; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; + +import java.util.Date; + +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper=false) +@Audited +public class RegistroHorario extends Base { + private Date fechaEntrada; + private Date fechaSalida; + private String observacion; + private EstadoRegistroHorario estadoRegistroHorario; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoAsistencia.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoAsistencia.java deleted file mode 100644 index 13c72e9..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoAsistencia.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.apkrew.staffManagementServer.domain.enums; - -public enum EstadoAsistencia { - AUSENTE, - PRESENTE, - LLEGADA_TARDE, - SALIDA_TEMPRANA -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoRegistroHorario.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoRegistroHorario.java new file mode 100644 index 0000000..7b7a7f3 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/EstadoRegistroHorario.java @@ -0,0 +1,6 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum EstadoRegistroHorario { + AUSENTE, + PRESENTE +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoDocumentacion.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoDocumentacion.java new file mode 100644 index 0000000..0bc1b67 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoDocumentacion.java @@ -0,0 +1,5 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum TipoDocumentacion { + DOCUMENTO_IDENTIDAD, CARNET_DE_CONDUCIR +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoEmpleado.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoEmpleado.java new file mode 100644 index 0000000..a8ea9ca --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoEmpleado.java @@ -0,0 +1,5 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum TipoEmpleado { + ADMINISTRATIVO, COCINERO, MOZO, DELIVERY +} From 28719dfe58eb53085a47c13b300e805c77e1f433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Rando?= Date: Mon, 18 May 2026 18:18:53 -0300 Subject: [PATCH 2/3] Update empleado related classes --- .gitignore | 2 + .../controller/DocumentacionController.java | 34 ++++ .../controller/JustificacionController.java | 37 +++++ .../controller/RegistroHorarioController.java | 18 +++ .../domain/entity/Contacto.java | 18 +++ .../entity/{Domicilio.java => Direccion.java} | 11 +- .../domain/entity/Empleado.java | 10 ++ .../domain/entity/Imagen.java | 20 +++ .../domain/entity/Justificacion.java | 6 +- .../domain/entity/Localidad.java | 1 + .../domain/entity/Persona.java | 4 + .../domain/entity/RegistroHorario.java | 4 + .../domain/enums/TipoContacto.java | 5 + .../domain/enums/TipoImagen.java | 5 + .../repository/DireccionRepository.java | 10 ++ .../repository/DocumentacionRepository.java | 10 ++ .../repository/DomicilioRepository.java | 10 -- .../domain/repository/ImagenRepository.java | 6 + .../repository/JustificacionRepository.java | 8 + .../repository/RegistroHorarioRepository.java | 11 ++ .../domain/service/DireccionService.java | 6 + .../domain/service/DireccionServiceImpl.java | 57 +++++++ .../domain/service/DocumentacionService.java | 12 ++ .../service/DocumentacionServiceImpl.java | 147 ++++++++++++++++++ .../domain/service/DomicilioService.java | 6 - .../domain/service/DomicilioServiceImpl.java | 60 ------- .../domain/service/ImageServiceImpl.java | 47 ++++++ .../domain/service/ImagenService.java | 6 + .../domain/service/JustificacionService.java | 10 ++ .../service/JustificacionServiceImpl.java | 76 +++++++++ .../domain/service/LocalidadServiceImpl.java | 4 + .../service/RegistroHorarioService.java | 6 + .../service/RegistroHorarioServiceImpl.java | 57 +++++++ .../domain/service/UsuarioService.java | 2 - 34 files changed, 643 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/apkrew/staffManagementServer/controller/DocumentacionController.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/controller/JustificacionController.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/controller/RegistroHorarioController.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/Contacto.java rename src/main/java/com/apkrew/staffManagementServer/domain/entity/{Domicilio.java => Direccion.java} (66%) create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/entity/Imagen.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoContacto.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoImagen.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/DireccionRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/DocumentacionRepository.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/DomicilioRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/ImagenRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/JustificacionRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/RegistroHorarioRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionServiceImpl.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioService.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioServiceImpl.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/ImageServiceImpl.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/ImagenService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioServiceImpl.java diff --git a/.gitignore b/.gitignore index c2065bc..fcbabfd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ build/ !**/src/main/**/build/ !**/src/test/**/build/ +.claude +CLAUDE.md ### STS ### .apt_generated .classpath diff --git a/src/main/java/com/apkrew/staffManagementServer/controller/DocumentacionController.java b/src/main/java/com/apkrew/staffManagementServer/controller/DocumentacionController.java new file mode 100644 index 0000000..33a96fb --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/controller/DocumentacionController.java @@ -0,0 +1,34 @@ +package com.apkrew.staffManagementServer.controller; + +import com.apkrew.staffManagementServer.domain.entity.Documentacion; +import com.apkrew.staffManagementServer.domain.service.DocumentacionServiceImpl; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping(path = "api/v1/documentacion") +public class DocumentacionController extends BaseControllerImpl{ + public DocumentacionController(DocumentacionServiceImpl service) { + super(service); + } + + @GetMapping("/files/{id}") + public ResponseEntity getArchivo(@PathVariable String id) { + try { + byte[] archivo = service.buscarDocumentacion(id); + return ResponseEntity.ok() + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + id + "\"") + .body(archivo); + } catch (ErrorServiceException ex) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"error\":\"" + ex.getMessage() + "\"}"); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"error\":\"Error. Por favor intente más tarde.\"}"); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/apkrew/staffManagementServer/controller/JustificacionController.java b/src/main/java/com/apkrew/staffManagementServer/controller/JustificacionController.java new file mode 100644 index 0000000..f9b2df9 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/controller/JustificacionController.java @@ -0,0 +1,37 @@ +package com.apkrew.staffManagementServer.controller; + +import com.apkrew.staffManagementServer.domain.entity.Justificacion; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.domain.service.JustificacionServiceImpl; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping(path = "api/v1/justificacion") +public class JustificacionController extends BaseControllerImpl { + + public JustificacionController(JustificacionServiceImpl service) { + super(service); + } + + @PostMapping(value = "/crear", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity crearJustificacion( + @RequestParam("registroHorarioId") String registroHorarioId, + @RequestParam("tipoDocumentacion") TipoDocumentacion tipoDocumentacion, + @RequestParam(value = "observacion", required = false) String observacion, + @RequestPart("archivo") MultipartFile archivo) { + try { + return ResponseEntity.status(HttpStatus.OK) + .body(service.crearJustificacion(registroHorarioId, tipoDocumentacion, observacion, archivo)); + } catch (ErrorServiceException ex) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("{\"error\":\"" + ex.getMessage() + "\"}"); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"error\":\"Error. Por favor intente más tarde.\"}"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/controller/RegistroHorarioController.java b/src/main/java/com/apkrew/staffManagementServer/controller/RegistroHorarioController.java new file mode 100644 index 0000000..d2882a4 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/controller/RegistroHorarioController.java @@ -0,0 +1,18 @@ +package com.apkrew.staffManagementServer.controller; + +import com.apkrew.staffManagementServer.domain.entity.Pais; +import com.apkrew.staffManagementServer.domain.entity.RegistroHorario; +import com.apkrew.staffManagementServer.domain.service.PaisServiceImpl; +import com.apkrew.staffManagementServer.domain.service.RegistroHorarioServiceImpl; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping(path = "api/v1/registroHorario") +public class RegistroHorarioController extends BaseControllerImpl{ + public RegistroHorarioController(RegistroHorarioServiceImpl service) { + super(service); + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Contacto.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Contacto.java new file mode 100644 index 0000000..f039c4d --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Contacto.java @@ -0,0 +1,18 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import com.apkrew.staffManagementServer.domain.enums.TipoContacto; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; + +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper=false) +@Audited +public abstract class Contacto extends Base { + private String observacion; + private TipoContacto tipoContacto; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Domicilio.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Direccion.java similarity index 66% rename from src/main/java/com/apkrew/staffManagementServer/domain/entity/Domicilio.java rename to src/main/java/com/apkrew/staffManagementServer/domain/entity/Direccion.java index 2ffb136..5e4b723 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Domicilio.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Direccion.java @@ -16,10 +16,13 @@ @Data @EqualsAndHashCode(callSuper=false) @Audited -public class Domicilio extends Base { - private String nombre; - private String numero; - private String cp; +public class Direccion extends Base { + private String calle; + private String numeracion; + private String barrio; + private String manzanaPiso; + private String casaDepartamento; + private String referencia; @ManyToOne private Localidad localidad; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java index 0e4a35b..6c79e1a 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Empleado.java @@ -1,7 +1,17 @@ package com.apkrew.staffManagementServer.domain.entity; import com.apkrew.staffManagementServer.domain.enums.TipoEmpleado; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper = false) +@Audited public class Empleado extends Persona { private TipoEmpleado tipoEmpleado; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Imagen.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Imagen.java new file mode 100644 index 0000000..1985090 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Imagen.java @@ -0,0 +1,20 @@ +package com.apkrew.staffManagementServer.domain.entity; + +import com.apkrew.staffManagementServer.domain.enums.TipoImagen; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.envers.Audited; + +@Entity +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper = false) +@Audited +public class Imagen extends Base { + private String nombre; + private String mime; + private byte[] contenido; + private TipoImagen tipoImagen; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java index 91389c5..bf6d107 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Justificacion.java @@ -1,6 +1,7 @@ package com.apkrew.staffManagementServer.domain.entity; import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -12,5 +13,8 @@ @EqualsAndHashCode(callSuper=false) @Audited public class Justificacion extends Base { - + @ManyToOne + private Documentacion documentacion; + @ManyToOne + private RegistroHorario registroHorario; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Localidad.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Localidad.java index f58cc35..d55c0f8 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Localidad.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Localidad.java @@ -20,4 +20,5 @@ public class Localidad extends Base { private String nombre; @ManyToOne private Departamento departamento; + private String codigoPostal; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java index 508ba37..0bac827 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java @@ -24,4 +24,8 @@ public class Persona extends Base{ private Date fechaNacimiento; @ManyToOne private Usuario usuario; + @ManyToOne + private Direccion direccion; + @ManyToOne + private Contacto contacto; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java index 29b0012..265c611 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/RegistroHorario.java @@ -1,7 +1,9 @@ package com.apkrew.staffManagementServer.domain.entity; import com.apkrew.staffManagementServer.domain.enums.EstadoRegistroHorario; +import com.apkrew.staffManagementServer.domain.entity.Empleado; import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -19,4 +21,6 @@ public class RegistroHorario extends Base { private Date fechaSalida; private String observacion; private EstadoRegistroHorario estadoRegistroHorario; + @ManyToOne + private Empleado empleado; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoContacto.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoContacto.java new file mode 100644 index 0000000..d980ada --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoContacto.java @@ -0,0 +1,5 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum TipoContacto { + PERSONAL, LABORAL, EMPRESA +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoImagen.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoImagen.java new file mode 100644 index 0000000..b87d0d2 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/TipoImagen.java @@ -0,0 +1,5 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum TipoImagen { + PERSONA, PRODUCTO +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/DireccionRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/DireccionRepository.java new file mode 100644 index 0000000..245ac88 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/DireccionRepository.java @@ -0,0 +1,10 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.Direccion; +import org.springframework.stereotype.Repository; + +@Repository +public interface DireccionRepository extends BaseRepository { + Direccion findByCalleAndNumeracionAndLocalidadIdAndEliminadoFalse(String calle, String numeracion, String localidadId); + boolean existsByCalleAndNumeracionAndLocalidadIdAndEliminadoFalse(String calle, String numeracion, String localidadId); +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/DocumentacionRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/DocumentacionRepository.java new file mode 100644 index 0000000..d1c0da6 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/DocumentacionRepository.java @@ -0,0 +1,10 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.Documentacion; +import com.apkrew.staffManagementServer.domain.entity.Pais; +import org.springframework.stereotype.Repository; + +@Repository +public interface DocumentacionRepository extends BaseRepository { + +} \ No newline at end of file diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/DomicilioRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/DomicilioRepository.java deleted file mode 100644 index 11b234f..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/repository/DomicilioRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.apkrew.staffManagementServer.domain.repository; - -import com.apkrew.staffManagementServer.domain.entity.Domicilio; -import org.springframework.stereotype.Repository; - -@Repository -public interface DomicilioRepository extends BaseRepository { - Domicilio findByNombreAndNumeroAndCpAndLocalidadIdAndEliminadoFalse(String nombre, String numero, String cp, String localidadId); - boolean existsByNombreAndNumeroAndCpAndLocalidadIdAndEliminadoFalse(String nombre, String numero, String cp, String localidadId); -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/ImagenRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/ImagenRepository.java new file mode 100644 index 0000000..17ba707 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/ImagenRepository.java @@ -0,0 +1,6 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.Imagen; + +public interface ImagenRepository extends BaseRepository { +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/JustificacionRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/JustificacionRepository.java new file mode 100644 index 0000000..a278d3e --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/JustificacionRepository.java @@ -0,0 +1,8 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.Justificacion; +import org.springframework.stereotype.Repository; + +@Repository +public interface JustificacionRepository extends BaseRepository { +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/RegistroHorarioRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/RegistroHorarioRepository.java new file mode 100644 index 0000000..146d78c --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/RegistroHorarioRepository.java @@ -0,0 +1,11 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.RegistroHorario; +import org.springframework.stereotype.Repository; + +import java.util.Date; + +@Repository +public interface RegistroHorarioRepository extends BaseRepository { + boolean existsByEmpleadoIdAndFechaEntradaAndEliminadoFalse(String empleadoId, Date fechaEntrada); +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionService.java new file mode 100644 index 0000000..cec87d5 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionService.java @@ -0,0 +1,6 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Direccion; + +public interface DireccionService extends BaseService { +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionServiceImpl.java new file mode 100644 index 0000000..192b7d3 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/DireccionServiceImpl.java @@ -0,0 +1,57 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Direccion; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.domain.repository.DireccionRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.stereotype.Service; + +@Service +public class DireccionServiceImpl extends BaseServiceImpl implements DireccionService { + + private DireccionRepository direccionRepository; + + public DireccionServiceImpl(BaseRepository baserepository, DireccionRepository direccionRepository) { + super(baserepository); + this.direccionRepository = direccionRepository; + } + + @Override + public boolean validar(Direccion entity, String caso) throws Exception { + try { + if (entity == null) { + throw new ErrorServiceException("La dirección no puede ser nula"); + } + + if (entity.getCalle() == null || entity.getCalle().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar la calle"); + } + + if (entity.getNumeracion() == null || entity.getNumeracion().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar la numeración"); + } + + if (entity.getLocalidad() == null || entity.getLocalidad().getId() == null) { + throw new ErrorServiceException("Debe indicar la localidad"); + } + + if (caso.equals("SAVE")) { + if (direccionRepository.existsByCalleAndNumeracionAndLocalidadIdAndEliminadoFalse( + entity.getCalle(), entity.getNumeracion(), entity.getLocalidad().getId())) { + throw new ErrorServiceException("La dirección ya existe en el sistema"); + } + } else { + Direccion cc = direccionRepository.findByCalleAndNumeracionAndLocalidadIdAndEliminadoFalse( + entity.getCalle(), entity.getNumeracion(), entity.getLocalidad().getId()); + if (cc != null && !cc.getId().equals(entity.getId())) { + throw new ErrorServiceException("La dirección especificada ya existe en el sistema"); + } + } + return true; + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionService.java new file mode 100644 index 0000000..2b1c151 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionService.java @@ -0,0 +1,12 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Documentacion; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.web.multipart.MultipartFile; + +public interface DocumentacionService extends BaseService { + public Documentacion crearDocumentacion(TipoDocumentacion tipoDocumentacion, String observacion, MultipartFile archivo) throws ErrorServiceException; + public byte[] buscarDocumentacion(String id) throws ErrorServiceException; + public Documentacion modificarDocumentacion(Documentacion documentacion, MultipartFile archivo) throws ErrorServiceException; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java new file mode 100644 index 0000000..e1221db --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java @@ -0,0 +1,147 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Documentacion; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.domain.repository.DocumentacionRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Optional; +import java.util.UUID; + +@Service +public class DocumentacionServiceImpl extends BaseServiceImpl implements DocumentacionService{ + + @Autowired + private DocumentacionRepository documentacionRepository; + + String ruta = "files/documentacion/"; + + public DocumentacionServiceImpl(BaseRepository repository) { + super(repository); + } + + @Override + public boolean validar(Documentacion documentacion, String caso) throws Exception { + try { + if (documentacion == null) { + throw new ErrorServiceException("La documentación no puede ser nula"); + } + + if (documentacion.getTipoDocumentacion() == null) { + throw new ErrorServiceException("Debe indicar el tipo de documentación"); + } + + if (documentacion.getNombreArchivo() == null || documentacion.getNombreArchivo().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el nombre del archivo"); + } + + if (documentacion.getPathArchivo() == null || documentacion.getPathArchivo().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar la ruta del archivo"); + } + + return true; + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } + + /** + * Escribe el archivo en el almacenamiento. + * @param tipoDocumentacion TipoDocumentacion + * @param observacion String + * @param archivo MultipartFile, puede ser foto o pdf. + * @return Documentacion + * @throws ErrorServiceException + */ + public Documentacion crearDocumentacion(TipoDocumentacion tipoDocumentacion, String observacion, MultipartFile archivo) throws ErrorServiceException { + try { + Documentacion documentacion = new Documentacion(); + documentacion.setId(UUID.randomUUID().toString()); + String nombreOriginal = archivo.getOriginalFilename(); + documentacion.setNombreArchivo(nombreOriginal); + String nuevoNombre = UUID.randomUUID().toString() + nombreOriginal.substring(nombreOriginal.lastIndexOf(".")); + Path destino = Paths.get(ruta + nuevoNombre); + documentacion.setNombreArchivo(nombreOriginal); + documentacion.setTipoDocumentacion(tipoDocumentacion); + documentacion.setObservacion(observacion); + documentacion.setPathArchivo(destino.toString()); + validar(documentacion, "SAVE"); + Files.createDirectories(destino.getParent()); + Files.write(destino, archivo.getBytes()); + return documentacionRepository.save(documentacion); + + } catch (IOException e) { + throw new ErrorServiceException("Error guardando el documento."); + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } + + /** + * Modifica un archivo existente en el storage. Guarda la nueva version manteniendo ambas + * @param documentacion Documentacion + * @param archivo MultipartFile + * @return Documentacion + * @throws ErrorServiceException + */ + public Documentacion modificarDocumentacion(Documentacion documentacion, MultipartFile archivo) throws ErrorServiceException { + try { + String nombreOriginal = archivo.getOriginalFilename(); + documentacion.setNombreArchivo(nombreOriginal); + String nuevoNombre = UUID.randomUUID().toString() + nombreOriginal.substring(nombreOriginal.lastIndexOf(".")); + Path destino = Paths.get(ruta + nuevoNombre); + documentacion.setNombreArchivo(nombreOriginal); + documentacion.setPathArchivo(destino.toString()); + validar(documentacion, "UPDATE"); + Files.createDirectories(destino.getParent()); + Files.write(destino, archivo.getBytes()); + return documentacionRepository.save(documentacion); + + } catch (IOException e) { + throw new ErrorServiceException("Error guardando el documento."); + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } + + /** + * Busca la documentacion (el archivo) y lo devuelve como byte[] + * @param id String + * @return byte[] + * @throws ErrorServiceException + */ + public byte[] buscarDocumentacion(String id) throws ErrorServiceException { + try { + Optional documentacion = documentacionRepository.findByIdAndEliminadoFalse(id); + Documentacion documentacion1; + if (documentacion.isPresent()) { + documentacion1 = documentacion.get(); + } + else { + throw new ErrorServiceException("La documentación no se encuentra cargada en el sistema"); + } + + return Files.readAllBytes(Paths.get(documentacion1.getPathArchivo())); + } catch (IOException ex) { + throw new ErrorServiceException("Error leyendo la documentación"); + } catch (ErrorServiceException ex) { + throw ex; + } + + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioService.java deleted file mode 100644 index 5625476..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioService.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.apkrew.staffManagementServer.domain.service; - -import com.apkrew.staffManagementServer.domain.entity.Domicilio; - -public interface DomicilioService extends BaseService { -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioServiceImpl.java deleted file mode 100644 index 020a393..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/DomicilioServiceImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.apkrew.staffManagementServer.domain.service; - -import com.apkrew.staffManagementServer.domain.entity.Domicilio; -import com.apkrew.staffManagementServer.domain.entity.Pais; -import com.apkrew.staffManagementServer.domain.repository.BaseRepository; -import com.apkrew.staffManagementServer.domain.repository.DomicilioRepository; -import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; -import org.springframework.stereotype.Service; - -@Service -public class DomicilioServiceImpl extends BaseServiceImpl implements DomicilioService { - - private DomicilioRepository domicilioRepository; - - public DomicilioServiceImpl(BaseRepository baserepository, DomicilioRepository domicilioRepository) { - super(baserepository); - this.domicilioRepository = domicilioRepository; - } - - @Override - public boolean validar(Domicilio entity, String caso) throws Exception { - try { - if (entity.getNombre() == null || entity.getNombre().isEmpty()) { - throw new ErrorServiceException("Debe indicar el nombre"); - } - - if (entity.getCp() == null || entity.getCp().isEmpty()) { - throw new ErrorServiceException("Debe indicar el código postal"); - } - - if (entity.getNumero() == null || entity.getNumero().isEmpty()) { - throw new ErrorServiceException("Debe indicar el número"); - } - - if (entity.getLocalidad() == null) { - throw new ErrorServiceException("Debe indicar la localidad"); - } - - if (caso.equals("SAVE")) { - if (domicilioRepository.existsByNombreAndNumeroAndCpAndLocalidadIdAndEliminadoFalse(entity.getNombre(), - entity.getNumero(), entity.getCp(), entity.getLocalidad().getId())) { - throw new ErrorServiceException("El domicilio ya existe en el sistema"); - } - } else { - Domicilio cc = domicilioRepository.findByNombreAndNumeroAndCpAndLocalidadIdAndEliminadoFalse(entity.getNombre(), - entity.getNumero(), entity.getCp(), entity.getLocalidad().getId()); - if (cc != null) { - if (!cc.getId().equals(entity.getId())) { - throw new ErrorServiceException("El domicilio especificado ya existe en el sistema"); - } - } - } - return true; - } catch (ErrorServiceException ex) { - throw ex; - } catch (Exception ex) { - throw new ErrorServiceException("Error de sistemas"); - } - } -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/ImageServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/ImageServiceImpl.java new file mode 100644 index 0000000..0d1e474 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/ImageServiceImpl.java @@ -0,0 +1,47 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Imagen; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.stereotype.Service; + + +@Service +public class ImageServiceImpl extends BaseServiceImpl implements ImagenService { + + public ImageServiceImpl(BaseRepository repository) { + super(repository); + } + + @Override + public boolean validar(Imagen entity, String caso) throws Exception { + try { + if (entity == null) { + throw new ErrorServiceException("La imagen no puede ser nula"); + } + + if (entity.getNombre() == null || entity.getNombre().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el nombre de la imagen"); + } + + if (entity.getMime() == null || entity.getMime().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el tipo MIME de la imagen"); + } + + if (entity.getContenido() == null || entity.getContenido().length == 0) { + throw new ErrorServiceException("La imagen no puede estar vacía"); + } + + if (entity.getTipoImagen() == null) { + throw new ErrorServiceException("Debe indicar el tipo de imagen"); + } + + return true; + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/ImagenService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/ImagenService.java new file mode 100644 index 0000000..c22b6a8 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/ImagenService.java @@ -0,0 +1,6 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Imagen; + +public interface ImagenService extends BaseService { +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionService.java new file mode 100644 index 0000000..4d9a158 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionService.java @@ -0,0 +1,10 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Justificacion; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.web.multipart.MultipartFile; + +public interface JustificacionService extends BaseService { + Justificacion crearJustificacion(String registroHorarioId, TipoDocumentacion tipoDocumentacion, String observacion, MultipartFile archivo) throws ErrorServiceException; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java new file mode 100644 index 0000000..413d382 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java @@ -0,0 +1,76 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.Documentacion; +import com.apkrew.staffManagementServer.domain.entity.Justificacion; +import com.apkrew.staffManagementServer.domain.entity.RegistroHorario; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.domain.repository.JustificacionRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.UUID; + +@Service +public class JustificacionServiceImpl extends BaseServiceImpl implements JustificacionService { + + private final JustificacionRepository justificacionRepository; + private final DocumentacionServiceImpl documentacionService; + private final RegistroHorarioServiceImpl registroHorarioService; + + public JustificacionServiceImpl(BaseRepository baseRepository, + JustificacionRepository justificacionRepository, + DocumentacionServiceImpl documentacionService, + RegistroHorarioServiceImpl registroHorarioService) { + super(baseRepository); + this.justificacionRepository = justificacionRepository; + this.documentacionService = documentacionService; + this.registroHorarioService = registroHorarioService; + } + + @Override + public Justificacion crearJustificacion(String registroHorarioId, TipoDocumentacion tipoDocumentacion, String observacion, MultipartFile archivo) throws ErrorServiceException { + try { + Documentacion documentacion = documentacionService.crearDocumentacion(tipoDocumentacion, observacion, archivo); + + RegistroHorario registroHorario = registroHorarioService.findById(registroHorarioId); + + Justificacion justificacion = new Justificacion(); + justificacion.setId(UUID.randomUUID().toString()); + justificacion.setDocumentacion(documentacion); + justificacion.setRegistroHorario(registroHorario); + validar(justificacion, "SAVE"); + return justificacionRepository.save(justificacion); + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } + + @Override + public boolean validar(Justificacion entity, String caso) throws Exception { + try { + if (entity == null) { + throw new ErrorServiceException("La justificación no puede ser nula"); + } + + if (entity.getRegistroHorario() == null || entity.getRegistroHorario().getId() == null) { + throw new ErrorServiceException("Debe indicar el registro horario"); + } + + if (entity.getDocumentacion() == null || entity.getDocumentacion().getId() == null) { + throw new ErrorServiceException("Debe indicar la documentación"); + } + + return true; + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/LocalidadServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/LocalidadServiceImpl.java index f37b3cc..f3386e0 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/LocalidadServiceImpl.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/LocalidadServiceImpl.java @@ -27,6 +27,10 @@ public boolean validar(Localidad entity, String caso) throws ErrorServiceExcepti throw new ErrorServiceException("Debe indicar el departamento"); } + if (entity.getCodigoPostal() == null || entity.getCodigoPostal().isEmpty()) { + throw new ErrorServiceException("Debe indicar el código postal"); + } + if (caso.equals("SAVE")) { if (localidadRepository.existsByNombreAndDepartamentoIdAndEliminadoFalse(entity.getNombre(), entity.getDepartamento().getId())) { throw new ErrorServiceException("La localidad ingresada ya existe para ese departamento"); diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioService.java new file mode 100644 index 0000000..e2c95a8 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioService.java @@ -0,0 +1,6 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.RegistroHorario; + +public interface RegistroHorarioService extends BaseService { +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioServiceImpl.java new file mode 100644 index 0000000..2a14541 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/RegistroHorarioServiceImpl.java @@ -0,0 +1,57 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.entity.RegistroHorario; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.domain.repository.RegistroHorarioRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.stereotype.Service; + +@Service +public class RegistroHorarioServiceImpl extends BaseServiceImpl implements RegistroHorarioService { + + private final RegistroHorarioRepository registroHorarioRepository; + + public RegistroHorarioServiceImpl(BaseRepository baseRepository, + RegistroHorarioRepository registroHorarioRepository) { + super(baseRepository); + this.registroHorarioRepository = registroHorarioRepository; + } + + @Override + public boolean validar(RegistroHorario entity, String caso) throws Exception { + try { + if (entity == null) { + throw new ErrorServiceException("El registro horario no puede ser nulo"); + } + + if (entity.getEmpleado() == null || entity.getEmpleado().getId() == null) { + throw new ErrorServiceException("Debe indicar el empleado"); + } + + if (entity.getFechaEntrada() == null) { + throw new ErrorServiceException("Debe indicar la fecha de entrada"); + } + + if (entity.getEstadoRegistroHorario() == null) { + throw new ErrorServiceException("Debe indicar el estado del registro horario"); + } + + if (entity.getFechaSalida() != null && entity.getFechaSalida().before(entity.getFechaEntrada())) { + throw new ErrorServiceException("La fecha de salida no puede ser anterior a la fecha de entrada"); + } + + if (caso.equals("SAVE")) { + if (registroHorarioRepository.existsByEmpleadoIdAndFechaEntradaAndEliminadoFalse(entity.getEmpleado().getId(), entity.getFechaEntrada())) { + throw new ErrorServiceException("El empleado ya tiene un registro horario abierto"); + } + } + + return true; + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioService.java index c1c6601..dde22c4 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioService.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioService.java @@ -1,8 +1,6 @@ package com.apkrew.staffManagementServer.domain.service; -import com.apkrew.staffManagementServer.domain.entity.Domicilio; import com.apkrew.staffManagementServer.domain.entity.Usuario; -import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; public interface UsuarioService extends BaseService { public Usuario changePassword(Usuario entity) throws Exception; From 91b75dd6fa2ef49409941f0d4e7e64a6b39c1c6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Rando?= Date: Mon, 18 May 2026 19:24:57 -0300 Subject: [PATCH 3/3] Update empleado service --- .../controller/EmpleadoController.java | 34 ++++ .../domain/dto/EmpleadoRequestDTO.java | 40 +++++ .../domain/entity/Persona.java | 9 +- .../domain/entity/Usuario.java | 4 +- .../domain/enums/RolUsuario.java | 5 + .../domain/repository/EmpleadoRepository.java | 10 ++ .../domain/repository/PersonaRepository.java | 14 -- .../service/DocumentacionServiceImpl.java | 2 +- .../domain/service/EmpleadoService.java | 10 ++ .../domain/service/EmpleadoServiceImpl.java | 150 ++++++++++++++++++ .../service/JustificacionServiceImpl.java | 4 +- .../domain/service/PersonaService.java | 6 - .../domain/service/PersonaServiceImpl.java | 82 ---------- .../domain/service/UsuarioServiceImpl.java | 4 + .../seguridad/CustomUserDetailsService.java | 2 +- 15 files changed, 265 insertions(+), 111 deletions(-) create mode 100644 src/main/java/com/apkrew/staffManagementServer/controller/EmpleadoController.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/dto/EmpleadoRequestDTO.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/enums/RolUsuario.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/EmpleadoRepository.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/repository/PersonaRepository.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoService.java create mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoServiceImpl.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaService.java delete mode 100644 src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaServiceImpl.java diff --git a/src/main/java/com/apkrew/staffManagementServer/controller/EmpleadoController.java b/src/main/java/com/apkrew/staffManagementServer/controller/EmpleadoController.java new file mode 100644 index 0000000..b0d87ab --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/controller/EmpleadoController.java @@ -0,0 +1,34 @@ +package com.apkrew.staffManagementServer.controller; + +import com.apkrew.staffManagementServer.domain.dto.EmpleadoRequestDTO; +import com.apkrew.staffManagementServer.domain.entity.Empleado; +import com.apkrew.staffManagementServer.domain.service.EmpleadoServiceImpl; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping(path = "api/v1/empleado") +public class EmpleadoController extends BaseControllerImpl { + + public EmpleadoController(EmpleadoServiceImpl service) { + super(service); + } + + @PostMapping(value = "/crear", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity crearEmpleado( + @ModelAttribute EmpleadoRequestDTO dto, + @RequestPart("foto") MultipartFile foto) { + try { + return ResponseEntity.status(HttpStatus.OK).body(service.crearEmpleado(dto, foto)); + } catch (ErrorServiceException ex) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("{\"error\":\"" + ex.getMessage() + "\"}"); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{\"error\":\"Error. Por favor intente más tarde.\"}"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/dto/EmpleadoRequestDTO.java b/src/main/java/com/apkrew/staffManagementServer/domain/dto/EmpleadoRequestDTO.java new file mode 100644 index 0000000..ce3b116 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/dto/EmpleadoRequestDTO.java @@ -0,0 +1,40 @@ +package com.apkrew.staffManagementServer.domain.dto; + +import com.apkrew.staffManagementServer.domain.enums.RolUsuario; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; +import com.apkrew.staffManagementServer.domain.enums.TipoEmpleado; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@NoArgsConstructor +public class EmpleadoRequestDTO { + + // Persona + private String nombre; + private String apellido; + private TipoDocumentacion tipoDocumentacion; + private String dni; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date fechaNacimiento; + + // Empleado + private TipoEmpleado tipoEmpleado; + + // Usuario + private String email; + private String password; + private RolUsuario rol; + + // Direccion + private String calle; + private String numeracion; + private String barrio; + private String manzanaPiso; + private String casaDepartamento; + private String referencia; + private String localidadId; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java index 0bac827..9d56a1f 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Persona.java @@ -1,5 +1,6 @@ package com.apkrew.staffManagementServer.domain.entity; +import com.apkrew.staffManagementServer.domain.enums.TipoDocumentacion; import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; @@ -15,17 +16,17 @@ @Data @EqualsAndHashCode(callSuper=false) @Audited -public class Persona extends Base{ +public abstract class Persona extends Base{ private String nombre; private String apellido; - private String telefono; - private String email; + private TipoDocumentacion tipoDocumentacion; private String dni; private Date fechaNacimiento; @ManyToOne - private Usuario usuario; + private Imagen imagen; @ManyToOne private Direccion direccion; @ManyToOne private Contacto contacto; + } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Usuario.java b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Usuario.java index a310ac5..74a47c5 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/entity/Usuario.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/entity/Usuario.java @@ -1,5 +1,6 @@ package com.apkrew.staffManagementServer.domain.entity; +import com.apkrew.staffManagementServer.domain.enums.RolUsuario; import jakarta.persistence.Entity; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; @@ -21,7 +22,8 @@ public class Usuario extends Base { private String email; private String password; + private RolUsuario rol; @ManyToOne - private Rol rol; + private Persona persona; } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/enums/RolUsuario.java b/src/main/java/com/apkrew/staffManagementServer/domain/enums/RolUsuario.java new file mode 100644 index 0000000..4186c61 --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/enums/RolUsuario.java @@ -0,0 +1,5 @@ +package com.apkrew.staffManagementServer.domain.enums; + +public enum RolUsuario { + ADMINISTRATIVO, MOZO, COCINERO, CLIENTE +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/EmpleadoRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/EmpleadoRepository.java new file mode 100644 index 0000000..93b54eb --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/repository/EmpleadoRepository.java @@ -0,0 +1,10 @@ +package com.apkrew.staffManagementServer.domain.repository; + +import com.apkrew.staffManagementServer.domain.entity.Empleado; +import org.springframework.stereotype.Repository; + +@Repository +public interface EmpleadoRepository extends BaseRepository { + boolean existsByDniAndEliminadoFalse(String dni); + Empleado findByDniAndEliminadoFalse(String dni); +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/repository/PersonaRepository.java b/src/main/java/com/apkrew/staffManagementServer/domain/repository/PersonaRepository.java deleted file mode 100644 index c6d0571..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/repository/PersonaRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.apkrew.staffManagementServer.domain.repository; - - -import com.apkrew.staffManagementServer.domain.entity.Persona; -import org.springframework.stereotype.Repository; - -@Repository -public interface PersonaRepository extends BaseRepository{ - boolean existsByDniAndEliminadoFalse(String dni); - boolean existsByEmailAndEliminadoFalse(String email); - boolean existsByUsuarioIdAndEliminadoFalse(String usuarioId); - Persona findByDniAndEliminadoFalse(String dni); - Persona findByEmailAndEliminadoFalse(String email); -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java index e1221db..a7d3706 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/DocumentacionServiceImpl.java @@ -67,7 +67,6 @@ public boolean validar(Documentacion documentacion, String caso) throws Exceptio public Documentacion crearDocumentacion(TipoDocumentacion tipoDocumentacion, String observacion, MultipartFile archivo) throws ErrorServiceException { try { Documentacion documentacion = new Documentacion(); - documentacion.setId(UUID.randomUUID().toString()); String nombreOriginal = archivo.getOriginalFilename(); documentacion.setNombreArchivo(nombreOriginal); String nuevoNombre = UUID.randomUUID().toString() + nombreOriginal.substring(nombreOriginal.lastIndexOf(".")); @@ -86,6 +85,7 @@ public Documentacion crearDocumentacion(TipoDocumentacion tipoDocumentacion, Str } catch (ErrorServiceException ex) { throw ex; } catch (Exception ex) { + ex.printStackTrace(); throw new ErrorServiceException("Error de sistemas"); } } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoService.java new file mode 100644 index 0000000..818cead --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoService.java @@ -0,0 +1,10 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.dto.EmpleadoRequestDTO; +import com.apkrew.staffManagementServer.domain.entity.Empleado; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import org.springframework.web.multipart.MultipartFile; + +public interface EmpleadoService extends BaseService { + Empleado crearEmpleado(EmpleadoRequestDTO dto, MultipartFile foto) throws ErrorServiceException; +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoServiceImpl.java new file mode 100644 index 0000000..d84d69f --- /dev/null +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/EmpleadoServiceImpl.java @@ -0,0 +1,150 @@ +package com.apkrew.staffManagementServer.domain.service; + +import com.apkrew.staffManagementServer.domain.dto.EmpleadoRequestDTO; +import com.apkrew.staffManagementServer.domain.entity.*; +import com.apkrew.staffManagementServer.domain.enums.TipoImagen; +import com.apkrew.staffManagementServer.domain.repository.BaseRepository; +import com.apkrew.staffManagementServer.domain.repository.EmpleadoRepository; +import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; +import jakarta.transaction.Transactional; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +@Service +public class EmpleadoServiceImpl extends BaseServiceImpl implements EmpleadoService { + + private final EmpleadoRepository empleadoRepository; + private final UsuarioServiceImpl usuarioService; + private final LocalidadServiceImpl localidadService; + private final DireccionServiceImpl direccionService; + private final ImageServiceImpl imageService; + + public EmpleadoServiceImpl(BaseRepository baseRepository, + EmpleadoRepository empleadoRepository, + UsuarioServiceImpl usuarioService, + LocalidadServiceImpl localidadService, + DireccionServiceImpl direccionService, + ImageServiceImpl imageService) { + super(baseRepository); + this.empleadoRepository = empleadoRepository; + this.usuarioService = usuarioService; + this.localidadService = localidadService; + this.direccionService = direccionService; + this.imageService = imageService; + } + + @Override + @Transactional + public Empleado crearEmpleado(EmpleadoRequestDTO dto, MultipartFile foto) throws ErrorServiceException { + try { + Localidad localidad = localidadService.findById(dto.getLocalidadId()); + + Direccion direccion = new Direccion(); + direccion.setCalle(dto.getCalle()); + direccion.setNumeracion(dto.getNumeracion()); + direccion.setBarrio(dto.getBarrio()); + direccion.setManzanaPiso(dto.getManzanaPiso()); + direccion.setCasaDepartamento(dto.getCasaDepartamento()); + direccion.setReferencia(dto.getReferencia()); + direccion.setLocalidad(localidad); + direccion = direccionService.save(direccion); + + Imagen imagen = new Imagen(); + imagen.setNombre(foto.getOriginalFilename()); + imagen.setMime(foto.getContentType()); + imagen.setContenido(foto.getBytes()); + imagen.setTipoImagen(TipoImagen.PERSONA); + imagen = imageService.save(imagen); + + Empleado empleado = new Empleado(); + empleado.setNombre(dto.getNombre()); + empleado.setApellido(dto.getApellido()); + empleado.setTipoDocumentacion(dto.getTipoDocumentacion()); + empleado.setDni(dto.getDni()); + empleado.setFechaNacimiento(dto.getFechaNacimiento()); + empleado.setTipoEmpleado(dto.getTipoEmpleado()); + empleado.setDireccion(direccion); + empleado.setImagen(imagen); + + validar(empleado, "SAVE"); + empleado = empleadoRepository.save(empleado); + + Usuario usuario = new Usuario(); + usuario.setEmail(dto.getEmail()); + usuario.setPassword(dto.getPassword()); + usuario.setRol(dto.getRol()); + usuario.setPersona(empleado); + usuarioService.save(usuario); + + return empleado; + + } catch (IOException e) { + throw new ErrorServiceException("Error procesando la imagen."); + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas en empleado"); + } + } + + @Override + public boolean validar(Empleado entity, String caso) throws Exception { + try { + if (entity == null) { + throw new ErrorServiceException("El empleado no puede ser nulo"); + } + + if (entity.getNombre() == null || entity.getNombre().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el nombre"); + } + + if (entity.getApellido() == null || entity.getApellido().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el apellido"); + } + + if (entity.getTipoDocumentacion() == null) { + throw new ErrorServiceException("Debe indicar el tipo de documentación"); + } + + if (entity.getDni() == null || entity.getDni().trim().isEmpty()) { + throw new ErrorServiceException("Debe indicar el DNI"); + } + + if (entity.getFechaNacimiento() == null) { + throw new ErrorServiceException("Debe indicar la fecha de nacimiento"); + } + + if (entity.getTipoEmpleado() == null) { + throw new ErrorServiceException("Debe indicar el tipo de empleado"); + } + + if (entity.getDireccion() == null || entity.getDireccion().getId() == null) { + throw new ErrorServiceException("Debe indicar la dirección"); + } + + if (entity.getImagen() == null || entity.getImagen().getId() == null) { + throw new ErrorServiceException("Debe indicar la imagen"); + } + + if (caso.equals("SAVE")) { + if (empleadoRepository.existsByDniAndEliminadoFalse(entity.getDni())) { + throw new ErrorServiceException("Ya existe un empleado con ese DNI"); + } + } else { + Empleado byDni = empleadoRepository.findByDniAndEliminadoFalse(entity.getDni()); + if (byDni != null && !byDni.getId().equals(entity.getId())) { + throw new ErrorServiceException("Ya existe un empleado con ese DNI"); + } + } + + return true; + + } catch (ErrorServiceException ex) { + throw ex; + } catch (Exception ex) { + throw new ErrorServiceException("Error de sistemas"); + } + } +} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java index 413d382..7e9dcc0 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/JustificacionServiceImpl.java @@ -10,7 +10,6 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.util.UUID; @Service public class JustificacionServiceImpl extends BaseServiceImpl implements JustificacionService { @@ -37,15 +36,16 @@ public Justificacion crearJustificacion(String registroHorarioId, TipoDocumentac RegistroHorario registroHorario = registroHorarioService.findById(registroHorarioId); Justificacion justificacion = new Justificacion(); - justificacion.setId(UUID.randomUUID().toString()); justificacion.setDocumentacion(documentacion); justificacion.setRegistroHorario(registroHorario); validar(justificacion, "SAVE"); return justificacionRepository.save(justificacion); } catch (ErrorServiceException ex) { + ex.printStackTrace(); throw ex; } catch (Exception ex) { + ex.printStackTrace(); throw new ErrorServiceException("Error de sistemas"); } } diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaService.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaService.java deleted file mode 100644 index d12f366..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaService.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.apkrew.staffManagementServer.domain.service; - -import com.apkrew.staffManagementServer.domain.entity.Persona; - -public interface PersonaService extends BaseService{ -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaServiceImpl.java deleted file mode 100644 index f2b60bc..0000000 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/PersonaServiceImpl.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.apkrew.staffManagementServer.domain.service; - -import com.apkrew.staffManagementServer.domain.entity.Persona; -import com.apkrew.staffManagementServer.domain.repository.BaseRepository; -import com.apkrew.staffManagementServer.domain.repository.PersonaRepository; -import com.apkrew.staffManagementServer.exceptions.ErrorServiceException; -import org.springframework.stereotype.Service; - -@Service -public class PersonaServiceImpl extends BaseServiceImpl implements PersonaService{ - - private PersonaRepository personaRepository; - - public PersonaServiceImpl(BaseRepository baseRepository, PersonaRepository personaRepository){ - super(baseRepository); - this.personaRepository = personaRepository; - } - - @Override - public boolean validar(Persona entity, String caso) throws Exception { - - try { - if (entity.getNombre() == null || entity.getNombre().trim().isEmpty()) { - throw new ErrorServiceException("Debe indicar el nombre"); - } - - if (entity.getApellido() == null || entity.getApellido().trim().isEmpty()) { - throw new ErrorServiceException("Debe indicar el apellido"); - } - - if (entity.getDni() == null || entity.getDni().trim().isEmpty()) { - throw new ErrorServiceException("Debe indicar el DNI"); - } - - if (entity.getEmail() == null || entity.getEmail().trim().isEmpty()) { - throw new ErrorServiceException("Debe indicar el email"); - } - - if (entity.getFechaNacimiento() == null) { - throw new ErrorServiceException("Debe indicar la fecha de nacimiento"); - } - - if (entity.getUsuario() == null || entity.getUsuario().getId() == null) { - throw new ErrorServiceException("Debe indicar el usuario"); - } - - if (caso.equals("SAVE")) { - - if (personaRepository.existsByDniAndEliminadoFalse(entity.getDni())) { - throw new ErrorServiceException("Ya existe una persona con ese DNI"); - } - - if (personaRepository.existsByEmailAndEliminadoFalse(entity.getEmail())) { - throw new ErrorServiceException("Ya existe una persona con ese email"); - } - - } else { - - Persona persona = personaRepository - .findByDniAndEliminadoFalse(entity.getDni()); - - if (persona != null && !persona.getId().equals(entity.getId())) { - throw new Exception("Ya existe una persona con ese DNI"); - } - - Persona personaEmail = personaRepository - .findByEmailAndEliminadoFalse(entity.getEmail()); - - if (personaEmail != null && !personaEmail.getId().equals(entity.getId())) { - throw new Exception("Ya existe una persona con ese email"); - } - } - - return true; - - }catch (ErrorServiceException ex) { - throw ex; - } catch (Exception ex) { - throw new ErrorServiceException("Error de sistemas"); - } - } -} diff --git a/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioServiceImpl.java b/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioServiceImpl.java index 45b8fe6..9174739 100644 --- a/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioServiceImpl.java +++ b/src/main/java/com/apkrew/staffManagementServer/domain/service/UsuarioServiceImpl.java @@ -51,6 +51,10 @@ public boolean validar(Usuario entity, String caso) throws Exception { throw new ErrorServiceException("Debe indicar el nombre"); } + if (entity.getPersona() == null) { + throw new ErrorServiceException("Debe indicar una persona asociada"); + } + if (caso.equals("SAVE")) { if (usuarioRepository.existsByEmailAndEliminadoFalse(entity.getEmail())) { throw new ErrorServiceException("El usuario ya existe en el sistema"); diff --git a/src/main/java/com/apkrew/staffManagementServer/seguridad/CustomUserDetailsService.java b/src/main/java/com/apkrew/staffManagementServer/seguridad/CustomUserDetailsService.java index 5453c91..905d0c7 100644 --- a/src/main/java/com/apkrew/staffManagementServer/seguridad/CustomUserDetailsService.java +++ b/src/main/java/com/apkrew/staffManagementServer/seguridad/CustomUserDetailsService.java @@ -24,7 +24,7 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx try { var user = userService.searchByEmail(username); List permisos = new ArrayList(); - GrantedAuthority p = new SimpleGrantedAuthority("ROLE_" + user.getRol().getNombre().toString()); + GrantedAuthority p = new SimpleGrantedAuthority("ROLE_" + user.getRol().toString()); permisos.add(p); return UserPrincipal.builder() .userId(user.getId())