========================== Reposición de tarjeta ========================== Si el jugador se identifica en Kiosk y el sistema detecta que la tarjeta es nueva, ofrece dos opciones. La primera es registrar una nueva cuenta de ``Player``. La segunda opción es asociarla a una cuenta de jugador existente. Esto es reposición de tarjeta. El flujo descrito en esta sección implica que se escoge la segunda opción: asociar una tarjeta a una cuenta de jugador existente. Descripción general =================== .. image:: /images/kiosk_card_replacement_overview.svg :align: center 1. Kiosk envía a Offsite el ``key`` de la tarjeta leída a través del mismo endpoint que el empleado en el flujo de identificación. 2. El endpoint responde que se trata de una tarjeta que está dada de alta, pero que no tiene asociado un ``Player``. El jugador indica que desea asociar una nueva tarjeta a su cuenta. 3. Kiosk envía la información de inicio sesión del usuario (usuario y contraseña) a Offsite con el objetivo de validar la existencia de la cuenta antes de enlazarle una tarjeta. 4. Offsite responde con la autorización de *check in* del usuario, validando así su existencia como prerrequisito para la reposición. 5. Kiosk solicita un reemplazo de tarjeta para el usuario con el ``check_in_token`` recibido en el paso anterior. Flujo ===== El siguiente flujo corresponde al proceso de enlazar una nueva tarjeta al usuario. Detección de la tarjeta nueva ----------------------------- El proceso de detección de la tarjeta es el mismo que el descrito en la sección *Registro a través de Kiosk*. Enlazando la nueva tarjeta -------------------------- .. image:: /images/kiosk_card_replacement_sequence.svg :align: center Se requiere el endpoint: Offsite: ``POST /players/id_cards`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Autorización:** Kiosk, Player En el cual se envía el ``key`` de la nueva tarjeta a enlazar. Si la petición proviene de un Kiosko también se envía el ``check_in_token`` correspondiente al usuario y el cual fue devuelto mediante la identificación del mismo. Previo a la asociación, debe verificarse que la fecha de la última transacción del jugador sea menor a tres meses. En caso contrario, debe crearse una transacción negativa con el monto igual al saldo del jugador; esto con el objetivo de expirar sus monedas. Esta transacción no será reportada al sistema Vista. Offsite devuelve la información del ``Player`` asociado, esto debido a que el balance de ``coins`` del jugador es actualizado al redimir la tarjeta. Adicionalmente, al redimir la tarjeta debe actualizarse el campo ``redeemed_at`` de la misma. Si el token de Check In no se encuentra, se responde con el estado ``404 Not Found``. Si la tarjeta ya fue redimida, pertenece a otro jugador o se encuentra suspendida, se responde con el estado ``409 Conflict``. Si se desea hacer uso de la tarjeta cuando ésta pertenece a un país distinto a aquel donde fue creada, se responde con el estado ``412 Precondition Failed``. Si la tarjeta ha sido eliminada, se responde con el estado ``422 Unprocessable Entity``. Observaciones ============= - La tarjeta ya fue dada de alta a través de un proceso de taquilla, por lo cual únicamente es necesario validar su existencia en Offsite. - El ``Check In`` de la sesión actual del ``Player`` se llevó a cabo con credenciales, no con tarjeta. - El campo ``redeemed_at`` de la tarjeta se actualiza al momento de asociar la misma al jugador. - Al momento de enlazar una nueva tarjeta al jugador, se considera como inválida cualquier otra tarjeta con la que se cuente para este. La única tarjeta válida para identificación un ``Player`` es aquella que fue redimida en la fecha más reciente. Validaciones ============ - El ``key`` debe corresponder a una tarjeta en existencia en Offsite. - La tarjeta no debe estar vinculada a ningún jugador al momento de redimirse. - La tarjeta no debe haber sido eliminada del sistema (*soft delete*). - El usuario al que se vinculará la tarjeta no debe ser invitado.