Condiciones del TP //esto ya lo dijimos en clase pero siempre viene bien recordarlo
El trabajo práctico se resuelve en grupos de 2 o 3 personas y se divide en 4 entregas (Arena, Angular, Wicket, Android) y cada una puede tener una o mas pre-entregas.Cada pre-entrega cuenta su nota de forma conceptual, esto ayuda a redondear sus notas a fin de cuatrimestre.
La entrega del trabajo práctico se realiza durante la clase: deben estar presentes todos los integrantes del grupo y contar con una pc (pueden usar las computadoras del laboratorio o bien usar sus maquinas personales) con el entorno instalado y el programa en estado ejecutable el día de la entrega.
Es obligatorio usar una herramienta de versionado de código, donde debe estar el desarrollo de todo el tp accesible tanto para los miembros del grupo como para los docentes de la materia. El grupo puede elegir que herramienta de versionado va a usar para resolver el trabajo práctico.
Les recomendamos que realicen el tp de forma incremental y desde la primer clase, no traten de dejarlo para ultimo momento porque lo mas probable es que no logren codificarlo siguiendo los conceptos de la materia y por ser interfaces una materia rodeada de "complejidades accidentales" derivadas de las tecnologías que usamos mientras antes nos encontremos con todos los inconvenientes que les pueden llegar a pasar mejor
Nos contaron hace tiempo de un problema que parece repetirse con frecuencia... llega el cumpleaños de alguien y todos tienen intenciones de regalarle algo y nadie lo regala o en el mejor de los casos... siempre se hace cargo la misma persona con lo que termina por aburrirse y es muy probable que no reciba regalo para su propio cumpleaños!
Entonces... para resolver todos esos gravísimos problemas es que vamos a ocuparnos de organizar todo con una única idea: Que cada uno reciba su regalo.
La idea en la que nos vamos a basar para resolver la situación es la de que cada uno le regala únicamente a una sola persona en todo el año, de esta forma es mas sencillo de planificar los regalos.
Para hacer la asignación de la forma mas equitativa (y menos problemática) posible nos vamos a basar en un sorteo, luego los resultados del sorteo van a estar disponibles de distintas formas.
El sorteo tiene reglas, algunas son configurables y otras son obligarias:
Asimismo no todas las personas que están inscriptas en el sorteo participan del juego, con lo que si alguien no participa NO hay que asignarle alguien para reglar (ni es regalado por nadie).
Parte de la gracia del juego es que sea anónimo para casi todos (menos el encargado de verificar que todo marche sobre rieles), por lo que para facilitarle la vida vamos a necesitar poder ver la información de los resultados del sorteo de distintas formas.
Para este tp es necesario codificar todo aquello que sea necesario para realizar las acciones que se muestran en las vistas siguiendo con las reglas del sorteo.
Es necesario que se cuenten con tests unitarios de la aplicación.
Las pantallas que codifiquen DEBEN de ser representaciones de los mockups que se muestran en la sección pantallas. CUALQUIER modificación (que no sea de layouts) debe de ser consultada con los docentes.
Aclaración: Cuando hablamos de tests unitarios no hablamos de un porcentaje de cobertura específico, pero SI es necesario testear las principales funcionalidades del sistema: la realización del sorteo principalmente con sus variantes. Si tienen dudas consulten en clase sobre qué testear y de que forma, NO es recomendable abusar de los frameworks de mockeo de objetos (de hecho, por ser un dominio simple que no posee interacciones fuera del ambiente es muy poco probable que se requiera de estas herramientas en absoluto).
Les recomendamos codificar las pantallas en el siguiente orden:
No les recomendamos dividirse las pantallas por integrante de grupo, si realizar mucho pair programing, especialmente en este tp donde cada pantalla tiene distinto grado de complejidad y muestra distintos conceptos de la materia.
Pantalla de inicio
El objetivo de esta pantalla es poder realizar las distintas acciones y navegar entre ellas.
En esta pantalla básicamente podemos ir hacia tres pantallas clickeando cada uno de los botones:
Esta ventana nunca debe cerrarse ya que sirve para navegar entre las distintas vistas.
Calendario de Cumpleaños
El objetivo de esta vista es la de poder tener un panorama general de los cumpleaños del año, acá se muestra toda la información agrupada mes a mes de las personas que cumplen años, no nos da información de quien es el responsable de realizar el regalo.
Editar
Desde esta vista podemos modificar (agregar, quitar, editar) la información de los participantes del sorteo.
De cada participante se sabe su nombre, su fecha de nacimiento y si participa o no en el juego.
A su vez y para que sea mas facil de controlar tambien se puede ver por cada persona a quien le toca realizarle el regalo el día de su cumpleaños y quien le debería de regalar. estos ultimos dos datos NO son editables y solo estan disponibles una vez que se realizó el sorteo, antes aparecen en blanco.
Desde esta pantalla se puede:
Próximos Cumpleaños
En esta vista podemos ver los cumpleaños que se vienen en el mes actual, es decir los cumpleaños del mes actual posteriores a la fecha actual.
También es posible preguntar por los cumpleaños de cualquier mes y año futuros.
Se espera que al seleccionar el año o el mes se modifiquen los datos que se ven en la grilla.
Sorteo
Desde esta vista se lleva a cabo el sorteo, al abrirse (si ya hay un resultado) se puede ver por cada participante (que decidió jugar) quien le regala y a quien le regala.
Desde esta vista también se puede "Volver a sortear".
Para realizar el sorteo se tienen en cuenta las personas que indicaron que participaban y aun no han cumplido años.
Si alguien ya cumplió sus años (y no había un resultado previo) no participa, en cambio si sí lo había ese resultado no cambia.Por ejemplo: Leila cumple los años el 17/01 si realizamos el sorteo el primero de marzo por primera vez Leila no participa del juego este año. En cambio si realizamos el sorteo el 5 de enero Leila si participa y si lo volvemos a realizar el 1 de marzo, entonces leila si participa pero no cambia ni quien le regala ni a quien le regala.
Desde esta vista tambien se pueden configurar los parametros del sorteo:
Como tenemos una aplicación de escritorio que resuelve la totalidad de nuestros problemas, ahora nos comentaron que a los usuarios les resulta incomodo tener que instalarse el programa.
Pero como no saben si esto realmente va a funcionar, lo que nos pidieron es que hagamos una prueba para que se puedan tomar métricas e ir adicionando funcionalidad.
Por lo que tenemos que diseñar e implementar una single application moderna que permita:
Se deben implementar los servicios que se detallan a continuación:
No se pueden hacer modificaciones en los datos explicitados en los servicios (enviar mas información que la pedida, etc) sin consultar antes con los docentes de la materia.
Para implementar los servicios vamos a usar como tecnología XRest.
Para la vista es recomendable usar Bootstrap.
Editar Cumpleaños - pantalla de inicio
Realizar Sorteo
Se deben usar los mismos servicios que creamos para la aplicación en Angular:
Se debe realizar usando como xRest como servicios y angular como vista la siguiente pantalla:
NOTA: Pueden reutilizarse los mismos servicios usados para la aplicación Android.