Files
sendico/frontend/pshared/lib/data/mapper/ledger/account.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(),
);
}