diff --git a/api/src/cookiebreaks/api/routers/utils.py b/api/src/cookiebreaks/api/routers/utils.py index cb3cd50..5373c8a 100644 --- a/api/src/cookiebreaks/api/routers/utils.py +++ b/api/src/cookiebreaks/api/routers/utils.py @@ -24,6 +24,7 @@ class BreakExternal: cost: Optional[Decimal] host_reimbursed: Optional[datetime] admin_claimed: Optional[datetime] + claim_id: Optional[int] admin_reimbursed: Optional[datetime] @@ -50,12 +51,14 @@ def break_internal_to_external( host_reimbursed = maybe_arrow_to_datetime(internal.host_reimbursed) admin_claimed = maybe_arrow_to_datetime(internal.admin_claimed) admin_reimbursed = maybe_arrow_to_datetime(internal.admin_reimbursed) + claim_id = internal.claim_id else: break_announced = None cost = None host_reimbursed = None admin_claimed = None admin_reimbursed = None + claim_id = None return BreakExternal( internal.id, internal.break_time.datetime, @@ -66,6 +69,7 @@ def break_internal_to_external( cost, host_reimbursed, admin_claimed, + claim_id, admin_reimbursed, ) diff --git a/api/src/cookiebreaks/core/database.py b/api/src/cookiebreaks/core/database.py index 10db56c..ecb799b 100644 --- a/api/src/cookiebreaks/core/database.py +++ b/api/src/cookiebreaks/core/database.py @@ -152,27 +152,31 @@ def arrow_or_none(candidate, timezone: str) -> Optional[Arrow]: def row_to_break(row) -> Break: ( - id, + break_id, break_host, - datetime, + break_datetime, break_location, - is_holiday, + holiday_text, break_announced, - cost, + break_cost, host_reimbursed, + claim_id, + claim_date, + claim_reimbursed, ) = row timezone = "Europe/London" return Break( - id, - arrow.get(datetime, timezone), + break_id, + arrow.get(break_datetime, timezone), break_location, - is_holiday, + holiday_text, break_host, arrow_or_none(break_announced, timezone), - cost, + break_cost, arrow_or_none(host_reimbursed, timezone), - None, - None, + arrow_or_none(claim_date, timezone), + claim_id, + claim_reimbursed, ) @@ -242,9 +246,12 @@ def get_breaks_statement(filters) -> str: else: limit_string = f"LIMIT {filters.number}" statement = f""" - SELECT break_id, break_host, break_datetime, break_location, - holiday_text, break_announced, break_cost, host_reimbursed - FROM break + SELECT Break.break_id, break_host, break_datetime, break_location, + holiday_text, break_announced, break_cost, host_reimbursed, + Claim.claim_id, claim_date, claim_reimbursed + FROM Break + LEFT JOIN ClaimItem ON Break.break_id = ClaimItem.break_id + LEFT JOIN Claim ON ClaimItem.claim_id = Claim.claim_id {where_string} ORDER BY break_datetime ASC {limit_string} diff --git a/api/src/cookiebreaks/core/structs.py b/api/src/cookiebreaks/core/structs.py index 055bfaa..1197e74 100644 --- a/api/src/cookiebreaks/core/structs.py +++ b/api/src/cookiebreaks/core/structs.py @@ -27,6 +27,7 @@ class Break: cost: Optional[Decimal] = None host_reimbursed: Optional[Arrow] = None admin_claimed: Optional[Arrow] = None + claim_id: Optional[int] = None admin_reimbursed: Optional[Arrow] = None def get_break_time(self) -> str: diff --git a/client/src/app/cards/cards.tsx b/client/src/app/cards/cards.tsx index 450328c..f1a4b7b 100644 --- a/client/src/app/cards/cards.tsx +++ b/client/src/app/cards/cards.tsx @@ -98,7 +98,7 @@ export const Card = (props: { ? setExpanded(!isExpanded) : () => {} return ( -
+
{props.isLoading ? ( ) : isExpanded && props.cardAction.type === CardAction.EXPAND ? (