import { formatDate, formatDateTime } from '@/app/lib/formatDate'; import { useTranslations } from 'next-intl'; interface User { fullName: string; company: string | null; email: string; active: boolean; phone: string; genderType: 'MALE' | 'FEMALE'; birthday: string | null; createdAt: string; subscriptionType: 'DEMO' | string; tariffs: null; tariffInfo: TariffInfo; permission: null; verifiedStatus: 'VERIFIED' | 'PENDING' | 'UNVERIFIED'; } interface TariffInfo { id: string; status: 'EXPIRED' | 'ACTIVE' | 'PENDING'; startTariff: string; endTariff: string; tariffId: number; tariffName: string; tokens: number; maxFileOnDisk: number; currentFileOnDisk: number; currentFileCounts: number; maxFileCounts: number; } export function UserInfoModalWindow({ userInfo, setWindowClose, setWindowChildren }: { userInfo: User, // Исправлено: ожидаем User, а не TariffInfo setWindowClose: any, setWindowChildren: any }) { const t = useTranslations('Global'); const formatBytes = (bytes: number) => { if (bytes === 0) return '0 Bytes'; const k = 1024; const sizes = ['Bytes', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; }; const getStatusBadge = (status: string) => { const statusConfig = { 'ACTIVE': { class: 'status-active', text: 'Active' }, 'EXPIRED': { class: 'status-expired', text: 'Expired' }, 'PENDING': { class: 'status-pending', text: 'Pending' }, 'VERIFIED': { class: 'status-verified', text: 'Verified' }, 'UNVERIFIED': { class: 'status-unverified', text: 'Unverified' } }; const config = statusConfig[status as keyof typeof statusConfig]; return config ? {config.text} : status; }; const getGenderText = (gender: string) => { return gender === 'MALE' ? t('male') : t('female'); }; return (
{/* Карточка информации о пользователе */}

{t('userInformation')}

{t('fullName')}:
{userInfo?.fullName ? userInfo.fullName : '-'}
{t('email')}:
{userInfo?.email ? userInfo.email : '-'}
{t('phone')}:
{userInfo?.phone ? userInfo.phone : '-'}
{t('company')}:
{userInfo?.company ? userInfo.company : '-'}
{t('gender')}:
{getGenderText(userInfo?.genderType)}
{t('birthday')}:
{userInfo?.birthday ? formatDate(userInfo.birthday) : '-'}
{t('createdAt')}:
{formatDateTime(userInfo?.createdAt)}
{t('verifiedStatus')}:
{getStatusBadge(userInfo?.verifiedStatus)}
{t('active')}:
{userInfo?.active ? 'active' : 'not active'}
{/* Карточка информации о тарифе */}

{t('tariffInformation')}

{t('tariffName')}:
{userInfo?.tariffInfo?.tariffName ? userInfo?.tariffInfo?.tariffName : '-'}
{t('tariffStatus')}:
{getStatusBadge(userInfo?.tariffInfo?.status)}
{t('tokens')}:
{userInfo?.tariffInfo?.tokens ? userInfo?.tariffInfo?.tokens : '-'}
{t('startDate')}:
{formatDate(userInfo?.tariffInfo?.startTariff)}
{t('endDate')}:
{formatDate(userInfo?.tariffInfo?.endTariff)}
{/* Карточка использования диска */}

{t('storageInformation')}

{t('diskUsage')}:
{formatBytes(userInfo?.tariffInfo?.currentFileOnDisk)} / {formatBytes(userInfo?.tariffInfo?.maxFileOnDisk)}
{t('fileCount')}:
{userInfo?.tariffInfo?.currentFileCounts} / {userInfo?.tariffInfo?.maxFileCounts}
); }