/**
 * File Validation Error Catalog
 *
 * Defines all file validation related errors.
 */

import { ErrorCategory, ErrorEntry } from '../types';

export const FILE_VALIDATION_ERRORS: Record<string, ErrorEntry> = {
	FILE_TOO_LARGE: {
		code: 'FILE_TOO_LARGE',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Kích thước file vượt quá giới hạn cho phép',
			en: 'File size exceeds maximum limit',
		},
	},
	INVALID_FILE_TYPE: {
		code: 'INVALID_FILE_TYPE',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Loại file không được phép',
			en: 'File type not allowed',
		},
	},
	INVALID_MIME_TYPE: {
		code: 'INVALID_MIME_TYPE',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Định dạng MIME không được hỗ trợ',
			en: 'MIME type not supported',
		},
	},
	FILE_EXTENSION_MISMATCH: {
		code: 'FILE_EXTENSION_MISMATCH',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Phần mở rộng file không khớp với định dạng',
			en: 'File extension does not match format',
		},
	},
	MISSING_FILE_FIELDS: {
		code: 'MISSING_FILE_FIELDS',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Thiếu thông tin file bắt buộc',
			en: 'Missing required file fields',
		},
	},
	FILE_NOT_UPLOADED: {
		code: 'FILE_NOT_UPLOADED',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'File chưa được tải lên storage',
			en: 'File not uploaded to storage',
		},
	},
	FILE_SIZE_MISMATCH: {
		code: 'FILE_SIZE_MISMATCH',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Kích thước file thực tế không khớp với khai báo',
			en: 'Actual file size does not match declared size',
		},
	},
	UPLOAD_TOKEN_INVALID: {
		code: 'UPLOAD_TOKEN_INVALID',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'low',
		message: {
			vi: 'Upload token không hợp lệ hoặc đã hết hạn',
			en: 'Invalid or expired upload token',
		},
	},
	MALWARE_DETECTED: {
		code: 'MALWARE_DETECTED',
		httpStatus: 422,
		category: ErrorCategory.VALIDATION,
		severity: 'medium',
		message: {
			vi: 'Phát hiện mã độc trong file',
			en: 'Malware detected in file',
		},
	},
};
