Skip to content

javierfg410/restaurantes

Repository files navigation

Code test: Aplicación Almacén de restaurantes

Sobre la Aplicacion

Requerimientos

PHP 7.4
Mysql 8.0
Laravel 8

Enunciado

Se requiere crear una api en laravel que resuelva la necesidad de una empresa de publicidad de almacenar distintos datos sobre restaurantes de sus clientes. Para ello cada cliente podrá registrarse en el sistema como usuario con rol ‘customer’, autenticarse, añadir un número ilimitado de restaurantes al sistema con un máximo de 5 fotos por cada restaurante.

ROLES

Campos

  • name: string
  • description: string

Cada ‘role’ puede tener [0 || 1 || n] ‘users’. Los roles se crearán durante la instalación del sistema y no se pueden editar ni eliminar.

Datos iniciales:

id: 1 | name: Admin | description: This user can control everything.

Puede

  • Listar, ver, editar y eliminar todos los usuarios.
  • Listar, ver, editar y eliminar todos los restaurantes.
  • Listar, ver, editar y eliminar todas las imágenes de un restaurante.

No puede

  • Crear usuarios
  • Crear restaurantes
  • Crear imágenes de un restaurante

id: 2 | name: Customer | description: This user only controls their restaurants.

Puede

  • Ver, editar y eliminar solo su usuario.
  • Listar y ver, todos los restaurantes.
  • Listar y ver todas las imágenes de un restaurante.
  • Crear, editar y eliminar sólo sus restaurantes.
  • Crear, editar y eliminar imágenes sólo de sus restaurantes.

No puede

  • Crear usuarios
  • Listar, ver, editar y eliminar usuarios que no sean suyos.
  • Editar y eliminar restaurantes que no sean suyos.
  • Editar y eliminar imágenes de un restaurante que no sea suyo.

USERS

Campos

  • name: string
  • lastname: string
  • email: string
  • password: string

Un usuario se creará mediante un registro. Todos los usuarios registrados tienen rol ‘Customer’ (id:2) obligatoriamente. Solo habrá un usuario de tipo ‘Admin’ (id:1) definido durante la instalación del sistema. Todos los datos son obligatorios y ninguno puede quedar vacío.

Datos iniciales

id: 1 | role_id: 1 | name: Admin | lastname: Admin | email: [email protected] | password: 12345678

RESTAURANTS

Campos

  • name: string
  • address: string
  • town: string
  • country: string

Un usuario puede crear de 0 a N restaurantes y para cada restaurante es obligatorio rellenar todos sus datos.

PICTURES

Campos

  • url: string
  • path: string

Un usuario puede crear de 0 a 5 imágenes por cada restaurante. Las imágenes deben listarse en cada restaurante.

Revisión

La prueba se revisará usando Postman y comprobando los siguientes enlaces:

  • {domain}/auth/register [POST] (register)
  • {domain}/auth/login [POST] (login)
  • {domain}/auth/logout [GET] (logout)
  • {domain}/users [GET] (list)
  • {domain}/users/{user_id} [GET] (show)
  • {domain}/users/{user_id} [PUT] (update)
  • {domain}/users/{user_id} [DELETE] (delete)
  • {domain}/restaurants [GET] (list)
  • {domain}/restaurants [POST] (store)
  • {domain}/restaurants/{restaurant_id} [GET] (show)
  • {domain}/restaurants/{restaurant_id} [PUT] (update)
  • {domain}/restaurants/{irestaurant_id} [DELETE] (delete)
  • {domain}/restaurants/{restaurant_id}/pictures [POST] (store)
  • {domain}/restaurants/{restaurant_id}/pictures/{picture_id} [DELETE] (delete)

Modelo relacional creado para la aplicación

Instalación y puesta a punto

Para el correcto funcionamiento de la aplicación es necesario seguir los siguientes pasos:

Descargar repositorio de GitHub

Para descargar el repositorio es necesario introducir el siguiente comando en el terminal (teniendo intalado git)

$ git clone https://github.com/javierfg410/restaurantes.git

Descargar/instalar las dependencias

Para ello usaremos el siguiente comando de Composer

$ composer install

Configuración de la base de datos

Configuración del archivo .env

Dentro de la carpeta raíz, encontrarás un archivo con el nombre ".env.example", renómbralo a ".env", abre el archivo y comprueba que contiene los siguientes datos

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=restaurantes
DB_USERNAME=root
DB_PASSWORD=

Configuración de la base de datos

Para seguir en este paso es necesario tener instalado servidor de Base de datos (puede valer XAMPP) y crear una base de datos con el nombre "restaurantes"

Migraciones

Para migrar las tablas a la base de datos es necesario volver al terminal y escribir el siguiente comando

$ php artisan migrate

Si la instalación ha sido correcta, podrá ver en la base de datos todas las tablas creadas para el proyecto

Seeding

Para esta aplicación es necesario incluir una serie de datos ("usuario" y "roles") para ello, introduciremos el siguiente comando en el terminal

php artisan db:seed

si la instalación ha sido correcta, podrá ver en las tablas "users", "roles" y "roles_users" los datos que necesitaremos para el proyecto

Laravel Passport

Para poder guardar los tokens mientras se realizan las pruebas, es necesario ejecutar el siguiente comando en el terminal

$ php artisan passport:install

Para generar la key inicial es necesario ejecutar el siguiente comando

$ php artisan key:generate

Una vez terminado estos pasos, la aplicación debería responder correctamente arrancando el servidor con el comando:

$ php artisan serve

About

Code test: Aplicación Almacén de restaurantes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages