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;