Se acabaron los tiempos donde las personas simplemente salían de su casa en búsqueda de actividades para hacer, hoy mas que nunca todo se rige por la recomendación, desde la mejor heladería del barrio hasta ese electricista que todos quieren llamar.
Y con las herramientas con las que contamos es que aparece este startup: RANK-IT! El objetivo es tener una herramienta genérica que reúna los rankings de todo tipo!
Para todo esto nos pidieron una absurda cantidad de requerimientos "vitales" para la app y después de varias idas y vueltas llegamos al acuerdo de un plan realista para hacer durante todo el cuatrimestre y abarcando todas las pruebas de concepto que nos solicitaron!
Vamos a dividir la aplicación en 3 componentes, cada componente va a ser 1 TP:
Módulo de administración: Solamente unos pocos de extrema confianza tienen acceso a este módulo, desde acá tiene que ser posible:
Administrar Lugares
Administrar Servicios
Administrar Calificaciones
Administrar Usuarios
RankIt!
Registrar usuario
Logearse en el sistema
Calificar Lugares o Servicios
Ver ranking
Administrar calificaciones hechas
Question the Rank!
Ver ranking
Login
Marcar review como favorita
Debe hacer el desarrollo que considere necesario para poder implementar las siguientes pantallas.
En cada pantalla se aclara las consideraciones especiales para cada una.
Tener en cuenta:
Resumen de situación: en todos los casos los números hacen referencia a la totalidad de objetos independientemente de lo que se esté buscando. Por ejemplo si estamos en el administrador de lugares y buscamos "Sushi", el resumen seguirá mostrando 10 lugares inscriptos (2 habilitados y 8 deshabilitados).
En todos los casos si contamos con información calculada debe refrescarse adecuadamente, por ejemplo si en lugares editamos Freddo y lo volvemos Habilitado, luego de hacer click en el checkbox debe cambiar la cantidad de lugares habilitados y deshabilitados.
En todos los casos es obligatorio definir un nombre (para usuarios, lugares o servicios)
En el menú se muestra cantidad de activos / cantidad total en todo lo administrable (en los usuarios se adicionan los baneados entre paréntesis)
ATENCIÓN: En donde dice publicaciones, debería decir calificaciones
Administración de Lugares
Fe de erratas: en la siguiente pantalla en donde dice "Servicios" debería decir "Lugares"
Administracion de Servicios
Administracion de Calificaciones
Administraciones de Usuarios
Menu
Dominio del problema, en un proyecto denominado: rankit-dominio
El Dominio debe de estar diseñado orientado a objetos usando los conceptos vistos durante la carrera
Debe contarse con tests unitarios, siendo recomendado desarrollar usando TDD
Es obligatorio que el dominio refleje lo necesario para que todas las vistas sean implementables
Interfaz de usuario desarrollada usando el framework Arena, en un proyecto denominado: rankit_administrador-desktop
Debe seguir los conceptos vistos en la materia
Se hace principal foco en: correcta separación de responsabilidades y evitar lógica duplicada
No se admite lógica de negocio en la vista ==> en caso de no cumplir con la consigna el tp estará inmediatamente desaprobado
No se admite lógica de presentación en el dominio ==> en caso de no cumplir con la consigna el tp estará inmediatamente desaprobado
NOTA: Referencia de códigos de error y sus significados: http://www.restapitutorial.com/httpstatuscodes.html
En todos los casos, ante errores inesperados debe devolverse error 500 (internal server error), y en los casos que requieran autenticación 403 si no está presente el ID del usuario en el header.
Deben desarrollarse los siguientes servicios:
NOTA: El único sevicio opcional es el de registraciones (por PUT)
Pantallas
Las pantallas deben de permitir:
Registrar usuario
Logearse en el sistema
Calificar Lugares o Servicios
Ver ranking
Administrar calificaciones hechas
Las pantallas deben permitir:
Registrarse
Ver todas las calificaciones que hizo el usuario
Buscar una calificación
Ver el detalle de la calificación
Editar la calificación
Bonus!!
Crear una pantalla para crear una calificación
Poder eliminar una calificación