El siguiente proyecto consiste en desarrollar un sitio web completo para la Automotora VIP. El trabajo se separará en 3 partes:
-
Sección privada (admin): Solamente los usuarios autenticados podrán crear, editar y modificar autos y marcas.
-
Sección pública: Sitio público al visitante, donde se puede buscar autos por año, marca, modelo o texto, así como reservar un auto, o conocer acerca de la empresa.
-
API (REST) para ser consumida por una aplicación externa.
A continuación se detallan aquellas rutas privadas:
Método | Ruta | Controlador@función | Descripción |
---|---|---|---|
GET | /admin/autos | AdminCarController@index | Mostrar listado de autos |
GET | /admin/autos/crear | AdminCarController@create | Mostrar formulario para crear auto |
POST | /admin/autos/crear | AdminCarController@store | Crear un nuevo auto |
GET | /admin/autos/{id} | AdminCarController@edit | Mostrar formulario para editar un auto |
POST | /admin/autos/{id}/editar | AdminCarController@update | Editar un auto |
GET | /admin/autos/{id}/eliminar | AdminCarController@delete | Eliminar un auto |
GET | /admin/marcas | BrandController@adminList | Mostrar listado de marcas |
GET | /admin/modelos | ModelController@adminList | Mostrar listado de modelos |
Rutas públicas:
Método | Ruta | Controlador@función | Descripción |
---|---|---|---|
GET | / | PagesController@index | Mostrar pantalla de inicio |
GET | /nosotros | PagesController@aboutUs | Mostrar pantalla de nosotros |
GET | /ventas | CarController@sales | Mostrar pantalla de ventas |
GET | /reservar/{id} | CarController@showReserve | Mostrar pantalla de reserva, con detalle de auto |
POST | /reservar | CarController@reserve | Procesar reserva y enviar mail |
Rutas API:
Método | Ruta | Controlador@función | Descripción |
---|---|---|---|
GET | /autos | CarController@listJson | Listar todos los autos en JSON |
GET | /autos/{id} | CarController@showJson | Listar detalle de un auto en JSON |
GET | /modelos | ModelController@listJson | Listar todos los modelos en JSON |
GET | /marcas | BrandController@listJson | Listar todas las marcas en JSON |
Para instalar el proyecto seguir los siguientes pasos:
-
Utilizar
git clone https://github.com/Hack-UY/PHP_Backend_Proyecto_Final.git
, para descargar el proyecto. -
Instalar dependencias (/vendor) utilizando Composer desde consola. Ejecutar comando:
composer install
. -
Ejecutar
php artisan key:generate
-
Crear una base de datos utilizando phpMyAdmin llamada
HA_Proyecto_Final
(con cotejaminetoutf8mb4_unicode_ci
). -
Revisar archivo .env (en la raíz del proyecto), y asegurarse que el valor de
DB_DATABASE
coincida con el nombre de la base de datos recién creada (HA_Proyecto_Final
). -
Editar los valores de
DB_USERNAME
yDB_PASSWORD
según corresponda de acuerdo al sistema del usuario. Normalmente se utilizaDB_USERNAME=root
yDB_PASSWORD=(vacío)
. -
Installar el paquete Laravel Debugbar (Buscarlo en Google).
-
Levantar servidor utilizando el comando:
php artisan serve
.
Se incluyen migraciones para crear las tablas de brands
, models
y users
. Para ejecutar estas migraciones:
php artisan migrate
Se incluyen además los siguientes seeds auxiliares que permiten insertar registros de prueba en las tablas de la base de datos:
php artisan db:seed --class=BrandsTableSeeder
(Inserta registros en la tabla brands)
php artisan db:seed --class=ModelsTableSeeder
(Inserta registros en la tabla models)
-
Implementar funcionalidades para la sección Admin del sitio:
- Agregar autenticación (registro y login de usuarios).
- Proteger las rutas que comienzan con
/admin
. - Crear modelo
Car
. - Crear migración para crear la tabla
cars
, la cual debe tener:year, model, price, description, photo, created_at, updated_at
. - Ejecutar seed para rellenar tabla de autos, ejecutando
php artisan db:seed --class=CarsTableSeeder
- Implementar el listado de
cars
, en el Admin. - Implementar ABM (Alta, Baja y Modificación de autos). Recordar que al editar una
car
, si la imagen se modifica hay que eliminar la imagen anterior. - Agregar validacion a los formularios de creación y edición de autos. Todos los campos deben ser requeridos. En caso de algun error en la validación, mostrarlos en pantalla.
-
Implementar funcionalidades para sección pública sitio:
- Implementar las páginas estáticas del sitio:
Home
,About Us
- Implementar la sección ventas
- Listado de autos con paginado.
- Filtrado de autos en pantalla
/ventas
, mantener los filtros en el paginado
- Implementar la reserva de auto
- Mostrar el formulario con el detalle del auto seleccionado
(id)
- Al enviar el formulario, se debe mandar un email con la información de la persona.
- Agregar validación al formulario, todos los campos deben ser requeridos y el campo de E-mail debe cumplir con el formato
ejemplo@email.com
. En caso de algun error en la validación, mostrarlos en pantalla. - Se debe eliminar el auto de forma lógica.
- Mostrar el formulario con el detalle del auto seleccionado
- Implementar las páginas estáticas del sitio:
-
Implementar una API REST:
- Listado de autos. Se debe poder utilizar los mismos filtros que en el buscador de la web.
- Detalle de un auto.
- Listado de Marcas.
- Listado de Modelos.
💪 😄