Skip to content

illoquehambre/KiloApi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

KiloApi

API REST con SPRING - Proyecto de prácticas para estudiantes de 2ºDAM.

Spring Logo


Documentación

👉 Dirección SWAGGER-IO

👉 Se incluye también una colección de Postman para probar datos.

Introducción 💬

Este es un ejercicio práctico para el desarrollo de una API REST en lenguaje Java y manejando diferentes tecnologías en la que destaca Spring.

También se ha prácticado el manejo de PostMan, Swagger y la metodología ágil SCRUM para el reparto de tareas a través la ramificación de estas con GitHub.

El proyecto trata de realizar una API REST para la gestión de una operación de recaudación de donaciones de alimentos de un colegio, el control y gestión de esos alimentos, el reparto y gestión de los destinatarios. Además podrá incorporar un ranking para conocer cuáles han sido las clases más solidarias del colegio.

Se pueden realizar las siguientes funcionalidades: :point_right:

  • Listado de CLASES

  • Busqueda de una CLASE buscada por su id

  • Creación de una nueva CLASE

  • Edición de una CLASE

  • Borrado de una CLASE

  • Listado de los diferentes TIPOS DE ALIMENTO

  • Búsqueda de un TIPO DE ALIMENTO por su id

  • Creación de un nuevo TIPO DE ALIMENTO

  • Edición de un TIPO DE ALIMEMTO

  • Borrado de un TIPO DE ALIMENTO

  • Listado de todas las APORTACIONES

  • Listado de las APORTACIONES de una determinada clase localizada por su id

  • Búsqueda de una APORTACIÓN buscada por su id

  • Creación de un nueva APORTACIÓN

  • Edición de un TIPO DE ALIMEMTO

  • Borrado de una APORTACIÓN localizada por su id

  • Borrado de un DETALLE DE UNA APORTACIÓN localizado por su id

  • Listado del total de KILOS DISPONIBLES de todos los alimentos

  • Listado de los KILOS DISPONIBLES de un tipo de alimento

  • RANKING de solidaridad de las clases medido por sus aportaciones

  • Listado de todos los DESTINATARIOS

  • Búsqueda general de un DESTINATARIO por su id

  • Búsqueda de los detalles de un DESTINATARIO por su id

  • Creación de un nuevo DESTINATARIO

  • Edición de un DESTINATARIO

  • Borrado de un DESTINATARIO buscado por su id

  • Listado general de CAJAS

  • Búsqueda de una CAJA por su id

  • Creación de una nueva CAJA

  • Edición de los datos generales de una CAJA

  • Edición del contenido de una CAJA

  • Borrado de una CAJA

  • Borrado de un TIPO DE ALIMENTO de una CAJA

  • Creación de una CAJA asiganda a un DESTINATARIO


Tecnologías utilizadas

Para realizar este proyecto hemos utilizado:

  1. Spring Boot 2.7.5 - Dependencias: Spring-Web, JPA-HIBERNATE, H2 Database, Sprin-doc Open-api, Lombok
  2. Apache Maven 3.8.6
  3. Postman
  4. GitHub
  5. springdoc 1.6.13
  6. Swagger

Ejemplos del Código Usado:

JAVA:

    @DeleteMapping("/{id}")
    public ResponseEntity<?> deleteAportacion(
            @Parameter(description = "Id de la aportación de la que quiere borrar", name = "id", required = true)
            @PathVariable Long id) {
        if (aportacionService.findById(id).isPresent()) {
            Aportacion aportacion = aportacionService.findById(id).get();
            if (aportacionService.findById(id).get().getDetalleAportacionList().isEmpty())
                aportacionService.deleteById(id);
            else {
                Iterator<DetalleAportacion> aux = aportacion.getDetalleAportacionList().iterator();
                while (aux.hasNext()) {
                    DetalleAportacion detalle = aux.next();
                    TipoAlimento tipoAlimento = tipoAlimentoService.findById(detalle.getTipoAlimento().getId()).get();
                    double cantidadDisponible = tipoAlimento.getKilosDisponibles().getCantidadDisponible();
                    if (detalle.getCantidadEnKilos() <= cantidadDisponible)
                        tipoAlimento.getKilosDisponibles().setCantidadDisponible(cantidadDisponible - detalle.getCantidadEnKilos());
                    aux.remove();
                }
                if (aportacion.getDetalleAportacionList().isEmpty())
                    aportacionService.deleteById(id);
            }
        }

        return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
    }

Documentación

    @Operation(summary = "Este método lista todas las aportaciones")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200",
                    description = "Se han encontrado al menos una aportación",
                    content = { @Content(mediaType = "application/json",
                            array = @ArraySchema(schema = @Schema(implementation = AportacionListResponse.class)),
                            examples = {@ExampleObject(
                                    value = """
                                            [
                                                {
                                                    "fecha": "2022-12-21",
                                                    "nombreClase": "2ºDAM",
                                                    "kilosTotales": 7.0
                                                },
                                                {
                                                    "fecha": "2022-12-21",
                                                    "nombreClase": "1ºDAM",
                                                    "kilosTotales": 5.0
                                                }
                                            ]
                                            """
                            )}
                    )}),
            @ApiResponse(responseCode = "404",
                    description = "No se ha encontrado ninguna aportación",
                    content = @Content),
    })

Arranque

Realiza un git clone de la siguiente dirección: https://github.com/illoquehambre/KiloApi

git clone https://github.com/illoquehambre/KiloApi.git

Dirígete hasta la carpeta:

cd ./KiloApi/

Primero tienes que tener instalado Apache Maven y sería recomendable tener alguna IDE, como Intellij IDEA o VisualStudio Code

Ejecuta el siguiente comando:

mvn complile

Ejecuta el siguiente comando:

mvn clean

Ejecuta el comando:

mvn spring-boot:run

Si diese algún error, realiza el siguiente comando:

mvn dependencies:resolve
---> 100% 

Autores

Este proyecto ha sido realizado por:

Estudiantes de 2º Desarrollo de Aplicaciones Multiplataforma, grado superior de formación profesional en la ciudad de Sevilla, España.

Thump up 👍 And if it was useful for you, star it! ⭐ 😃


TODO

Tareas realizadas y cosas por hacer.

[ ] Fix possible future errors


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages