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 (