/PruebaTecnica

Prueba tecnica para la creacion de servicios para Clever Business de control de ingresos y egresos de personal por sucursal.

Primary LanguageJava

Desafío Técnico - BeClever

La empresa Clever Business cuenta con 3 sucursales distribuidas en diferentes países: Argentina, Brasil y España. En el último tiempo está teniendo problemas para el control del personal que ingresa y egresa día a día en sus instalaciones, por lo que decide contratar un sistema el cual le permita tener un control total del ingreso/egresos. Para esto la empresa decide contratar tus servicios. Como encargado del desarrollo tu misión es crear una capa de servicios (API REST) que puedan ser consumidos por las diferentes plataformas que cuenta Clever Business (Mobile-Web).

Pre-requisitos 📋

*IDE Apache Netbeans version 17

*JDK version 17

*MySQL Server 8.0.32

*MySQL Workbennch 8.0.32

*Connector/J version 8.0.32

*Postman

*Visual Studio Code

Comenzando 🚀

*Crear Base de Datos con los siguientes datos Hostname: localhost puerto: 3307 Contraseña: beclever

Agregar un nuevo Schema con el nombre a gusto y setear como Default o ejecutar el Query "use [nombre Schema elegido].

Ejecutar Script del repositorio github Base de datos-MySQL.

Create-DB.png

*El proyecto esta creado con Spring Initializr Projet: Maven, Language: java, Spring Boot 3.0.4 con packaging: War Java: version 17

springinit.png

Instalación 🔧

*Clonar Repositorio y abrir el poyecto Maven con Apache NetBeans directorio "Back-End", al abrir esperar que se descarguen todos los complementos para el build

Abrirmaven.png

*Luego de abrir el proyecto asegurarnos que el Datasource contenga los siguientes datos de conexion con la base de datos:

aplication.png

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3307/beclever?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=beclever
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

*Luego de lo anterior iniciar Springboot Run desde el Navigator y asegurarnos que haya compilado el proyecto con la leyenda : Tomcat started on port(s): 8080 (http) with context path ''

iniciacionspringboot.png

Solicitudes en Postman para Test EndPoint API🔩

Con el Proyecto en ejecucion en nuestro IDE Apache Netbeans, abrimos Postman y vamos a generar las siguientes solicitudes Http para la prueba de los endpoint de la API

Solicitud Tipo GET para obtener lista de empleados:

http://localhost:8080/employees/employeeList

Resultado ejemplo: get-lista-empleados.png

Solicitud Tipo GET para consultar un empleado por ID (numero del final de la cadena es el id del empleado a consultar):

http://localhost:8080/employees/10

Resultado ejemplo: consulta-empleado-id.png

Solicitud Tipo POST para Grabar un empleado pasando los parametros necesarios en Body, Raw, Json

http://localhost:8080/employees/save
    {
        "gender": "Masculino",
        "first_name": "Cristian",
        "last_name": "Albarracin"
    }

Resultado ejemplo: grabarempleado.png

Solicitud Tipo GET para obtener lista de Registros:

http://localhost:8080/registrations/registersList

Resultado ejemplo: listaderegistros.png

Solicitud Tipo PUT para modificar un empleado pasando los parametros necesarios en Body, Raw, Json

http://localhost:8080/employees/upDateEmployee
{
    "gender": "Masculino",
    "employee_Id": 11,
    "first_name": "Cristian B.",
    "last_name": "Albarracin"
}

Resultado ejemplo: modificaempleado.png

Solicitud Tipo GET para consultar un registro por ID (numero del final de la cadena es el id del registro a consultar):

http://localhost:8080/registrations/30

Resultado ejemplo: consultaregid.png

Solicitud Tipo GET para obtener el promedio de Registros por fecha (pasar parametros como muestra la imagen):

http://localhost:8080/registrations/average?dateFrom=2023-01-01&dateTo=2023-12-31

Resultado ejemplo: promregfecha.png

Solicitud Tipo POST para Grabar un registro pasando los parametros necesarios en Body, Raw, Json

http://localhost:8080/registrations/register
{
    "employee": {
        "gender": "Masculino",
        "employee_Id": 11,
        "first_name": "Cristian Bartolome",
        "last_name": "Albarracin"
    },
    "date": "2023-03-21T03:00:00.000+00:00",
    "registerType": "ingreso",
    "businessLocation": "Argentina"
}

Resultado ejemplo: grabarregistro.png

Solicitud Tipo PUT para modificar un registro pasando los parametros necesarios en Body, Raw, Json

http://localhost:8080/registrations/upDateRegistration
{
    "employee": {
        "gender": "Masculino",
        "employee_Id": 11,
        "first_name": "Cristian B.",
        "last_name": "Albarracin"
    },
    "date": "2023-03-21T03:00:00.000+00:00",
    "registerType": "egreso",
    "businessLocation": "Argentina",
    "registration_Id": 31
}

Resultado ejemplo: modificaregistro.png

Solicitud Tipo GET para obtener la cantidad de ingresos y egresos por fecha desde hasta con filtro sucursal nombre o apellido (pasar parametros como muestra la imagen):

http://localhost:8080/registrations/search?dateFrom=2023-01-01&dateTo=2023-12-31&descriptionFilter=&businessLocation=España

Resultado ejemplo: cantingegrfecha.png

Gracias por la oportunidad del desafio