import api from './client' export interface Material { id: string name: string description: string | null source: string hartomat_code: number | null created_by_name: string | null aliases: string[] created_at: string updated_at: string } export interface MaterialAlias { id: string alias: string created_at: string } export async function listMaterials() { const res = await api.get('/materials') return res.data } export async function createMaterial(data: { name: string description?: string source?: string hartomat_code?: number | null }) { const res = await api.post('/materials', data) return res.data } export async function updateMaterial(id: string, data: { name?: string; description?: string }) { const res = await api.patch(`/materials/${id}`, data) return res.data } export async function deleteMaterial(id: string) { await api.delete(`/materials/${id}`) } export async function saveCadPartMaterials( orderId: string, itemId: string, parts: Array<{ part_name: string; material: string }>, ) { const res = await api.put<{ parts: Array<{ part_name: string; material: string }> }>( `/orders/${orderId}/items/${itemId}/cad-materials`, { parts }, ) return res.data } export async function seedHartOMatMaterials() { const res = await api.post<{ inserted: number; total: number }>('/materials/seed-hartomat') return res.data } export async function getNextCode(typePrefix: string) { const res = await api.get<{ next_code: number; prefix: string; next_consecutive: number }>( `/materials/next-code`, { params: { type_prefix: typePrefix } }, ) return res.data } // --- Alias endpoints --- export async function listAliases(materialId: string): Promise { const res = await api.get(`/materials/${materialId}/aliases`) return res.data } export async function addAlias(materialId: string, alias: string): Promise { const res = await api.post(`/materials/${materialId}/aliases`, { alias }) return res.data } export async function deleteAlias(aliasId: string): Promise { await api.delete(`/materials/aliases/${aliasId}`) } export async function seedAliases(): Promise<{ inserted: number; total: number }> { const res = await api.post<{ inserted: number; total: number }>('/materials/seed-aliases') return res.data } // --- Material check / batch alias --- export interface MaterialSuggestion { id: string name: string hartomat_code: string } export interface UnmappedMaterial { raw_name: string suggestions: MaterialSuggestion[] } export interface UnmappedMaterialCheck { unmapped: UnmappedMaterial[] total_materials: number mapped_count: number } export async function checkOrderMaterials(orderId: string): Promise { const res = await api.get(`/orders/${orderId}/check-materials`) return res.data } export async function batchCreateAliases( mappings: Array<{ alias: string; material_id: string }> ): Promise<{ created: number; skipped: number }> { const res = await api.post<{ created: number; skipped: number }>( '/materials/batch-aliases', { mappings } ) return res.data }