import React, { useState, useEffect } from 'react'; import { db } from '../../firebase/config'; import { ref, onValue, set } from 'firebase/database'; import { Clock, Save, User as UserIcon } from 'lucide-react'; export default function EmployeeSchedules() { const [employees, setEmployees] = useState([]); const [schedules, setSchedules] = useState({}); useEffect(() => { // Fetch Employees (Users with role 'mesero' or 'admin') onValue(ref(db, 'users'), (snapshot) => { const data = snapshot.val(); if (data) { setEmployees(Object.keys(data).map(k => ({ email: k.replace(',', '.'), ...data[k] }))); } }); // Fetch Schedules onValue(ref(db, 'schedules'), (snapshot) => { if (snapshot.exists()) setSchedules(snapshot.val()); }); }, []); const handleUpdateSchedule = async (email, field, value) => { const safeEmail = email.replace(/\./g, ','); await set(ref(db, `schedules/${safeEmail}/${field}`), value); }; return (

Control de Horarios

Asignación de turnos y disponibilidad de personal

{employees.map((emp) => { const safeEmail = emp.email.replace(/\./g, ','); const sched = schedules[safeEmail] || { start: '09:00', end: '17:00' }; return ( ); })}
Empleado Rol Entrada Salida Estado
{emp.email}
{emp.role} handleUpdateSchedule(emp.email, 'start', e.target.value)} style={inputStyle} /> handleUpdateSchedule(emp.email, 'end', e.target.value)} style={inputStyle} /> Activo
); } const inputStyle = { padding: '0.5rem', borderRadius: '6px', background: 'rgba(255,255,255,0.05)', border: '1px solid var(--border-subtle)', color: '#fff', outline: 'none', fontSize: '0.9rem' };