Code test: Aplicación Almacén de restaurantes
PHP 7.4
Mysql 8.0
Laravel 8
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.
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.
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
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.
- 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.
id: 1 | role_id: 1 | name: Admin | lastname: Admin | email: [email protected] | password: 12345678
- 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.
- 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.
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)
Para el correcto funcionamiento de la aplicación es necesario seguir los siguientes pasos:
Para descargar el repositorio es necesario introducir el siguiente comando en el terminal (teniendo intalado git)
$ git clone https://github.com/javierfg410/restaurantes.git
Para ello usaremos el siguiente comando de Composer
$ composer install
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=
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"
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
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
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