import { Badge } from '@/components/ui/badge';
import type {
    ClassroomStatus,
    FormatempSyncStatus,
    MeetingStatus,
    ParticipantRole,
} from '@/components/classrooms/types';

export function ClassroomStatusBadge({ status }: { status: ClassroomStatus }) {
    const map: Record<
        ClassroomStatus,
        { label: string; variant: 'default' | 'secondary' | 'outline' }
    > = {
        draft: { label: 'Bozza', variant: 'outline' },
        active: { label: 'Attiva', variant: 'default' },
        closed: { label: 'Chiusa', variant: 'secondary' },
    };
    const { label, variant } = map[status];

    return <Badge variant={variant}>{label}</Badge>;
}

export function MeetingStatusBadge({ status }: { status: MeetingStatus }) {
    const map: Record<
        MeetingStatus,
        { label: string; variant: 'default' | 'secondary' | 'outline' }
    > = {
        scheduled: { label: 'Pianificata', variant: 'outline' },
        running: { label: 'In corso', variant: 'default' },
        ended: { label: 'Terminata', variant: 'secondary' },
    };
    const { label, variant } = map[status];

    return <Badge variant={variant}>{label}</Badge>;
}

export function ParticipantRoleBadge({ role }: { role: ParticipantRole }) {
    return (
        <Badge variant={role === 'trainer' ? 'secondary' : 'outline'}>
            {role === 'trainer' ? 'Docente' : 'Allievo'}
        </Badge>
    );
}

export function FormatempSyncStatusBadge({
    status,
}: {
    status: FormatempSyncStatus;
}) {
    const map: Record<
        FormatempSyncStatus,
        {
            label: string;
            variant: 'default' | 'secondary' | 'outline' | 'destructive';
        }
    > = {
        pending: { label: 'In attesa', variant: 'outline' },
        running: { label: 'In corso', variant: 'secondary' },
        success: { label: 'Riuscita', variant: 'default' },
        failed: { label: 'Fallita', variant: 'destructive' },
    };
    const { label, variant } = map[status];

    return <Badge variant={variant}>{label}</Badge>;
}
