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') String? dateFrom, @JsonKey(name: 'date_to') String? dateTo, @JsonKey(name: 'group_by') String? groupBy, @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, @JsonKey(name: 'data') List? data, }) = _PaymentMethodAnalyticDto; factory PaymentMethodAnalyticDto.fromJson(Map json) => _$PaymentMethodAnalyticDtoFromJson(json); PaymentMethodAnalytic toDomain() { return PaymentMethodAnalytic( organizationId: organizationId ?? '', outletId: outletId ?? '', dateFrom: dateFrom ?? '', dateTo: dateTo ?? '', groupBy: groupBy ?? '', summary: summary?.toDomain() ?? PaymentMethodSummary.empty(), data: data?.map((e) => e.toDomain()).toList() ?? [], ); } } @freezed class PaymentMethodItemDto with _$PaymentMethodItemDto { const PaymentMethodItemDto._(); const factory PaymentMethodItemDto({ @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') num? totalAmount, @JsonKey(name: 'order_count') int? orderCount, @JsonKey(name: 'payment_count') int? paymentCount, @JsonKey(name: 'percentage') double? percentage, }) = _PaymentMethodItemDto; factory PaymentMethodItemDto.fromJson(Map json) => _$PaymentMethodItemDtoFromJson(json); PaymentMethodItem toDomain() { return PaymentMethodItem( paymentMethodId: paymentMethodId ?? '', paymentMethodName: paymentMethodName ?? '', paymentMethodType: paymentMethodType ?? '', totalAmount: totalAmount ?? 0, orderCount: orderCount ?? 0, paymentCount: paymentCount ?? 0, percentage: percentage ?? 0.0, ); } } @freezed class PaymentMethodSummaryDto with _$PaymentMethodSummaryDto { const PaymentMethodSummaryDto._(); const factory PaymentMethodSummaryDto({ @JsonKey(name: 'total_amount') num? totalAmount, @JsonKey(name: 'total_orders') int? totalOrders, @JsonKey(name: 'total_payments') int? totalPayments, @JsonKey(name: 'average_order_value') double? averageOrderValue, }) = _PaymentMethodSummaryDto; factory PaymentMethodSummaryDto.fromJson(Map json) => _$PaymentMethodSummaryDtoFromJson(json); PaymentMethodSummary toDomain() { return PaymentMethodSummary( totalAmount: totalAmount ?? 0, totalOrders: totalOrders ?? 0, totalPayments: totalPayments ?? 0, averageOrderValue: averageOrderValue ?? 0.0, ); } }