From 5ca514095aa9a042d8c3ba799b735f4425aaa7d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Tue, 27 Jan 2026 10:26:05 -0300 Subject: [PATCH] add filter to test_mode --- .../app/routes/orders/checkout.py | 1 + .../_.$orgid.enrollments.seats/route.tsx | 42 +++- .../routes/_.$orgid.users._index/route.tsx | 12 +- .../app/routes/_app.payments._index/route.tsx | 31 ++- http-api/uv.lock | 207 +++++++++++++++--- 5 files changed, 233 insertions(+), 60 deletions(-) diff --git a/api.saladeaula.digital/app/routes/orders/checkout.py b/api.saladeaula.digital/app/routes/orders/checkout.py index 0c5a6dd..282f435 100644 --- a/api.saladeaula.digital/app/routes/orders/checkout.py +++ b/api.saladeaula.digital/app/routes/orders/checkout.py @@ -184,6 +184,7 @@ def checkout(payload: Checkout): if payload.installments else {} ) + | ({'test_mode': True} if 'iugu_api_token' in settings else {}) | payload.model_dump() ) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.seats/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.seats/route.tsx index 1a56801..5a2fa7d 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.seats/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.seats/route.tsx @@ -8,7 +8,7 @@ import { PlusIcon, Trash2Icon } from 'lucide-react' -import { Fragment } from 'react' +import { Fragment, useMemo } from 'react' import { Controller, useFieldArray, useForm } from 'react-hook-form' import { Link } from 'react-router' @@ -41,6 +41,7 @@ import { CoursePicker } from '../_.$orgid.enrollments.add/course-picker' import { formSchema, MAX_ITEMS, + type Course, type User } from '../_.$orgid.enrollments.add/data' import { @@ -55,6 +56,12 @@ export function meta({}: Route.MetaArgs) { return [{ title: 'Adicionar matrĂ­cula' }] } +type Seat = { + id: string + pk: string + course: Course +} + export async function loader({ request, params, context }: Route.LoaderArgs) { const seats = await req({ url: `/orgs/${params.orgid}/seats`, @@ -62,19 +69,12 @@ export async function loader({ request, params, context }: Route.LoaderArgs) { context }) .then((r) => r.json() as any) - .then(({ items }) => items) + .then(({ items }) => items as Seat[]) - const courses = new Promise((resolve, reject) => { - resolve({ - hits: seats.map(({ course }) => ({ metadata__unit_price: 1, ...course })) - }) - }) - return { seats, courses } + return { seats } } -export default function Route({ - loaderData: { courses } -}: Route.ComponentProps) { +export default function Route({ loaderData: { seats } }: Route.ComponentProps) { const { orgid } = useParams() const form = useForm({ resolver: zodResolver(formSchema), @@ -86,6 +86,26 @@ export default function Route({ name: 'enrollments' }) + const courses = useMemo( + () => + Promise.resolve({ + hits: Array.from( + new Map( + seats.map(({ course }) => [ + course.id, + { + ...course, + metadata__unit_price: 1 + } + ]) ?? [] + ).values() + ) + }), + [seats] + ) + + console.log(seats) + const onSearch = async (search: string) => { const params = new URLSearchParams({ q: search }) const r = await fetch(`/${orgid}/users.json?${params.toString()}`) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx index 60df843..93453a9 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx @@ -1,19 +1,19 @@ import type { Route } from './+types/route' import { PlusIcon } from 'lucide-react' +import { MeiliSearchFilterBuilder } from 'meilisearch-helper' import { Suspense, useState } from 'react' import { Await, Link, useParams, useSearchParams } from 'react-router' -import { MeiliSearchFilterBuilder } from 'meilisearch-helper' import { cloudflareContext } from '@repo/auth/context' import { DataTable } from '@repo/ui/components/data-table' +import { ExportMenu } from '@repo/ui/components/export-menu' import { SearchForm } from '@repo/ui/components/search-form' import { Skeleton } from '@repo/ui/components/skeleton' import { Button } from '@repo/ui/components/ui/button' import { Kbd } from '@repo/ui/components/ui/kbd' -import { ExportMenu } from '@repo/ui/components/export-menu' -import { createSearch } from '@repo/util/meili' import { headers } from '@repo/ui/routes/users/data' +import { createSearch } from '@repo/util/meili' import { columns, type User } from './columns' @@ -51,10 +51,10 @@ export async function loader({ params, context, request }: Route.LoaderArgs) { env: cloudflare.env }) - return { data: users } + return { users } } -export default function Route({ loaderData: { data } }: Route.ComponentProps) { +export default function Route({ loaderData: { users } }: Route.ComponentProps) { const { orgid } = useParams() const [searchParams, setSearchParams] = useSearchParams() const [selectedRows, setSelectedRows] = useState([]) @@ -70,7 +70,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {

- + {({ hits, page = 1, hitsPerPage, totalHits }) => { return ( }>

Pagamentos

- + {({ hits, page = 1, hitsPerPage, totalHits }) => { return (