Está en la página 1de 9

Curso​: Software para Telecomunicaciones 2

Evaluación​: Examen parcial


Ciclo​: 2020-1
Grupo​: 1

Consideraciones generales​:
● Equipos de trabajo: 3 alumnos
● Tiempo: 48 horas desde enviado el enunciado
● Nombre del proyecto: exparcialgX
○ Donde X es su número de grupo
○ Debe crear un proyecto desde 0.
● GIT:
○ Debe crear un repositorio en github
○ En el repositorio git deben existir commits de todos los integrantes del grupo.
○ Si un integrante del grupo no tiene commits en el repositorio git o sus datos no son suyos, no
tendrá nota.
● Vista:
○ Thymeleaf
○ Debe usar bootstrap
■ Los archivos bootstrap deben estar en el proyecto, no deben obtenerse de CDN.
● Spring:
○ Spring Boot
○ Spring Data JPA
○ Spring Session con JDBC
○ Spring Security
● Paideia:
○ Debe subir a Paideia su repositorio en Github y en el repositorio debe estar su esquema de
base de datos (con data de prueba) en una carpeta con nombre DBSQL (en la raiz de su
proyecto).

Examen parcial​:
Desarrollar la tienda online de una bodega, incluyendo el esquema de base de datos que soporte toda la
aplicación.

Consideraciones:
● Roles:
○ Invitado
○ Registrado
○ Gestor
○ Administrador

→ Proceso según pantallas.


Tenga en consideración que el usuario invitado no es un rol en sí en el sistema; sino, por el contrario, es
cualquier usuario no registrado que navega en la aplicación.
Consideraciones:
● En todas las ventanas debe aparecer en la esquina superior izquierda el nombre de su bodega
(seleccione un nombre) el cual será un enlace siempre a la lista de productos. Esto no se muestra en
ningún mockup pero debe implementarlo.
● Implemente el cerrar sesión donde corresponda.
● Las contraseñas deben estar hasheadas con bcrypt

1
(a) ​Lista de Productos
La pantalla principal de la aplicación es una lista de los productos que tiene la bodega.

Consideraciones para la página:


● La página debe contar con un buscador en la parte superior:
○ Busca en nombre de producto o código
■ La búsqueda debe ser aproximada, no exacta
● Cada producto debe mostrar:
○ Código del producto
○ Nombre del producto
○ Foto: 135x135px
○ Precio
○ Stock
○ Opción: Ver más
○ Opción: Agregar al carrito
● La lista debe estar paginada si se tienen más de 7 productos (7 productos por página).
○ La lista debe mostrar solo los productos que tienen stock
● En la parte superior debe aparecer:
○ Iniciar sesión (en caso de no estar logueado), o
○ El nombre de usuario (en caso este se encuentre logueado), junto con su carrito de compras y
un botón para ver sus pedidos anteriores.

2
(b) ​Ver más
Si el usuario selecciona ​+Ver más​, debe mostrarle la página de detalle de producto, la cual contiene los
mismo datos del producto en la lista, más la descripción del producto y la foto debe ser de ​160x160px​.

Si el usuario selecciona la opción ​Agregar al carrito​ (en sesión)​, ya sea desde la página principal o la
página de detalle del producto, se debe realizar el siguiente flujo:
1. Si el usuario no está logueado, debe mostrar la ventana para iniciar sesión.
→ Detalle en: ​(c) Iniciar sesión
2. Si el usuario ya está logueado, debe adicionar el producto seleccionado a su carrito de compras.
→ Detalle en:​ (f) Agregar producto al carrito
○ El carrito de compras aparece en la parte superior y debe indicar numéricamente la cantidad de
elementos que tiene el usuario en su carrito de compras.

(c) ​Iniciar sesión


La pantalla de iniciar sesión

Los datos que aparecen son:


● Usuario: se usará el email para ingresar
● Password
● Recordarme: permite mantener la sesión activa por 2 días
3
● Recuperar contraseña: Detalle en ​(d) Recuperar contraseña
● Registrarse: Detalle en ​(e) Registro de usuario

Si falla al ingresar sus credenciales debe mostrarle un aviso “​Usuario o contraseña incorrectos​”.

(d) ​Recuperar contraseña


Al ingresar a la opción de recuperar contraseña, se le debe solicitar el correo al usuario.

Luego que el usuario ingresa su correo y presiona “​Enviar Contraseña​”, el sistema debe enviar un correo al
usuario con una nueva contraseña. La contraseña debe ser un texto aleatorio de 8 caracteres y 2 números.

Luego de enviar el correo, debe mostrar en la misma página “​Se le ha enviado a su correo electrónico su
nueva contraseña​”.

El botón regresar permite volver a la página de iniciar sesión.

(e) ​Registro de usuario


Al ingresar a la opción de registrarse, el usuario puede crearse una cuenta con el rol “​Registrado​”:

Todos los datos solicitados son obligatorios:


● Nombre: Debe validar que no sea vació y debe ser entre 2 y 40 caracteres como máximo

4
● Apellido: Debe validar que no sea vació y debe ser entre 2 y 40 caracteres como máximo
● Dni: Debe validar que no sea vacío, debe ser numérico y debe tener siempre 8 dígitos.
● Correo: Debe validar que no sea vacío y que tenga formato de correo electrónico @pucp.pe o
@pucp.edu.pe
● Contraseña: Debe validar que tenga 8 caracteres como mínimo, 10 como máximo y al menos 2
números.
● Confirmar contraseña: Debe validar que sea igual a la contraseña

En caso algún campo no cumpla las condiciones, debe mostrar la información debajo del campo.

⚠ ​Observación técnica​: para guardar el usuario en la base de datos ​no puede​ utilizar el método ​save()​ del
repositorio. Debe crear un procedimiento almacenado en base de datos que guarde el usuario y desde Spring
debe utilizar ese procedimiento almacenado, pasándole los parámetros. El código del stored procedure debe
colocarlo en la raiz de su repo git (el mismo directorio donde está su base de datos).

(f) ​Agregar producto al carrito


Al agregar un producto al carrito, la cantidad de productos en su carrito debe actualizarse y aparecer en la
parte superior.

Consideraciones para agregar al carrito:


● El usuario solo puede agregar un máximo de 4 unidades por producto. Si trata de agregar una quinta
unidad, debe mostrarle un aviso en la página “​Solo se permiten 4 unidades por producto​”.
● El número que aparece en el carrito de la barra superior, debe ser la cantidad total de unidades por
todos los productos. Por ejemplo, si el usuario ha comprado 3 gaseosas y 2 panes, en el carrito debe
aparecer (5).

5
(g) ​Carrito de compras
Cuando el usuario presiona el ícono del carrito de compras de la barra superior se debe abrir la página de
“Carrito de compras”.

La página carrito de compras debe mostrar una lista ordenada en función del subtotal (Ascendente), no
paginada, de los productos que el usuario ha agregado a su carrito de compras, donde por cada producto se
debe indicar:
● Código del producto
● Nombre del producto
● Precio unitario
● Cantidad agregada al carrito
● Subtotal: precio x cantidad
● Tachito: permite disminuir en 1 la cantidad del producto agregado al carrito. Si la cantidad llega a 0, se
debe eliminar ese producto del carrito.

En la misma página debe mostrarse el ​Total a pagar​, el cual es la suma de todos los subtotales.
Si el usuario selecciona “Proceder a comprar”, debe validar que todos los productos en el carrito de compras
cuenten con stock en la tienda y mostrar la pantalla ​(h) ​Checkout

Si un producto del carrito de compras no tiene el stock que desea el usuario, debe indicarlo con un mensaje
en su ventana de carrito de compras.

6
(h) ​Checkout
Aquí el usuario debe visualizar la cantidad a pagar y un campo para ingresar los datos de su tarjeta de
crédito:

Debe validar los números de la tarjeta de crédito, primero considerando que tenga 16 dígitos y luego
siguiendo la fórmula:
● Quite el último dígito, este será usado como dígito verificador
● Invierta los número
● Multiplique los dígitos en posición impar (1, 3, 5, etc) por 2
● Reste 9 a cualquier número mayor a 9
● Sume los 15 números.
● Realice la operación módulo entre el resultado de la suma y 10. Resultado debe ser igual al dígito
dejado de lado en el primer paso.

Por ejemplo:

Algunos números que puede usar para probar:


● 4716472166908721
● 4556201365423932
● 5223925698183751
● 4913201732796398
● 4913440236210254
● 4026694377574092

Así mismo, debe averiguar para validar solo tarjetas de crédito VISA o MASTERCARD.

7
Una vez validada la tarjeta de crédito, recién se procede a almacenar en base de datos la información de la
compra. Cada compra es considera un pedido, el cual vincula los productos comprados y su cantidad con el
usuario que realizó la compra. Cada pedido tendrá un “número de pedido” el cual sigue el formato:
→ PE<DD><MM><AAAA><AUTOINCREMENTAL>
● PE → Texto literal
● <DD> → Día de la compra
● <MM> → Mes de la compra
● <AAAA> → Año de la compra
● <AUTOINCREMENTAL> → autoincremental del número de pedido anterior del sistema (no del
usuario)

Luego de comprar debe regresar a la lista de productos y mostrar un aviso de compra exitosa.

(i) ​Mis pedidos


Un usuario registrado tiene la opción en la barra superior de ir a la opción de “Mis pedidos”, donde podrá
visualizar una lista de sus pedidos realizados previamente o un mensaje “Todavía no ha realizado pedidos” si
no tiene pedidos. La lista debe empezar por el más reciente.

Por cada pedido se debe mostrar:


● El código de pedido
● Productos por pedido
● Total pagado
● Fecha de compra (DD/MM/AAAA)

La página debe tener un buscador que permite buscar por número de pedido utilizando Java Spring (​no
javascript​).

8
(j) ​Usuario Gestor
Usuario que puede realizar el ​CRUD de productos​:
● Crear producto: Se le debe solicitar (todos son obligatorios con las siguiente validaciones):
○ Nombre del producto (Varchar - máximo 40 caracteres)
○ Descripción (Varchar - máximo 255 caracteres)
○ Precio (Decimal (4,2))
○ Foto (sólo puede ser: png, jpg, jpeg)
○ Stock (Entero, positivo)
● Editar producto:
○ Nombre del producto
○ Descripción
○ Stock
● Borrar producto: Solo se puede borrar un producto que no haya sido comprado por ningún usuario

Así mismo este usuario puede ver estadísticas del sistema:


● Cantidad de compras realizadas
● Total facturado
● Cantidad de productos vendidos
● Producto más vendido
● Producto menos vendido
● Producto más caro
● Usuario que más ha gastado en el sistema

(k) ​Usuario Administrador


Usuario que ya debe existir en el sistema:
● Nombre: admin
● Password: 12345678

Es el encargado de realizar​ CRUD de usuarios gestores​.

Al crear un usuario gestor, debe solicitar:


● Nombre
● Apellido
● Dni
● Correo

Debe aplicar las mismas validaciones que la sección ​(e) ​Registro de usuario​.

La contraseña del usuario gestor se le debe enviar al correo ingresado. La contraseña debe ser un texto
aleatorio de 8 caracteres y 2 números.

También podría gustarte