'use client' import React, { useEffect, useState } from 'react' import { useSession } from 'next-auth/react' import Link from 'next/link' import Cookies from 'js-cookie' interface Address { id: string street: string city: string postcode: string order: number } interface Route { id: string createdAt: string status: string addresses: Address[] } export default function RoutesPage() { const { data: session, status } = useSession() const [routes, setRoutes] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [isDeleting, setIsDeleting] = useState(false) const [messages, setMessages] = useState(null) useEffect(() => { const loadMessages = async () => { const lang = Cookies.get('NEXT_LOCALE') || 'de' const messages = await import(`@/messages/${lang}.json`) setMessages(messages.default) } loadMessages() }, []) useEffect(() => { fetchRoutes() }, [session]) const fetchRoutes = async () => { try { const response = await fetch('/api/routes', { credentials: 'include' }) if (!response.ok) { const errorData = await response.json() throw new Error(errorData.message || messages?.routes?.error) } const data = await response.json() setRoutes(data) } catch (err) { console.error('Rotaları getirme hatası:', err) setError(err instanceof Error ? err.message : messages?.routes?.error) } finally { setLoading(false) } } const handleDelete = async (routeId: string) => { if (!confirm(messages?.routes?.confirmDelete?.message)) { return } setIsDeleting(true) try { const response = await fetch(`/api/routes/${routeId}`, { method: 'DELETE', credentials: 'include' }) if (!response.ok) { throw new Error(messages?.routes?.error) } // Rotayı listeden kaldır setRoutes(routes.filter(route => route.id !== routeId)) } catch (err) { console.error('Rota silme hatası:', err) setError(err instanceof Error ? err.message : messages?.routes?.error) } finally { setIsDeleting(false) } } if (!messages || status === 'loading' || loading) { return (
) } if (status === 'unauthenticated') { return (

{messages.common.accessDenied}

{messages.common.loginRequired}

{messages.common.login}
) } if (error) { return (

{messages.common.error}

{error}

) } return (
{messages?.common?.back}

{messages?.routes?.title}

{messages?.dashboard?.newRoute?.title}
{routes.length === 0 ? (

{messages?.routes?.noRoutes}

{messages?.routes?.createFirst}
) : (
    {routes.map((route) => (
  • {route.addresses.length} {messages?.routes?.addresses}

    {messages?.routes?.createdAt}: {new Date(route.createdAt).toLocaleDateString()}

    {route.status === 'COMPLETED' ? messages?.routes?.status?.completed : route.status === 'IN_PROGRESS' ? messages?.routes?.status?.active : messages?.routes?.status?.active} {messages?.common?.edit} {messages?.common?.details}
      {route.addresses .slice(0, 3) .map((address) => (
    • {address.street}, {address.city} {address.postcode}
    • ))} {route.addresses.length > 3 && (
    • {messages?.routeDetails?.moreAddresses.replace('{count}', String(route.addresses.length - 3))}
    • )}
  • ))}
)}
) }