/**
 * Utility functions for formatting data
 */

/**
 * Format price with Persian number formatting and تومان suffix
 */
export const formatPrice = (price: number): string => {
    if (price === null || price === undefined || isNaN(price)) {
        return '0 تومان';
    }
    return new Intl.NumberFormat('fa-IR').format(price) + ' تومان';
};

/**
 * Format currency amount with Persian number formatting and تومان suffix
 */
export const formatCurrency = (amount: number): string => {
    if (amount === null || amount === undefined || isNaN(amount)) {
        return '0 تومان';
    }
    return new Intl.NumberFormat('fa-IR').format(amount) + ' تومان';
};

/**
 * Format date string to Persian locale
 */
export const formatDate = (dateString: string | Date): string => {
    if (!dateString) return '-';
    
    try {
        const date = typeof dateString === 'string' ? new Date(dateString) : dateString;
        if (isNaN(date.getTime())) return '-';
        
        return date.toLocaleDateString('fa-IR');
    } catch {
        return '-';
    }
};

/**
 * Format date and time string to Persian locale
 */
export const formatDateTime = (dateString: string | Date): string => {
    if (!dateString) return '-';
    
    try {
        const date = typeof dateString === 'string' ? new Date(dateString) : dateString;
        if (isNaN(date.getTime())) return '-';
        
        return date.toLocaleDateString('fa-IR', {
            year: 'numeric',
            month: 'long',
            day: 'numeric',
            hour: '2-digit',
            minute: '2-digit',
        });
    } catch {
        return '-';
    }
};

/**
 * Format number with thousands separator (Persian)
 */
export const formatNumber = (num: number): string => {
    if (num === null || num === undefined || isNaN(num)) {
        return '0';
    }
    return new Intl.NumberFormat('fa-IR').format(num);
};

/**
 * Format date string to local datetime input format (YYYY-MM-DDTHH:mm)
 */
export const formatDateTimeLocal = (dateString?: string | Date): string => {
    if (!dateString) return '';
    try {
        const date = typeof dateString === 'string' ? new Date(dateString) : dateString;
        if (isNaN(date.getTime())) return '';
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');
        const hours = String(date.getHours()).padStart(2, '0');
        const minutes = String(date.getMinutes()).padStart(2, '0');
        return `${year}-${month}-${day}T${hours}:${minutes}`;
    } catch {
        return '';
    }
};

