'use client' import { BikeWithParts } from '@/types' import { useState } from 'react' import Link from 'next/link' import { calculateServiceStatus } from '@/lib/utils' import AlertBadge from './AlertBadge' interface BikeCardProps { bike: BikeWithParts onDelete: () => void } export default function BikeCard({ bike, onDelete }: BikeCardProps) { const [isDeleting, setIsDeleting] = useState(false) const handleDelete = async () => { if (!confirm('Möchten Sie dieses Fahrrad wirklich löschen?')) { return } setIsDeleting(true) try { const response = await fetch(`/api/bikes/${bike.id}`, { method: 'DELETE', }) if (response.ok) { onDelete() } else { alert('Fehler beim Löschen des Fahrrads') } } catch (error) { console.error('Error deleting bike:', error) alert('Fehler beim Löschen des Fahrrads') } finally { setIsDeleting(false) } } const activeParts = bike.wearParts.filter((p) => p.status === 'ACTIVE') const needsServiceParts = activeParts.filter((part) => { const serviceStatus = calculateServiceStatus(part) return serviceStatus.status !== 'OK' }) return (

{bike.name}

{bike.brand && bike.model && (

{bike.brand} {bike.model}

)}
{needsServiceParts.length > 0 && ( )}

{activeParts.length} aktive Verschleißteile

{needsServiceParts.length > 0 && (

{needsServiceParts.length} benötigen Wartung

)}
Details
) }