import React, { use, useEffect, useState } from 'react'; import { View, Text, TouchableOpacity, ScrollView, Alert, RefreshControl } from 'react-native'; import { QrCode, CheckCircle2 } from 'lucide-react-native'; import { ATTENDANCE_DATA } from '@/data/data'; import QrScanModal from '@/components/QrScanModal'; import LoadingScreen from '@/components/LoadingScreen'; import api from '@/utils/api'; export default function AttendanceScreen() { const [showScanner, setShowScanner] = useState(false); const [lastScan, setLastScan] = useState<{ type: string; time: string; site: string } | null>(null); const [attendances, setAttendances] = useState(ATTENDANCE_DATA); const [isLoading, setIsLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const fetchAttendances = async () => { try { if (!refreshing) setIsLoading(true); // Fetch today's attendance data from API const response = await api.get('/attendance/list'); // setAttendances(response.data); } catch (error) { console.error('Errore nel recupero delle presenze:', error); Alert.alert('Errore', 'Impossibile recuperare le presenze. Riprova più tardi.'); } finally { setIsLoading(false); setRefreshing(false); } }; useEffect(() => { fetchAttendances(); }, []); const onRefresh = () => { setRefreshing(true); fetchAttendances(); }; const handleQRScan = () => { setShowScanner(true); // Simulate scanning process setTimeout(() => { setShowScanner(false); // Add new entry or update existing one setLastScan({ type: 'Entrata', time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }), site: 'Cantiere Ospedale A.' }); }, 3000); }; if (isLoading && !refreshing) { return ; } return ( {/* Header */} Gestione Presenze Registra i tuoi movimenti } > {/* Feedback Card - OPZIONALE */} {lastScan ? ( {lastScan.type} Registrata! {lastScan.site} alle {lastScan.time} ) : ( null )} {/* Scanner Section */} Scansione QR/NFC Scansiona Codice Posiziona il codice QR davanti alla fotocamera o usa il lettore NFC {/* Mini History */} Ultime Presenze {ATTENDANCE_DATA.map((item, index) => ( {item.site} {item.in} - {item.out || 'In corso'} {item.status === 'complete' && ( 8h )} ))} {/* Scanner Modal */} setShowScanner(false)} /> ); }