This commit is contained in:
sdarbinyan
2026-03-24 02:25:50 +04:00
parent 97214c3a90
commit 650bf137f2
18 changed files with 1036 additions and 164 deletions

View File

@@ -1,4 +1,5 @@
import { Item } from '../models';
import { Category } from '../models/category.model';
export function getDiscountedPrice(item: Item): number {
return item.price * (1 - (item.discount || 0) / 100);
@@ -69,20 +70,23 @@ export function getTranslatedField(
field: 'name' | 'simpleDescription',
lang: string
): string {
// 1. Check translations map (backOffice format)
// 1. Check translations map (already normalized to frontend codes)
const translation = item.translations?.[lang];
if (translation && translation[field]) {
return translation[field]!;
}
// 2. Check names[]/descriptions[] arrays (backend API format)
// 2. Check names[]/descriptions[] arrays (may have API codes: RU/EN/AM)
// Note: API has typo "valuue" in some responses — handle both
if (field === 'name' && item.names?.length) {
const entry = item.names.find(n => n.language === lang);
if (entry) return entry.value;
const entry = item.names.find(n => n.language === lang || n.language === lang.toUpperCase() || (lang === 'hy' && n.language === 'AM'));
const val = entry?.value || (entry as any)?.valuue || '';
if (val) return val;
}
if (field === 'simpleDescription' && item.descriptions?.length) {
const entry = item.descriptions.find(d => d.language === lang);
if (entry) return entry.value;
const entry = item.descriptions.find(d => d.language === lang || d.language === lang.toUpperCase() || (lang === 'hy' && d.language === 'AM'));
const val = entry?.value || (entry as any)?.valuue || '';
if (val) return val;
}
// 3. Fallback to base field
@@ -90,3 +94,19 @@ export function getTranslatedField(
if (field === 'simpleDescription') return item.simpleDescription || item.description || '';
return '';
}
/**
* Get translated category name for the current language.
*/
export function getTranslatedCategoryName(cat: Category, lang: string): string {
const translation = cat.translations?.[lang];
if (translation?.name) return translation.name;
if (cat.names?.length) {
const entry = cat.names.find(n => n.language === lang || n.language === lang.toUpperCase() || (lang === 'hy' && n.language === 'AM'));
const val = entry?.value || (entry as any)?.valuue || '';
if (val) return val;
}
return cat.name || '';
}