import type { Route } from './+types/route' import { AlertCircleIcon, CheckCircle2Icon, ClockIcon, CalendarIcon, UserIcon, BanIcon, PlusIcon } from 'lucide-react' import { Link } from 'react-router' import { Suspense } from 'react' import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from '@repo/ui/components/ui/empty' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@repo/ui/components/ui/card' import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '@repo/ui/components/ui/breadcrumb' import { Alert, AlertDescription, AlertTitle } from '@repo/ui/components/ui/alert' import { request as req } from '@repo/util/request' import { Skeleton } from '@repo/ui/components/skeleton' import { Await } from 'react-router' import { Abbr } from '@repo/ui/components/abbr' import { Button } from '@repo/ui/components/ui/button' export function meta({}: Route.MetaArgs) { return [{ title: 'Relatório de matrículas' }] } export async function loader({ context, request, params }: Route.LoaderArgs) { const { orgid, id } = params const submission = req({ url: `/orgs/${orgid}/enrollments/${id}/submitted`, context, request }).then((r) => r.json()) return { data: submission } } export default function Route({ loaderData: { data } }: Route.ComponentProps) { return ( }>
Matrículas Adicionar matrículas Relatório de matrículas }> {({ enrolled, scheduled, sk, created_by }) => { const succeed = enrolled.filter( ({ status }) => status === 'success' ) const failed = enrolled.filter(({ status }) => status === 'fail') return (
Relatório de matrículas Resumo detalhado do processamento das matrículas enviadas. <> {succeed?.length > 0 && ( Matrículas adicionadas com sucesso.
    {succeed.map(({ output }, index) => (
  • {output.user.name} {output.course.name}
  • ))}
)} {failed?.length > 0 && ( Matrículas não processadas.
    {failed.map(({ input_record }, index) => (
  • {input_record.user.name} {input_record.course.name}
  • ))}
)} {scheduled?.length && ( Matrículas agendadas. Serão processadas na data definida.
  • ...
  • ...
)}
  • {formatted.format(new Date(sk))}
  • {created_by && (
  • {created_by.name}
  • )}
) }}
) } const formatted = new Intl.DateTimeFormat('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }) function NotFound() { return ( <> Nenhum relatório aqui Matricule colaboradores de forma rápida e acompanhe seu progresso. ) }