part of '../analytic_dtos.dart'; @freezed class PaymentMethodAnalyticDto with _$PaymentMethodAnalyticDto { const PaymentMethodAnalyticDto._(); const factory PaymentMethodAnalyticDto({ @JsonKey(name: "organization_id") String? organizationId, @JsonKey(name: "outlet_id") String? outletId, @JsonKey(name: "date_from") DateTime? dateFrom, @JsonKey(name: "date_to") DateTime? dateTo, @JsonKey(name: "group_by") String? groupBy, @JsonKey(name: "summary") PaymentMethodAnalyticSummaryDto? summary, @JsonKey(name: "data") List? data, }) = _PaymentMethodAnalyticDto; factory PaymentMethodAnalyticDto.fromJson(Map json) => _$PaymentMethodAnalyticDtoFromJson(json); // Optional mapper ke domain PaymentMethodAnalytic toDomain() => PaymentMethodAnalytic( organizationId: organizationId ?? '', outletId: outletId ?? '', dateFrom: dateFrom ?? DateTime.now(), dateTo: dateTo ?? DateTime.now(), groupBy: groupBy ?? '', summary: summary?.toDomain() ?? PaymentMethodAnalyticSummary.empty(), data: data?.map((e) => e.toDomain()).toList() ?? [], ); } @freezed class PaymentMethodAnalyticItemDto with _$PaymentMethodAnalyticItemDto { const PaymentMethodAnalyticItemDto._(); const factory PaymentMethodAnalyticItemDto({ @JsonKey(name: "payment_method_id") String? paymentMethodId, @JsonKey(name: "payment_method_name") String? paymentMethodName, @JsonKey(name: "payment_method_type") String? paymentMethodType, @JsonKey(name: "total_amount") int? totalAmount, @JsonKey(name: "order_count") int? orderCount, @JsonKey(name: "payment_count") int? paymentCount, @JsonKey(name: "percentage") num? percentage, }) = _PaymentMethodAnalyticItemDto; factory PaymentMethodAnalyticItemDto.fromJson(Map json) => _$PaymentMethodAnalyticItemDtoFromJson(json); // Optional mapper ke domain PaymentMethodAnalyticItem toDomain() => PaymentMethodAnalyticItem( paymentMethodId: paymentMethodId ?? '', paymentMethodName: paymentMethodName ?? '', paymentMethodType: paymentMethodType ?? '', totalAmount: totalAmount ?? 0, orderCount: orderCount ?? 0, paymentCount: paymentCount ?? 0, percentage: percentage ?? 0, ); } @freezed class PaymentMethodAnalyticSummaryDto with _$PaymentMethodAnalyticSummaryDto { const PaymentMethodAnalyticSummaryDto._(); const factory PaymentMethodAnalyticSummaryDto({ @JsonKey(name: "total_amount") int? totalAmount, @JsonKey(name: "total_orders") int? totalOrders, @JsonKey(name: "total_payments") int? totalPayments, @JsonKey(name: "average_order_value") double? averageOrderValue, }) = _PaymentMethodAnalyticSummaryDto; factory PaymentMethodAnalyticSummaryDto.fromJson(Map json) => _$PaymentMethodAnalyticSummaryDtoFromJson(json); // Optional mapping ke domain entity PaymentMethodAnalyticSummary toDomain() => PaymentMethodAnalyticSummary( totalAmount: totalAmount ?? 0, totalOrders: totalOrders ?? 0, totalPayments: totalPayments ?? 0, averageOrderValue: averageOrderValue ?? 0.0, ); }