fix
This commit is contained in:
@@ -307,6 +307,8 @@ def enroll_later(enrollment: Enrollment, context: Context):
|
|||||||
exc_cls=DeduplicationConflictError,
|
exc_cls=DeduplicationConflictError,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return enrollment
|
||||||
|
|
||||||
|
|
||||||
def date_to_midnight(dt: date) -> datetime:
|
def date_to_midnight(dt: date) -> datetime:
|
||||||
return datetime.combine(dt, time(0, 0)).replace(tzinfo=pytz.timezone(TZ))
|
return datetime.combine(dt, time(0, 0)).replace(tzinfo=pytz.timezone(TZ))
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import {
|
|||||||
CalendarIcon,
|
CalendarIcon,
|
||||||
UserIcon,
|
UserIcon,
|
||||||
BanIcon,
|
BanIcon,
|
||||||
PlusIcon
|
PlusIcon,
|
||||||
|
XIcon
|
||||||
} from 'lucide-react'
|
} from 'lucide-react'
|
||||||
import { Link } from 'react-router'
|
import { Link } from 'react-router'
|
||||||
import { Suspense } from 'react'
|
import { Suspense } from 'react'
|
||||||
@@ -46,6 +47,7 @@ import { Skeleton } from '@repo/ui/components/skeleton'
|
|||||||
import { Await } from 'react-router'
|
import { Await } from 'react-router'
|
||||||
import { Abbr } from '@repo/ui/components/abbr'
|
import { Abbr } from '@repo/ui/components/abbr'
|
||||||
import { Button } from '@repo/ui/components/ui/button'
|
import { Button } from '@repo/ui/components/ui/button'
|
||||||
|
import { Badge } from '@repo/ui/components/ui/badge'
|
||||||
|
|
||||||
export function meta({}: Route.MetaArgs) {
|
export function meta({}: Route.MetaArgs) {
|
||||||
return [{ title: 'Relatório de matrículas' }]
|
return [{ title: 'Relatório de matrículas' }]
|
||||||
@@ -88,12 +90,13 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {
|
|||||||
</BreadcrumbList>
|
</BreadcrumbList>
|
||||||
</Breadcrumb>
|
</Breadcrumb>
|
||||||
|
|
||||||
<Await resolve={data} errorElement={<NotFound />}>
|
{/*<Await resolve={data} errorElement={<NotFound />}>*/}
|
||||||
|
<Await resolve={data}>
|
||||||
{({ enrolled, scheduled, sk, created_by }) => {
|
{({ enrolled, scheduled, sk, created_by }) => {
|
||||||
const succeed = enrolled.filter(
|
const succeed = enrolled?.filter(
|
||||||
({ status }) => status === 'success'
|
({ status }) => status === 'success'
|
||||||
)
|
)
|
||||||
const failed = enrolled.filter(({ status }) => status === 'fail')
|
const failed = enrolled?.filter(({ status }) => status === 'fail')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="lg:max-w-4xl mx-auto space-y-2.5">
|
<div className="lg:max-w-4xl mx-auto space-y-2.5">
|
||||||
@@ -156,8 +159,25 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {
|
|||||||
</AlertTitle>
|
</AlertTitle>
|
||||||
<AlertDescription>
|
<AlertDescription>
|
||||||
<ul className="list-decimal list-inside">
|
<ul className="list-decimal list-inside">
|
||||||
<li>...</li>
|
{scheduled.map(
|
||||||
<li>...</li>
|
({ output, input_record, status }, index) =>
|
||||||
|
status === 'success' ? (
|
||||||
|
<li className="space-x-1" key={index}>
|
||||||
|
<Abbr>{output.user.name}</Abbr>
|
||||||
|
<span>—</span>
|
||||||
|
<Abbr>{output.course.name}</Abbr>
|
||||||
|
</li>
|
||||||
|
) : (
|
||||||
|
<li className="space-x-1" key={index}>
|
||||||
|
<Abbr>{input_record.user.name}</Abbr>
|
||||||
|
<span>—</span>
|
||||||
|
<Abbr>{input_record.course.name}</Abbr>
|
||||||
|
<span className=" text-red-500 lowercase">
|
||||||
|
(Agendado anteriormente)
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
</AlertDescription>
|
</AlertDescription>
|
||||||
</Alert>
|
</Alert>
|
||||||
@@ -174,11 +194,9 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {
|
|||||||
<CalendarIcon className="size-3.5" />
|
<CalendarIcon className="size-3.5" />
|
||||||
{formatted.format(new Date(sk))}
|
{formatted.format(new Date(sk))}
|
||||||
</li>
|
</li>
|
||||||
{created_by && (
|
<li>
|
||||||
<li>
|
<UserIcon className="size-3.5" /> {created_by.name}
|
||||||
<UserIcon className="size-3.5" /> {created_by.name}
|
</li>
|
||||||
</li>
|
|
||||||
)}
|
|
||||||
</ul>
|
</ul>
|
||||||
</CardFooter>
|
</CardFooter>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { z } from 'zod'
|
import { z } from 'zod'
|
||||||
|
import { format } from 'date-fns'
|
||||||
|
|
||||||
export const MAX_ITEMS = 50
|
export const MAX_ITEMS = 50
|
||||||
|
|
||||||
@@ -30,7 +31,10 @@ export const enrollment = z.object({
|
|||||||
offset_days: z.number()
|
offset_days: z.number()
|
||||||
})
|
})
|
||||||
.optional(),
|
.optional(),
|
||||||
scheduled_for: z.date().optional()
|
scheduled_for: z
|
||||||
|
.date()
|
||||||
|
.optional()
|
||||||
|
.transform((date) => (date ? format(date, 'yyyy-MM-dd') : undefined))
|
||||||
})
|
})
|
||||||
|
|
||||||
export const formSchema = z.object({
|
export const formSchema = z.object({
|
||||||
|
|||||||
Reference in New Issue
Block a user