import React, { useState, useEffect } from 'react'; import DataTable from '../../../Components/DataTable'; import Toast from '../Components/Toast'; import { Search, Plus, Eye, Filter, Calendar, Building, CreditCard, ArrowUpRight, X, ChevronRight, SearchIcon, CalendarIcon } from 'lucide-react'; import AddCollectionModal from './AddCollectionModal'; export default function CollectionsIndex() { const [collections, setCollections] = useState([]); const [branches, setBranches] = useState([]); const [collectionTypes, setCollectionTypes] = useState([]); const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [toast, setToast] = useState(null); const [searchTerm, setSearchTerm] = useState(''); // Filter States const [filterFromDate, setFilterFromDate] = useState(''); const [filterToDate, setFilterToDate] = useState(''); const [filterBranch, setFilterBranch] = useState(window.__APP_DATA__?.branch?.id || ''); const [filterMethod, setFilterMethod] = useState(''); const isReceptionist = window.__APP_DATA__?.role === 'receptionist'; useEffect(() => { fetchMetadata(); fetchCollections(); }, [filterBranch, filterFromDate, filterToDate, filterMethod]); const fetchMetadata = async () => { try { const [bRes, tRes] = await Promise.all([ fetch('/api/branches?status=Active'), fetch('/api/masters/collection') ]); if (bRes.ok) setBranches(await bRes.json()); if (tRes.ok) setCollectionTypes(await tRes.json()); } catch (error) { console.error('Error fetching metadata:', error); } }; const fetchCollections = async () => { setLoading(true); try { let url = '/api/collections?'; if (filterBranch) url += `branch_id=${filterBranch}&`; if (filterFromDate) url += `start_date=${filterFromDate}&`; if (filterToDate) url += `end_date=${filterToDate}&`; if (filterMethod) url += `payment_method=${filterMethod}&`; const response = await fetch(url); const data = await response.json(); setCollections(data); } catch (error) { console.error('Error fetching collections:', error); } finally { setLoading(false); } }; const columns = [ { header: 'DATE', render: (row) => ( {new Date(row.date).toLocaleDateString()} ) }, { header: 'BRANCH', render: (row) => ( {row.branch?.name} ) }, { header: 'ITEMS', render: (row) => (