import React from "react"; import { Table, Spinner, Text, VStack, Button, HStack, IconButton, Heading, Code, } from "@chakra-ui/react"; import { Tooltip } from "@/components/ui/tooltip"; import { useState, useEffect } from "react"; import Cookies from "js-cookie"; import MyAlert from "./myChakra/MyAlert"; import { formatDateTime } from "@/utils/userFuncs"; import { Trash2, RefreshCcwDot } from "lucide-react"; import { deleteLoan } from "@/utils/userActions"; import { API_BASE } from "@/config/api.config"; const LoanTable: React.FC = () => { const [items, setItems] = useState([]); const [errorStatus, setErrorStatus] = useState<"error" | "success">("error"); const [errorMessage, setErrorMessage] = useState(""); const [errorDsc, setErrorDsc] = useState(""); const [isError, setIsError] = useState(false); const [isLoading, setIsLoading] = useState(false); const [reload, setReload] = useState(false); const setError = ( status: "error" | "success", message: string, description: string ) => { setIsError(false); setErrorStatus(status); setErrorMessage(message); setErrorDsc(description); setIsError(true); }; type Loan = { id: number; username: string; loan_code: string; start_date: string; end_date: string; take_date: string; returned_date: string; created_at: string; loaned_items_name: string[]; deleted: boolean; note: string; }; useEffect(() => { const fetchData = async () => { setIsLoading(true); try { const response = await fetch( `${API_BASE}/api/admin/loan-data/all-loans`, { method: "GET", headers: { Authorization: `Bearer ${Cookies.get("token")}`, }, } ); const data = await response.json(); return data; } catch (error) { setError("error", "Failed to fetch loans", "There is an error"); } finally { setIsLoading(false); } }; fetchData().then((data) => { if (Array.isArray(data)) { setItems(data); } }); }, [reload]); return ( <> {/* Action toolbar */} setReload(!reload)} > {/* End action toolbar */} Ausleihen Die Ausleihen die rot sind, wurden gelöscht und sind nur für den Admin sichtbar. {isError && ( )} {isLoading && ( Loading... )} {!isLoading && ( # Besitzer Ausleih code Startdatum Enddatum Ausleihdatum Rückgabedatum Erstellt am Ausgeliehene Artikel Notiz Aktionen {items.map((item) => ( {item.id} {item.username} {item.loan_code} {formatDateTime(item.start_date)} {formatDateTime(item.end_date)} {formatDateTime(item.take_date)} {formatDateTime(item.returned_date)} {formatDateTime(item.created_at)} {item.loaned_items_name.join(", ")} {item.note} ))} )} ); }; export default LoanTable;