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)}
/>
);
}