Skip to content
This repository has been archived by the owner on Jan 17, 2023. It is now read-only.

nicocespede/Eldar-Challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eldar Challenge

El ejercicio se realizó implementando lo siguiente:

Enumerado para las 3 marcas de tarjetas disponibles (Brand): opté por un enumerado por la facilidad que ofrece para agregar nuevas opciones.

Clase que modela una tarjeta de crédito (CreditCard).

Clase que modela una operación (Transaction).

Clase ejecutable (Main): contiene los métodos pedidos en el enunciado con algunos datos hardcodeados (que se pueden modificar libremente) para realizar las pruebas necesarias y recrear distintos escenarios.

Métodos implementados en la clase Main:

createCard(brand, number, name, date): crea una tarjeta a partir de los parámetros brindados, si los datos ingresados son válidos emitirá un mensaje de éxito, y en caso contrario mostrará la excepción arrojada, ambos a través de la consola.

getCreditCardInfo(card): emitirá un mensaje con la información de la tarjeta ingresada (necesita una tarjeta previamente creada con éxito).

sendTransaction(card, amount): intentará realizar una operación con la tarjeta y el importe ingresados. Si el importe es inválido o la tarjeta está expirada, se arrojará una excepción. En caso contrario, la operación será aceptada siempre y cuando la tarjeta ingresada no supere el límite establecido de $999 (considerando las tasas de servicio cobradas).

compareCards(card1, card2): indica por consola si las tarjetas ingresadas son las mismas o no.

calculateServiceFee(brand, amount): indica de cuánto dinero es la tasa de servicio cobrada con la marca de tarjeta e importe ingresados.

Comentarios extra:

• Siéntanse libres de comentar las llamadas a los métodos si se desea probarlos individualmente.

• Hay un bug (señalado en el código con un comentario) claramente identificado que consiste en que la función parse() del DateFormat realiza el parsing incluso con valores de día y mes inválidos. Decidí no indagar en él ya que considero que no viene al caso para lo solicitado, pero creo que con un poco más de investigación sobre el DateFormat puede ser solucionado fácilmente.

• En cuanto a la implementación de la API Rest, no tengo experiencia con Spring ni Springboot, por lo que estuve intentándolo con algunos tutoriales pero por falta de tiempo no logré realizarlo. Sin embargo voy a intentar hacerlo por mi cuenta ya que, por lo que ví, está bastante interesante y aprender algo nuevo nunca está demás.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages