33 lines
1.1 KiB
TypeScript
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)
|
|
}
|