Skip to content

TomasBruno1/MoovMe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoovMe

Tp de Prog 2

Para poder registrarse a la aplicación se le pide al usuario que ingrese un nombre, un teléfono y una contraseña, los cuales se le pasan al operador de usuarios. Este verifica que no exista un usuario con el mismo nombre y de ser así lo crea y lo agrega a una lista de usuarios que comienza por default con único administrador. Además al crearse,  el operador de zonas le pasa todas las zonas existentes para poder crear dos HashMaps iguales (puntosPorZona y puntosPorZonaFijos) los cuales tienen como código las zonas y como valor la cantidad de puntos que va a ganar el cliente al usar activos.

Cada usuario tiene un boolean (isAdmin) que inicia como false indicando si este es administrador o no. Al iniciar sesión como administrador el operador de usuarios verifica que isAdmin sea true y además que exista el usuario y la contraseña ingresada sea correcta. Al iniciar como cliente realiza el mismo proceso pero verifica que isAdmin sea false.

Únicamente un administrador tiene la posibilidad de crear nuevos administradores, para esto se le pasa un nombre y una contraseña. Al igual que al crear cualquier usuario se le pasan los datos al operador el cual verifica que no exista nadie con ese nombre y de ser así crea al administrador (isAdmin true) y lo agrega a la lista de usuarios. El administrador también puede eliminar a otros administradores o clientes. En el caso de los administradores se la pasa un nombre y verifica que este usuario sea un administrador, si esto se cumple verifica que este no sea él mismo y que exista por lo menos otro administrador en la lista de usuarios. Para los clientes simplemente se fija que no sea un administrador y lo elimina.

Existen distintas zonas en las que se pueden utilizar los activos y cada una de ellas cuentan con distintas terminales de estacionamiento. Esta lista de terminales por zona puede ser modificada por los administradores. Para crear una terminal se pide ingresar la zona en la que se va a encontrar y el nombre de la misma. El operador de zonas quien cuenta con una lista de las distintas zonas va a verificar que la zona ingresada exista y que esta no tenga ya esta terminal. De ser así se crea la terminal y se agrega a la lista de terminales de la zona. Para eliminarla sigue el mismo procedimiento con la diferencia que se borra de la lista.

Para dar de alta distintos tipos de activos se le pide al administrador que ingrese el nombre de uno. El operador de zonas tiene una lista de los tipos de activos existentes, si el nombre que se le pasa todavía no existe lo agrega a la lista, de lo contrario le indica al administrador que el tipo de activo ingresado ya existe.

Cada zona va a tener lotes de distintos tipos de activos, el administrador es el encargado de comprar estos lotes. Para esto se le pide que ingrese el tipo de activo, la cantidad de activos que desea, la zona y terminal en la que los quiere poner inicialmente, una tarifa de uso por minuto como también los puntos que se le otorgan al cliente al utilizar dicho activo. Primero el operador de zonas confirma que la zona, terminal y tipo de activo ingresados existen, después crea una lista de activos teniendo en cuenta los datos anteriores otorgándole a cada uno de estos un código numérico único. Por último crea un lote con esta lista y también se le establece un código numérico a este para finalmente poder ubicarlo en la terminal indicada.

Cuando un cliente inicia sesión tiene la posibilidad de alquilar un activo, solo se podrá alquilar un activo a la vez y el nombre y código del mismo se mostraran en pantalla. De no estar utilizando ninguno se le va a pedir al usuario que ingrese la zona en la que se encuentra. A continuación se le van a mostrar todas las terminales en dicha zona para que pueda elegir una y ver todos los tipos de activos disponibles en la misma. Una vez que elige el tipo de activo deberá ingresar una hora estimada de devolución y finalmente el activo estará alquilado.

Para mostrarle todos los activos disponibles al cliente se recorren todos los existentes en la terminal ingresada y se ve el estado de disponibilidad de los mismos. Para esto cada activo tiene un estado, disponible o en uso. Cuando un activo esta disponible al pedir el códigoStatus devuelve 1 y en el caso de estar en uso 0. Se va a agregar el nombre de aquellos disponibles a un HashSet para devolverle al cliente.

A la hora de devolver el activo se le va a mostrar al cliente el costo total del alquiler el cual va a depender de la cantidad de minutos que fue utilizado mas una tarifa fija. Después se le va a pedir que ingrese la zona y terminal en la que se encuentra actualmente y el operador de usuarios el cual tiene una lista de descuentos según zona, tipo de activo, puntos mínimos para dicho canje y descuento a realizar, va a ver cuales son los descuentos que podría llegar a aplicar el cliente. Si llegan a existir descuentos aplicables se le va a preguntar si quiere utilizar alguno y en caso de que la respuesta sea positiva se procederá a mostrarle todos los posibles. Cada cliente tiene un descuentoEnUso que inicia como null, una vez que el cliente elige un descuento se le asigna el mismo, muestra en pantalla cual seria el precio total, se le restan los puntos necesarios para realizar el canje y finalmente descuentoEnUso vuelve a null.

Cuando el activo es devuelto se verifica que este se encuentre dentro de la misma zona que la terminal de la que se retiro, si estas no coinciden se bloquea al cliente y el activo vuelve al la terminal de origen. De no ser así se establece que la terminal del activo es la ingresada. Además, cuando el cliente devuelve el activo si la hora actual es igual o menor a la hora de devolución estimada se le van a sumar 20% más de puntos establecidos por el activo al cliente, de no ser así se otorgan los puntos sin ningún beneficio.

Los administradores son los encargados de crear y eliminar los descuentos. Para crearlo se le pide que ingrese una descripción, la cual va a ser la que el cliente ingrese para aplicar dicho descuento, como también una zona, tipo de activo, puntos mínimos para dicho canje y descuento a realizar. El descuento se le van a pasar al operador de usuarios quien lo va a agregar a un HashSet de todos los descuentos disponibles. Para eliminarlo simplemente deberá ingresar la descripción del mismo y el operador de usuarios lo eliminara.

Cuando el cliente utiliza un descuento, los puntos con los que se trabajan son con los puntosPorZona. Mientras que a estos se les pueden sumar puntos al utilizar activos y restar puntos por el uso de descuentos, a los puntosPorZonaFijos solo se le van a sumar los puntos por uso dado que estos van a ser los que mas adelante se van a utilizar para realizar el ranking mensual de clientes por zona.

Cuando se bloquea a un cliente por salir de su zona se le genera una multa cuyo precio va a ser diez veces el precio fijo del activo . Cuando un cliente se encuentra bloqueado, en el momento que vuelva a iniciar sesión se le va a mostrar el precio total de la multa y no le va a permitir ingresar hasta que esta esté pagada.

Cada cliente va a tener, como se menciono anteriormente, un HashMap puntosPorZonaFijos en los cuales únicamente se podrán sumar puntos al usar activos. Esto le va a permitir al usuario encontrarse dentro de un ranking por zona donde los diez clientes con mayor puntaje a fin de mes serán otorgados un descuento de 50% en su proximo alquiler. Para poder asignar estos descuentos a fin de mes el administrador reinicia el ranking y cuando esto sucede el operador de usuarios recorre por cada zona existente los puntos de cada usuario en la misma y los ordena de mayor a menor. Después agrega los nombres de los diez primeros usuarios de cada zona a un HashSet, de esta forma si un cliente esta dentro del ranking en más de una zona solo será beneficiado una única vez. Seguido de eso, recorre todos esos usuarios y les establece como descuentoEnUso un nuevo descuento que podrá ser aplicado en su proximo viaje sin ninguna restricción. A lo largo del mes tanto los administradores como los clientes podrán ver los ranking de las distintas zonas.

Con respecto al tiempo, se utilizo la clase LocalTime de Java, que nos permite visualizar la hora y los minutos. Para el trabajo nos era conveniente ya que el tiempo se utiliza para saber cuando se alquila un activo, para estimar la devolucion del mismo o para saber el tiempo real de la devolucion. Al saber la hora de devolucion, se compara con la hora estimada y si esta se encuentra dentro del rango horario, le permite al cliente tener descuentos en el alquiler de activos en su zona. Ademas, al conocer el tiempo, le permite cambiar el estado del activo (disponible o en Uso). El precio total del uso de cierto activo, tambien depende del tiempo, ya que cada tipo de activo posee un valor fijo al cual se le suma un costo variable segun los minutos que haya utilizado dicho activo.

La hora del sistema tambien puede ser modificada por el Administrador para lograr simular el paso de las horas, ya que sino se debia actualizar solo constantemente pero con la desventaja de siempre tener prendida y en uso la APP. De esta forma, nos permite mostrar como funciona el precio por minuto y la hora de entrega de los puntos mas eficientemente, sin la necesidad de tener activada la APP todo el tiempo.

About

Tp de Prog 2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages