/** * ════════════════════════════════════════════════════════════ * مُصادَق (Musadaq) — Staff Management Page * ════════════════════════════════════════════════════════════ */ import { useState, useEffect } from 'react'; import { Users, UserPlus, Mail, Power } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; import apiClient from '../../api/client'; import { useAuthStore } from '../../store/authStore'; export const StaffPage = () => { const currentUser = useAuthStore((state) => state.user); const [staff, setStaff] = useState([]); const [isLoading, setIsLoading] = useState(true); const [isAddModalOpen, setIsAddModalOpen] = useState(false); // Form State const [fullName, setFullName] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [role, setRole] = useState('accountant'); const fetchStaff = async () => { setIsLoading(true); try { const { data } = await apiClient.get('/users'); setStaff(data); } catch (error) { console.error('Failed to fetch staff', error); } finally { setIsLoading(false); } }; useEffect(() => { fetchStaff(); }, []); const handleAddStaff = async (e: React.FormEvent) => { e.preventDefault(); try { await apiClient.post('/users', { name: fullName, email, password, role }); setIsAddModalOpen(false); setFullName(''); setEmail(''); setPassword(''); fetchStaff(); } catch (error: any) { alert(error.response?.data?.message || 'فشل إضافة الموظف'); } }; const toggleStatus = async (id: string) => { try { await apiClient.delete(`/users/${id}`); fetchStaff(); } catch (error) { alert('فشل تغيير حالة الموظف'); } }; return (

إدارة الموظفين

إدارة المحاسبين والمديرين في مكتبك.

{isLoading ? (
) : (
{staff.map((member) => (
{member.id !== currentUser?.id && ( )}

{member.name}

{member.role === 'admin' ? 'مدير نظام' : 'محاسب'}
{member.email}
))}
)} {/* ── Add Staff Modal ──────────────────────────────────── */} {isAddModalOpen && (

إضافة موظف جديد

سيتمكن الموظف من الدخول لمكتبك ومساعدة الشركات.

setFullName(e.target.value)} className="w-full bg-slate-50 border border-slate-200 rounded-2xl px-5 py-4 outline-none focus:border-primary-500 transition-all" placeholder="مثال: أحمد محمد" />
setEmail(e.target.value)} className="w-full bg-slate-50 border border-slate-200 rounded-2xl px-5 py-4 outline-none focus:border-primary-500 transition-all" placeholder="email@example.com" />
setPassword(e.target.value)} className="w-full bg-slate-50 border border-slate-200 rounded-2xl px-5 py-4 outline-none focus:border-primary-500 transition-all" placeholder="••••••••" />
)}
); };