Skip to content

Actions

components.payment_gateway.subcomponents.cards.business_logic.actions.card_delivery_actions

CardDeliveryActions

This class contains all the actions related to the delivery of a card.

create_card_order

create_card_order(
    session,
    /,
    workspace_key,
    external_card_id,
    delivery_status,
    shipping_method,
    tracking_number=None,
)

Create a card order upon reception of a card order creation event.

Source code in components/payment_gateway/subcomponents/cards/business_logic/actions/card_delivery_actions.py
def create_card_order(
    self,
    session: Session,
    /,
    workspace_key: str,
    external_card_id: str,
    delivery_status: CardDeliveryStatus,
    shipping_method: str,
    tracking_number: str | None = None,
) -> CardOrderId:
    """
    Create a card order upon reception of a card order creation event.
    """

    with raise_if_card_not_found_for_external_id(external_card_id):
        card_id = CardModelBroker.get_card_id_by_external_id(
            session,
            workspace_key=workspace_key,
            external_id=external_card_id,
        )

    # TODO what should we do if an order already exists for the same card or the same external ID?
    card_order = CardOrderModelBroker.create_card_order(
        session,
        card_id=card_id,
        delivery_status=delivery_status,
        shipping_method=shipping_method,
        tracking_number=tracking_number,
    )
    return CardOrderId(card_order.id)

declare_card_not_received

declare_card_not_received(session, /, id)

Declare that a card has not been received by the card holder.

This can happen if the card has been lost or stolen during the shipment.

Source code in components/payment_gateway/subcomponents/cards/business_logic/actions/card_delivery_actions.py
def declare_card_not_received(
    self,
    session: Session,
    /,
    id: CardId,
) -> None:
    """
    Declare that a card has not been received by the card holder.

    This can happen if the card has been lost or stolen during the shipment.
    """

    # TODO
    raise NotImplementedError()

declare_card_received

declare_card_received(session, /, id)

Declare that a card has been received by the card holder.

Source code in components/payment_gateway/subcomponents/cards/business_logic/actions/card_delivery_actions.py
def declare_card_received(
    self,
    session: Session,
    /,
    id: CardId,
) -> None:
    """
    Declare that a card has been received by the card holder.
    """

    # TODO
    raise NotImplementedError()

update_card_order

update_card_order(
    session,
    /,
    workspace_key,
    external_card_id,
    delivery_status,
    tracking_number=None,
)

Update a card order upon reception of a card order update event.

Source code in components/payment_gateway/subcomponents/cards/business_logic/actions/card_delivery_actions.py
def update_card_order(
    self,
    session: Session,
    /,
    workspace_key: str,
    external_card_id: str,
    delivery_status: CardDeliveryStatus,
    tracking_number: str | None = None,
) -> None:
    """
    Update a card order upon reception of a card order update event.
    """

    with raise_if_card_not_found_for_external_id(external_card_id):
        card_id = CardModelBroker.get_card_id_by_external_id(
            session,
            workspace_key=workspace_key,
            external_id=external_card_id,
        )

    with raise_if_card_order_not_found_for_card_id(card_id):
        card_order = CardOrderModelBroker.get_card_order_for_card(
            session, card_id=card_id
        )

    CardOrderModelBroker.set_card_order_delivery_status(
        session,
        id=card_order.id,
        delivery_status=delivery_status,
    )
    if tracking_number is not None:
        CardOrderModelBroker.set_card_order_tracking_number(
            session,
            id=card_order.id,
            tracking_number=tracking_number,
        )

components.payment_gateway.subcomponents.cards.business_logic.actions.card_renewal_actions

CardRenewalActions

This class contains all the actions related to the renewal of a card.

renew_card

renew_card(id)

Renew a card.

Renewal can be triggered by the business logic or the card holder. For example, if the card is about to expire or is declared lost, stolen or damaged.

Source code in components/payment_gateway/subcomponents/cards/business_logic/actions/card_renewal_actions.py
def renew_card(
    self,
    id: CardId,
) -> None:
    """
    Renew a card.

    Renewal can be triggered by the business logic or the card holder. For example,
    if the card is about to expire or is declared lost, stolen or damaged.
    """

    # TODO
    raise NotImplementedError()