Files
boursecu_admin/src/utils/categorySelect.ts
T

33 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-06-13 17:38:35 +03:30
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
}))
}
2026-06-23 22:31:07 +03:30
/** همان منبع جدول دسته‌بندی‌ها — دسته‌های جدید از محصولات اضافه می‌شوند؛ ترتیب دستی حفظ می‌شود */
2026-06-13 17:38:35 +03:30
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)
}