import datetime

from platypush.message.event import Event


class TrelloEvent(Event):
    pass


class CardEvent(TrelloEvent):
    def __init__(
        self,
        card_id: str,
        card_name: str,
        list_id: str,
        list_name: str,
        board_id: str,
        board_name: str,
        closed: bool,
        member_id: str,
        member_username: str,
        member_fullname: str,
        date: datetime.datetime,
        *args,
        **kwargs,
    ):
        super().__init__(
            *args,
            card_id=card_id,
            card_name=card_name,
            list_id=list_id,
            list_name=list_name,
            board_id=board_id,
            board_name=board_name,
            closed=closed,
            member_id=member_id,
            member_username=member_username,
            member_fullname=member_fullname,
            date=date,
            **kwargs,
        )


class NewCardEvent(CardEvent):
    """
    Event triggered when a card is created.
    """


class MoveCardEvent(CardEvent):
    """
    Event triggered when a card is moved to another list.
    """

    def __init__(self, old_list_id: str, old_list_name: str, *args, **kwargs):
        super().__init__(
            *args, old_list_id=old_list_id, old_list_name=old_list_name, **kwargs
        )


class ArchivedCardEvent(CardEvent):
    """
    Event triggered when a card is archived.
    """

    def __init__(self, *args, **kwargs):
        kwargs['old_closed'] = False
        super().__init__(*args, **kwargs)


class UnarchivedCardEvent(CardEvent):
    """
    Event triggered when a card is un-archived.
    """

    def __init__(self, *args, **kwargs):
        kwargs['old_closed'] = True
        super().__init__(*args, **kwargs)


# vim:sw=4:ts=4:et:
