Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/

.claude
CLAUDE.md
### STS ###
.apt_generated
.classpath
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Documentacion, DocumentacionServiceImpl>{
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.\"}");
}
}
}
Original file line number Diff line number Diff line change
@@ -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<Empleado, EmpleadoServiceImpl> {

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.\"}");
}
}
}
Original file line number Diff line number Diff line change
@@ -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<Justificacion, JustificacionServiceImpl> {

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.\"}");
}
}
}
Original file line number Diff line number Diff line change
@@ -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<RegistroHorario, RegistroHorarioServiceImpl>{
public RegistroHorarioController(RegistroHorarioServiceImpl service) {
super(service);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -0,0 +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;
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.apkrew.staffManagementServer.domain.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.ManyToOne;
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 {
@ManyToOne
private Documentacion documentacion;
@ManyToOne
private RegistroHorario registroHorario;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ public class Localidad extends Base {
private String nombre;
@ManyToOne
private Departamento departamento;
private String codigoPostal;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -15,13 +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;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
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;
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;
@ManyToOne
private Empleado empleado;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.apkrew.staffManagementServer.domain.enums;

public enum EstadoRegistroHorario {
AUSENTE,
PRESENTE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.apkrew.staffManagementServer.domain.enums;

public enum RolUsuario {
ADMINISTRATIVO, MOZO, COCINERO, CLIENTE
}
Loading
Loading