Files
boursecu_admin/src/utils/categorySelect.ts
T
2026-06-23 22:31:07 +03:30

33 lines
1.1 KiB
TypeScript

import { getCategories, syncCategoriesFromProducts } from '@/api/category'
import type { Category } from '@/model/category'
import { PRODUCT_CATEGORY_ABSHODE } from '@/utils/productCategories'
export type CategorySelectItem = { key: string; value: string }
export function mapCategoriesToSelectItems(
rows: Category[],
metalHint = 'طلا، نقره، مس'
): CategorySelectItem[] {
return rows.map((category) => ({
key: category.name,
value:
category.name === PRODUCT_CATEGORY_ABSHODE
? `${category.name} (${metalHint})`
: category.name
}))
}
/** همان منبع جدول دسته‌بندی‌ها — دسته‌های جدید از محصولات اضافه می‌شوند؛ ترتیب دستی حفظ می‌شود */
export async function syncAndLoadCategories(options?: {
selectOnly?: boolean
metalHint?: string
}): Promise<CategorySelectItem[]> {
await syncCategoriesFromProducts()
const rows = await getCategories(
options?.selectOnly ? { select_only: true } : undefined
)
return mapCategoriesToSelectItems(rows, options?.metalHint)
}