add filter to test_mode
This commit is contained in:
@@ -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()}`)
|
||||
|
||||
@@ -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<User[]>([])
|
||||
@@ -70,7 +70,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<Await resolve={data}>
|
||||
<Await resolve={users}>
|
||||
{({ hits, page = 1, hitsPerPage, totalHits }) => {
|
||||
return (
|
||||
<DataTable
|
||||
|
||||
@@ -8,6 +8,7 @@ import { DataTable } from '@repo/ui/components/data-table'
|
||||
import { Skeleton } from '@repo/ui/components/skeleton'
|
||||
import { createSearch } from '@repo/util/meili'
|
||||
|
||||
import { MeiliSearchFilterBuilder } from 'meilisearch-helper'
|
||||
import { columns, type Order } from './columns'
|
||||
|
||||
export function meta({}: Route.MetaArgs) {
|
||||
@@ -21,25 +22,33 @@ export async function loader({ context, request }: Route.LoaderArgs) {
|
||||
const sort = searchParams.get('sort') || 'create_date:desc'
|
||||
const hitsPerPage = Number(searchParams.get('perPage')) || 25
|
||||
|
||||
return {
|
||||
data: createSearch({
|
||||
index: 'betaeducacao-prod-orders',
|
||||
sort: [sort],
|
||||
page,
|
||||
hitsPerPage,
|
||||
env: cloudflare.env
|
||||
})
|
||||
}
|
||||
let builder = new MeiliSearchFilterBuilder().where(
|
||||
'test_mode',
|
||||
'exists',
|
||||
false
|
||||
)
|
||||
const payments = createSearch({
|
||||
index: 'betaeducacao-prod-orders',
|
||||
filter: builder.build(),
|
||||
sort: [sort],
|
||||
page,
|
||||
hitsPerPage,
|
||||
env: cloudflare.env
|
||||
})
|
||||
|
||||
return { payments }
|
||||
}
|
||||
|
||||
export default function Route({ loaderData: { data } }: Route.ComponentProps) {
|
||||
export default function Route({
|
||||
loaderData: { payments }
|
||||
}: Route.ComponentProps) {
|
||||
return (
|
||||
<Suspense fallback={<Skeleton />}>
|
||||
<div className="space-y-0.5 mb-8">
|
||||
<h1 className="text-2xl font-bold tracking-tight">Pagamentos</h1>
|
||||
</div>
|
||||
|
||||
<Await resolve={data}>
|
||||
<Await resolve={payments}>
|
||||
{({ hits, page = 1, hitsPerPage, totalHits }) => {
|
||||
return (
|
||||
<DataTable
|
||||
|
||||
Reference in New Issue
Block a user