Files
dkala-api/src/modules/admin/transformers/admin-detail.transformer.ts
T
2026-02-10 10:46:04 +03:30

57 lines
1.3 KiB
TypeScript

import type { Admin } from '../entities/admin.entity';
export interface AdminDetailResponse {
id: string;
firstName?: string;
lastName?: string;
phone: string;
role: {
id: string;
name: string;
};
permissions: string[];
shop?: {
id: string;
name: string;
slug: string;
};
}
export class AdminDetailTransformer {
static transform(admin: Admin, shopId?: string): AdminDetailResponse | null {
if (!admin) {
return null;
}
// Extract role information - filter by shop if shopId is provided
const adminRoles = admin.roles.getItems();
const adminRole = shopId
? adminRoles.find(r => r.role && r.shop?.id === shopId)
: adminRoles.find(r => r.role);
if (!adminRole || !adminRole.role) {
return null;
}
const role = adminRole.role;
return {
id: admin.id,
firstName: admin.firstName,
lastName: admin.lastName,
phone: admin.phone,
role: {
id: role.id,
name: role.name,
},
permissions: role.permissions.getItems().map(p => p.name) || [],
shop: {
id: adminRole.shop?.id || '',
name: adminRole.shop?.name || '',
slug: adminRole.shop?.slug || '',
},
};
}
}
// Extract permissions - ensure collection is loaded if needed