import 'package:pshared/data/dto/ledger/account.dart'; import 'package:pshared/data/mapper/describable.dart'; import 'package:pshared/data/mapper/ledger/balance.dart'; import 'package:pshared/data/mapper/ledger/role.dart'; import 'package:pshared/data/mapper/ledger/status.dart'; import 'package:pshared/data/mapper/ledger/type.dart'; import 'package:pshared/models/describable.dart'; import 'package:pshared/models/ledger/account.dart'; extension LedgerAccountDTOMapper on LedgerAccountDTO { LedgerAccount toDomain() => LedgerAccount( ledgerAccountRef: ledgerAccountRef, organizationRef: organizationRef, ownerRef: ownerRef, accountCode: accountCode, accountType: accountType.toDomain(), currency: currency, status: status.toDomain(), allowNegative: allowNegative, role: role.toDomain(), metadata: metadata, createdAt: createdAt, updatedAt: updatedAt, describable: describable?.toDomain() ?? newDescribable(name: '', description: null), balance: balance?.toDomain(), ); } extension LedgerAccountModelMapper on LedgerAccount { LedgerAccountDTO toDTO() => LedgerAccountDTO( ledgerAccountRef: ledgerAccountRef, organizationRef: organizationRef, ownerRef: ownerRef, accountCode: accountCode, accountType: accountType.toDTO(), currency: currency, status: status.toDTO(), allowNegative: allowNegative, role: role.toDTO(), metadata: metadata, createdAt: createdAt, updatedAt: updatedAt, describable: describable.toDTO(), balance: balance?.toDTO(), ); }