1+ import React , { useEffect , useState } from 'react' ;
2+ import axiosInstance from '../../../utils/axiosInstance' ;
3+
4+ export default function IncidentReportUpload ( ) {
5+ const [ incidentReports , setIncidentReports ] = useState ( [ ] ) ;
6+ const [ loading , setLoading ] = useState ( true ) ;
7+ const [ error , setError ] = useState ( null ) ;
8+
9+ useEffect ( ( ) => {
10+ const fetchIncidentReports = async ( ) => {
11+ try {
12+ const response = await axiosInstance . get ( '/incidentreport/incidentall' ) ;
13+ console . log ( 'API Response:' , response . data ) ;
14+
15+ const data = Array . isArray ( response . data )
16+ ? response . data
17+ : Array . isArray ( response . data ?. data )
18+ ? response . data . data
19+ : [ ] ;
20+
21+ setIncidentReports ( data ) ;
22+ } catch ( err ) {
23+ setError ( 'Failed to fetch incident reports' ) ;
24+ } finally {
25+ setLoading ( false ) ;
26+ }
27+ } ;
28+
29+ fetchIncidentReports ( ) ;
30+ } , [ ] ) ;
31+
32+ return (
33+ < div className = "min-h-screen flex flex-col items-center justify-center bg-gray-100 p-4" >
34+ < div className = "bg-white rounded-2xl shadow-md p-8 max-w-4xl w-full" >
35+ < h1 className = "text-2xl font-bold mb-4 text-center" > All Incident Reports</ h1 >
36+
37+ { loading && < p className = "text-center text-gray-500" > Loading...</ p > }
38+ { error && < p className = "text-center text-red-500" > { error } </ p > }
39+
40+ { ! loading && ! error && Array . isArray ( incidentReports ) && incidentReports . length === 0 && (
41+ < p className = "text-center text-gray-500" > No incident reports found.</ p >
42+ ) }
43+
44+ { ! loading && ! error && Array . isArray ( incidentReports ) && incidentReports . length > 0 && (
45+ < ul className = "divide-y divide-gray-200" >
46+ { incidentReports . map ( ( report , index ) => (
47+ < li key = { index } className = "py-4" >
48+ < div className = "text-lg font-semibold text-gray-800" > { report . title || 'Untitled Report' } </ div >
49+ < div className = "text-sm text-gray-600" > { report . description || 'No description provided.' } </ div >
50+ < div className = "text-sm text-gray-500 mt-1" >
51+ < strong > Location:</ strong > { report . location || 'N/A' } | < strong > Severity:</ strong > { report . severity || 'N/A' } | < strong > Status:</ strong > { report . status || 'N/A' }
52+ </ div >
53+ < div className = "text-sm text-gray-400" >
54+ Reported On: { report . reportDate ? new Date ( report . reportDate ) . toLocaleDateString ( ) : 'Unknown' }
55+ </ div >
56+ </ li >
57+ ) ) }
58+ </ ul >
59+ ) }
60+ </ div >
61+ </ div >
62+ ) ;
63+ }
0 commit comments