59 lines
1.8 KiB
Dart
59 lines
1.8 KiB
Dart
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() {
|
|
final mappedDescribable = describable?.toDomain();
|
|
final fallbackName = metadata?['name']?.trim() ?? '';
|
|
final name = mappedDescribable?.name.trim().isNotEmpty == true
|
|
? mappedDescribable!.name
|
|
: fallbackName;
|
|
|
|
return 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: newDescribable(
|
|
name: name,
|
|
description: mappedDescribable?.description,
|
|
),
|
|
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(),
|
|
);
|
|
}
|