import { EditOutlined, MailOutlined, PhoneOutlined } from '@ant-design/icons'; import { PageHeader } from '@ant-design/pro-components'; import { Button, Card, Input, Space, Tooltip, Typography, Checkbox, Col, Form, Row, message } from 'antd'; import React, { useEffect, useState } from 'react'; import OrganizationAdminsTable from '@/components/admin-center/overview/organization-admins-table/organization-admins-table'; import { useAppSelector } from '@/hooks/useAppSelector'; import { RootState } from '@/app/store'; import { useTranslation } from 'react-i18next'; import OrganizationName from '@/components/admin-center/overview/organization-name/organization-name'; import OrganizationOwner from '@/components/admin-center/overview/organization-owner/organization-owner'; import { adminCenterApiService } from '@/api/admin-center/admin-center.api.service'; import { IOrganization, IOrganizationAdmin } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { tr } from 'date-fns/locale'; import { scheduleAPIService } from '@/api/schedule/schedule.api.service'; import { Settings } from '@/types/schedule/schedule-v2.types'; const { Text } = Typography; const Overview: React.FC = () => { const [organization, setOrganization] = useState(null); const [organizationAdmins, setOrganizationAdmins] = useState(null); const [loadingAdmins, setLoadingAdmins] = useState(false); const [workingDays, setWorkingDays] = useState([]); const [workingHours, setWorkingHours] = useState(8); const [saving, setSaving] = useState(false); const [form] = Form.useForm(); const themeMode = useAppSelector((state: RootState) => state.themeReducer.mode); const { t } = useTranslation('admin-center/overview'); const getOrganizationDetails = async () => { try { const res = await adminCenterApiService.getOrganizationDetails(); if (res.done) { setOrganization(res.body); } } catch (error) { logger.error('Error getting organization details', error); } }; const getOrgWorkingSettings = async () => { try { const res = await scheduleAPIService.fetchScheduleSettings(); if (res && res.done) { setWorkingDays(res.body.workingDays || ['Monday','Tuesday','Wednesday','Thursday','Friday']); setWorkingHours(res.body.workingHours || 8); form.setFieldsValue({ workingDays: res.body.workingDays || ['Monday','Tuesday','Wednesday','Thursday','Friday'], workingHours: res.body.workingHours || 8 }); } } catch (error) { logger.error('Error getting organization working settings', error); } }; const getOrganizationAdmins = async () => { setLoadingAdmins(true); try { const res = await adminCenterApiService.getOrganizationAdmins(); if (res.done) { setOrganizationAdmins(res.body); } } catch (error) { logger.error('Error getting organization admins', error); } finally { setLoadingAdmins(false); } }; const handleSave = async (values: any) => { setSaving(true); try { const res = await scheduleAPIService.updateScheduleSettings({ workingDays: values.workingDays, workingHours: values.workingHours, }); if (res && res.done) { message.success(t('saved')); setWorkingDays(values.workingDays); setWorkingHours(values.workingHours); getOrgWorkingSettings(); } } catch (error) { logger.error('Error updating organization working days/hours', error); message.error(t('errorSaving')); } finally { setSaving(false); } }; useEffect(() => { getOrganizationDetails(); getOrgWorkingSettings(); getOrganizationAdmins(); }, []); return (
{t('overview')}} style={{ padding: '16px 0' }} /> {t('organizationWorkingDaysAndHours') || 'Organization Working Days & Hours'}
{t('monday')} {t('tuesday')} {t('wednesday')} {t('thursday')} {t('friday')} {t('saturday')} {t('sunday')}
{t('admins')}
); }; export default Overview;