import React, { useState, useEffect } from "react"; import { DataTable } from "primereact/datatable"; import { Column } from "primereact/column"; import { Dropdown } from "primereact/dropdown"; import { Button } from "@mui/joy"; import { toast } from "react-toastify"; import { confirmDialog } from "primereact/confirmdialog"; import BreadcrumbNav from "./BreadcrumbNav"; const STATUS_OPTIONS = ["Pending", "Completed", "Failed"]; const TYPE_OPTIONS = ["Artist", "Album", "Track"]; const initialRequests = [ { id: 1, type: "Artist", artist: "Bring Me The Horizon", album: "", track: "", status: "Pending", }, { id: 2, type: "Album", artist: "Pink Floyd", album: "Dark Side of the Moon", track: "", status: "Completed", }, { id: 3, type: "Track", artist: "We Butter The Bread With Butter", album: "Das Album", track: "20 km/h", status: "Failed", }, { id: 4, type: "Track", artist: "Chappell Roan", album: "Pink Pony Club", track: "Pink Pony Club", status: "Completed", }, ]; export default function RequestManagement() { const [requests, setRequests] = useState(initialRequests); const [filterType, setFilterType] = useState(null); const [filterStatus, setFilterStatus] = useState(null); const [filteredRequests, setFilteredRequests] = useState(initialRequests); useEffect(() => { let filtered = [...requests]; if (filterType) { filtered = filtered.filter((r) => r.type === filterType); } if (filterStatus) { filtered = filtered.filter((r) => r.status === filterStatus); } setFilteredRequests(filtered); }, [filterType, filterStatus, requests]); const confirmDelete = (requestId) => { confirmDialog({ message: "Are you sure you want to delete this request?", header: "Confirm Delete", icon: "pi pi-exclamation-triangle", accept: () => deleteRequest(requestId), }); }; const deleteRequest = (requestId) => { setRequests((prev) => prev.filter((r) => r.id !== requestId)); toast.success("Request deleted"); }; const statusBodyTemplate = (rowData) => { let colorClass = ""; switch (rowData.status) { case "Pending": colorClass = "bg-yellow-300 text-yellow-900"; break; case "Completed": colorClass = "bg-green-300 text-green-900"; break; case "Failed": colorClass = "bg-red-300 text-red-900"; break; default: colorClass = "bg-gray-300 text-gray-900"; } return ( {rowData.status} ); }; const actionBodyTemplate = (rowData) => { return ( ); }; return (