import React, { useState, useEffect } from 'react'; import { Box, Typography, TextField, Button, Select, MenuItem, Checkbox, ListItemText, OutlinedInput, styled, useTheme, LinearProgress } from '@mui/material'; import AddAPhotoOutlinedIcon from '@mui/icons-material/AddAPhotoOutlined'; import authService from '../../../services/authService'; import { useRestaurant } from '../../../contexts/RestaurantContext'; import AddIcon from "@mui/icons-material/Add"; const AccountProfile = () => { const theme = useTheme(); const { restaurantId } = useRestaurant(); const [editMode, setEditMode] = useState(false); const [profileImage, setProfileImage] = useState(null); const [form, setForm] = useState({ restaurant_name: '', restaurant_type: '', Address: '', City: '', Postal_code: '', Phone: '', Email: '', Operation_hour: '', host_type: '', collaboration_type: '', closed_days: [], equipment: [], // array of {name, quantity} Maximum_orders_per_day: 0, Number_of_Cheff: 0, Number_of_Waiters: 0, Number_of_Cookers: 0, }); const daysOfWeek = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; const Input = styled('input')({ display: 'none' }); useEffect(() => { const fetchProfile = async () => { if (!restaurantId) return; const data = await authService.getRestaurantProfile(restaurantId); console.log("PROFILE DATA ===>", data); // 👈 يوضح الأسماء الحقيقية if (data) { setForm({ restaurant_name: data.restaurant_name, restaurant_type: data.restaurant_type, Address: data.Address, City: data.City, Postal_code: data.Postal_code, Phone: data.Phone, Email: data.Email, Operation_hour: data.Operation_hour, host_type: data.host_type, collaboration_type: data.collaboration_type, closed_days: data.closed_days || [], equipment: Object.entries(data.equipment || {}).map(([name, quantity]) => ({ name, quantity })), Maximum_orders_per_day: data.Maximum_orders_per_day ?? data.maximum_orders_per_day ?? 0, Number_of_Cheff: data.Number_of_Cheff ?? data.number_of_cheff ?? 0, Number_of_Waiters: data.Number_of_Waiters ?? data.number_of_waiters ?? 0, Number_of_Cookers: data.Number_of_Cookers ?? data.number_of_cookers ?? 0, }); } }; fetchProfile(); }, [restaurantId]); const handleImageUpload = (event) => { if (event.target.files && event.target.files[0]) { setProfileImage(event.target.files[0]); } }; const handleChange = (field, value) => setForm(prev => ({ ...prev, [field]: value })); const handleEquipmentChange = (index, key, value) => { const newEquipment = [...form.equipment]; newEquipment[index][key] = value; setForm(prev => ({ ...prev, equipment: newEquipment })); }; const addEquipment = () => { setForm(prev => ({ ...prev, equipment: [...prev.equipment, { name: '', quantity: 0 }] })); }; const removeEquipment = (index) => { const newEquipment = [...form.equipment]; newEquipment.splice(index, 1); setForm(prev => ({ ...prev, equipment: newEquipment })); }; const renderField = (label, value, fieldKey, options = null) => ( {label} {editMode ? ( options ? ( ) : ( handleChange(fieldKey, e.target.value)} fullWidth variant="outlined" sx={{ '& input': { fontWeight: 500, fontSize: '16px', color: 'black' }, '& input::placeholder': { color: '#969BA7' }, '& .MuiOutlinedInput-root': { borderRadius: '10px', transition: '0.3s', '&.Mui-focused fieldset': { borderColor: theme.palette.primary.main, boxShadow: '0 0 0 2px rgba(255, 145, 77, 0.2)', }, }, }} /> ) ) : ( {Array.isArray(value) ? value.join(', ') : value} )} ); const handleSave = async () => { if (!restaurantId) return; const equipmentObj = {}; form.equipment.forEach(eq => { if (eq.name) equipmentObj[eq.name] = eq.quantity; }); const payload = { ...form, equipment: equipmentObj }; if (profileImage) payload.logo = profileImage; const result = await authService.updateRestaurantProfile(restaurantId, payload); if (result.success) { alert("Profile updated successfully!"); setEditMode(false); const updated = await authService.getRestaurantProfile(restaurantId); if (updated) setForm({ ...updated, equipment: Object.entries(updated.equipment || {}).map(([name, quantity]) => ({ name, quantity })), }); } else { alert(`Update failed: ${result.message}`); } }; // داخل AccountProfile const collaborationOptions = [ { value: 'fine_dining', label: 'Fine Dining' }, { value: 'catering_services', label: 'Catering Services' }, { value: 'fast_food', label: 'Fast Food' }, { value: 'cloud_kitchen', label: 'Cloud Kitchen' } ]; return ( Restaurant Profile {/* صورة البروفايل */} {/* */} {/* الحقول */} {renderField('Restaurant Name', form.restaurant_name, 'restaurant_name')} {renderField('Restaurant Type', form.restaurant_type, 'restaurant_type')} {renderField('Address', form.Address, 'Address')} {renderField('City', form.City, 'City')} {renderField('Postal Code', form.Postal_code, 'Postal_code')} {renderField('Phone', form.Phone, 'Phone')} {renderField('Email', form.Email, 'Email')} {renderField('Operation Hours', form.Operation_hour, 'Operation_hour')} {renderField('Host Type', form.host_type, 'host_type')} Collaboration Type {editMode ? ( ) : ( {form.collaboration_type ? collaborationOptions.find(opt => opt.value === form.collaboration_type)?.label : 'None'} )} {renderField('Closed Days', form.closed_days, 'closed_days', daysOfWeek)} {/* القدرة التشغيلية */} {renderField('Maximum Orders per Day', form.Maximum_orders_per_day, 'Maximum_orders_per_day')} {renderField('Number of Chefs', form.Number_of_Cheff, 'Number_of_Cheff')} {renderField('Number of Waiters', form.Number_of_Waiters, 'Number_of_Waiters')} {renderField('Number of Cookers', form.Number_of_Cookers, 'Number_of_Cookers')} {/* المعدات */} Equipment Name {form.equipment.map((eq, index) => ( handleEquipmentChange(index, 'name', e.target.value)} fullWidth variant="outlined" disabled={!editMode} sx={{ '& input': { fontWeight: 500, fontSize: '16px' } }} /> handleEquipmentChange(index, 'quantity', Number(e.target.value))} fullWidth variant="outlined" disabled={!editMode} sx={{ '& input': { fontWeight: 500, fontSize: '16px' } ,borderRadius:20}} /> {editMode && ( )} ))} {editMode && ( )} {/* أزرار التحكم */} {editMode ? ( <> ) : ( )} ); }; export default AccountProfile;