Files
enaklo-flutter/lib/infrastructure/wallet/dto/wallet_summary_dto.dart
T

61 lines
2.0 KiB
Dart
Raw Normal View History

part of '../wallet_dtos.dart';
@freezed
abstract class WalletSummaryDto with _$WalletSummaryDto {
const factory WalletSummaryDto({
@JsonKey(name: 'point_balance') int? pointBalance,
@JsonKey(name: 'coin_balance') int? coinBalance,
@JsonKey(name: 'point_value') int? pointValue,
@JsonKey(name: 'point_discount_value') int? pointDiscountValue,
@JsonKey(name: 'nearest_expiring') NearestExpiringDto? nearestExpiring,
@JsonKey(name: 'recent_transactions')
List<WalletTransactionDto>? recentTransactions,
}) = _WalletSummaryDto;
factory WalletSummaryDto.fromJson(Map<String, dynamic> json) =>
_$WalletSummaryDtoFromJson(json);
const WalletSummaryDto._();
WalletSummary toDomain() => WalletSummary(
pointBalance: pointBalance ?? 0,
coinBalance: coinBalance ?? 0,
pointValue: pointValue ?? 0,
pointDiscountValue: pointDiscountValue ?? 0,
nearestExpiringPoint: nearestExpiring?.point?.toDomain(),
nearestExpiringCoin: nearestExpiring?.coin?.toDomain(),
recentTransactions:
recentTransactions?.map((e) => e.toDomain()).toList() ?? [],
);
}
@freezed
abstract class NearestExpiringDto with _$NearestExpiringDto {
const factory NearestExpiringDto({
@JsonKey(name: 'point') ExpiringAmountDto? point,
@JsonKey(name: 'coin') ExpiringAmountDto? coin,
}) = _NearestExpiringDto;
factory NearestExpiringDto.fromJson(Map<String, dynamic> json) =>
_$NearestExpiringDtoFromJson(json);
}
@freezed
abstract class ExpiringAmountDto with _$ExpiringAmountDto {
const factory ExpiringAmountDto({
@JsonKey(name: 'amount') int? amount,
@JsonKey(name: 'date') String? date,
}) = _ExpiringAmountDto;
factory ExpiringAmountDto.fromJson(Map<String, dynamic> json) =>
_$ExpiringAmountDtoFromJson(json);
const ExpiringAmountDto._();
ExpiringAmount? toDomain() {
final parsed = _parseDate(date);
if (parsed == null) return null;
return ExpiringAmount(amount: amount ?? 0, date: parsed);
}
}