From 935d43d8fa6337eda2881391cab3bb1303f8c363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Fri, 12 Dec 2025 21:04:54 -0300 Subject: [PATCH] fix status --- .../app/routes/orgs/billing.py | 4 +-- .../routes/_.$orgid.billing._index/data.ts | 21 ++++++++++++++ .../routes/_.$orgid.billing._index/route.tsx | 29 ++++++++++++++----- .../_.$orgid.enrollments._index/route.tsx | 2 +- packages/ui/src/routes/enrollments/data.tsx | 6 ++-- packages/ui/src/routes/orders/data.tsx | 4 +-- 6 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/data.ts diff --git a/api.saladeaula.digital/app/routes/orgs/billing.py b/api.saladeaula.digital/app/routes/orgs/billing.py index b2fb756..2235fc4 100644 --- a/api.saladeaula.digital/app/routes/orgs/billing.py +++ b/api.saladeaula.digital/app/routes/orgs/billing.py @@ -37,12 +37,12 @@ def billing( ): pk = f'BILLING#ORG#{org_id}' sk = f'START#{start_date}#END#{end_date}' - r = dyn.collection.get_item( + billing = dyn.collection.get_item( KeyPair(pk, sk), exc_cls=BillingNotFoundError, ) - return r | dyn.collection.query( + return billing | dyn.collection.query( KeyPair( pk=pk, sk=f'{sk}#ENROLLMENT', diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/data.ts b/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/data.ts new file mode 100644 index 0000000..691cc9c --- /dev/null +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/data.ts @@ -0,0 +1,21 @@ +import { CheckCircle2Icon, ClockIcon, type LucideIcon } from 'lucide-react' + +export const statuses: Record< + string, + { icon: LucideIcon; color?: string; label: string } +> = { + PENDING: { + icon: ClockIcon, + label: 'Em aberto' + }, + CLOSED: { + icon: CheckCircle2Icon, + label: 'Fechado', + color: 'text-green-400 [&_svg]:text-green-500' + } +} + +export const labels: Record = { + PENDING: 'Em aberto', + CLOSED: 'Fechado' +} diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/route.tsx index 47e81a8..29ebdc3 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.billing._index/route.tsx @@ -19,9 +19,11 @@ import { TableRow } from '@repo/ui/components/ui/table' import { Abbr } from '@repo/ui/components/abbr' +import { Button } from '@repo/ui/components/ui/button' import { RangePeriod } from './range-period' -import { Button } from '@repo/ui/components/ui/button' +import { statuses } from './data' +import { cn } from '@repo/ui/lib/utils' export function meta({}) { return [{ title: 'Resumo de cobranças' }] @@ -36,7 +38,7 @@ export async function loader({ context, request, params }: Route.LoaderArgs) { }).then((r) => r.json()) const [startDate, endDate] = billingPeriod( - subscription?.billing_day, + subscription?.billing_day || 1, new Date() ) const start = searchParams.get('start') || formatDate(startDate) @@ -75,25 +77,30 @@ export default function Route({ - {({ items, ...billing }) => { + {({ items = [], ...billing }) => { + const { + icon: Icon, + label: status, + color + } = statuses?.[billing?.status || 'CLOSED'] return (
@@ -142,6 +149,14 @@ export default function Route({ ) )} + + {items.length === 0 && ( + + + Nenhum resultado. + + + )} @@ -152,7 +167,7 @@ export default function Route({ {currency.format( items ?.filter((item) => 'course' in item) - .reduce( + ?.reduce( (acc, { unit_price }) => acc + unit_price, 0 ) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx index 8dd3b44..8584000 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx @@ -15,8 +15,8 @@ import { Button } from '@repo/ui/components/ui/button' import { ExportMenu } from '@repo/ui/components/export-menu' import { Kbd } from '@repo/ui/components/ui/kbd' import { createSearch } from '@repo/util/meili' - import { headers, sortings, statuses } from '@repo/ui/routes/enrollments/data' + import { columns, type Enrollment } from './columns' export function meta({}: Route.MetaArgs) { diff --git a/packages/ui/src/routes/enrollments/data.tsx b/packages/ui/src/routes/enrollments/data.tsx index f7777ef..c413110 100644 --- a/packages/ui/src/routes/enrollments/data.tsx +++ b/packages/ui/src/routes/enrollments/data.tsx @@ -1,6 +1,6 @@ import { BanIcon, - CircleCheckIcon, + CheckCircle2Icon, CircleIcon, CircleXIcon, TimerIcon, @@ -41,8 +41,8 @@ export const statuses: Record< label: 'Em andamento' }, COMPLETED: { - icon: CircleCheckIcon, - color: 'text-green-400 [&_svg]:text-background [&_svg]:fill-green-500', + icon: CheckCircle2Icon, + color: 'text-green-400 [&_svg]:text-green-500', label: 'ConcluĂ­do' }, FAILED: { diff --git a/packages/ui/src/routes/orders/data.tsx b/packages/ui/src/routes/orders/data.tsx index ccfd0e6..5839fe0 100644 --- a/packages/ui/src/routes/orders/data.tsx +++ b/packages/ui/src/routes/orders/data.tsx @@ -1,5 +1,5 @@ import { - CheckCircleIcon, + CheckCircle2Icon, ClockAlertIcon, RotateCcwIcon, CircleXIcon, @@ -29,7 +29,7 @@ export const statuses: Record< color: 'text-blue-400 [&_svg]:text-blue-500' }, PAID: { - icon: CheckCircleIcon, + icon: CheckCircle2Icon, color: 'text-green-400 [&_svg]:text-green-500', label: 'Pago' },