/**
 * Reglas compartidas para adjuntos de propuesta comercial (modal y drag-drop).
 * Incluye ZIP/RAR; algunos navegadores envían MIME vacío u "octet-stream" para RAR.
 */

export const PROPUESTA_DOC_ACCEPT =
  '.pdf,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.zip,.rar';

export const PROPUESTA_DOC_EXTENSIONS = [
  '.pdf',
  '.doc',
  '.docx',
  '.xls',
  '.xlsx',
  '.jpg',
  '.jpeg',
  '.png',
  '.zip',
  '.rar',
] as const;

export const PROPUESTA_DOC_MIME_TYPES = [
  'application/pdf',
  'application/msword',
  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  'application/vnd.ms-excel',
  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  'image/jpeg',
  'image/png',
  'application/zip',
  'application/x-zip-compressed',
  'application/vnd.rar',
  'application/x-rar-compressed',
  'application/x-rar',
] as const;

export const PROPUESTA_DOC_FORMATOS_TEXTO =
  'PDF, DOC, DOCX, XLS, XLSX, JPG, PNG, ZIP, RAR';

/** Alineado con `StoreFileRequest` (`max` en KB para archivos = 50 * 1024). */
export const PROPUESTA_DOC_MAX_BYTES = 50 * 1024 * 1024;

/** Etiqueta compacta, p. ej. "(máx. 50MB)" */
export const PROPUESTA_DOC_MAX_LABEL_COMPACT = '50MB';

/** Mismo límite en texto para SweetAlert ("50 MB"). */
export const PROPUESTA_DOC_MAX_LABEL_SPACED = '50 MB';

/** Límite alineado con StoreDetalleDocumentoContactoRequest `max:20480` (KB). */
export const CONTACTO_DETALLE_DOC_MAX_BYTES = 20480 * 1024;

export function propuestaDocumentFileExtension(file: File): string {
  const parts = file.name.split('.');
  if (parts.length < 2) return '';
  return '.' + (parts.pop() || '').toLowerCase();
}

export function isPropuestaDocumentFileAllowed(file: File): boolean {
  const ext = propuestaDocumentFileExtension(file);
  const exts = PROPUESTA_DOC_EXTENSIONS as unknown as string[];
  const mimes = PROPUESTA_DOC_MIME_TYPES as unknown as string[];
  if (exts.includes(ext)) {
    return true;
  }
  if (file.type && mimes.includes(file.type)) {
    return true;
  }
  return false;
}
