part of '../analytic_dtos.dart'; @freezed class PurchasingAnalyticDto with _$PurchasingAnalyticDto { const PurchasingAnalyticDto._(); const factory PurchasingAnalyticDto({ @JsonKey(name: 'organization_id') String? organizationId, @JsonKey(name: 'outlet_id') String? outletId, @JsonKey(name: 'outlet_name') String? outletName, @JsonKey(name: 'date_from') DateTime? dateFrom, @JsonKey(name: 'date_to') DateTime? dateTo, @JsonKey(name: 'group_by') String? groupBy, @JsonKey(name: 'summary') PurchasingAnalyticSummaryDto? summary, @JsonKey(name: 'data') List? data, @JsonKey(name: 'ingredient_data') List? ingredientData, @JsonKey(name: 'vendor_data') List? vendorData, }) = _PurchasingAnalyticDto; factory PurchasingAnalyticDto.fromJson(Map json) => _$PurchasingAnalyticDtoFromJson(json); PurchasingAnalytic toDomain() => PurchasingAnalytic( organizationId: organizationId ?? '', outletId: outletId ?? '', outletName: outletName ?? '', dateFrom: dateFrom ?? DateTime.fromMillisecondsSinceEpoch(0), dateTo: dateTo ?? DateTime.fromMillisecondsSinceEpoch(0), groupBy: groupBy ?? '', summary: summary?.toDomain() ?? PurchasingAnalyticSummary.empty(), data: data?.map((e) => e.toDomain()).toList() ?? [], ingredientData: ingredientData?.map((e) => e.toDomain()).toList() ?? [], vendorData: vendorData?.map((e) => e.toDomain()).toList() ?? [], ); } @freezed class PurchasingAnalyticSummaryDto with _$PurchasingAnalyticSummaryDto { const PurchasingAnalyticSummaryDto._(); const factory PurchasingAnalyticSummaryDto({ @JsonKey(name: 'total_purchases') num? totalPurchases, @JsonKey(name: 'total_purchase_orders') num? totalPurchaseOrders, @JsonKey(name: 'total_quantity') num? totalQuantity, @JsonKey(name: 'average_purchase_order_value') num? averagePurchaseOrderValue, @JsonKey(name: 'total_ingredients') num? totalIngredients, @JsonKey(name: 'total_vendors') num? totalVendors, }) = _PurchasingAnalyticSummaryDto; factory PurchasingAnalyticSummaryDto.fromJson(Map json) => _$PurchasingAnalyticSummaryDtoFromJson(json); PurchasingAnalyticSummary toDomain() => PurchasingAnalyticSummary( totalPurchases: totalPurchases?.toInt() ?? 0, totalPurchaseOrders: totalPurchaseOrders?.toInt() ?? 0, totalQuantity: totalQuantity?.toInt() ?? 0, averagePurchaseOrderValue: averagePurchaseOrderValue?.toDouble() ?? 0, totalIngredients: totalIngredients?.toInt() ?? 0, totalVendors: totalVendors?.toInt() ?? 0, ); } @freezed class PurchasingAnalyticDataDto with _$PurchasingAnalyticDataDto { const PurchasingAnalyticDataDto._(); const factory PurchasingAnalyticDataDto({ @JsonKey(name: 'date') DateTime? date, @JsonKey(name: 'purchases') num? purchases, @JsonKey(name: 'purchase_orders') num? purchaseOrders, @JsonKey(name: 'quantity') num? quantity, @JsonKey(name: 'ingredients') num? ingredients, @JsonKey(name: 'vendors') num? vendors, }) = _PurchasingAnalyticDataDto; factory PurchasingAnalyticDataDto.fromJson(Map json) => _$PurchasingAnalyticDataDtoFromJson(json); PurchasingAnalyticData toDomain() => PurchasingAnalyticData( date: date ?? DateTime.fromMillisecondsSinceEpoch(0), purchases: purchases?.toInt() ?? 0, purchaseOrders: purchaseOrders?.toInt() ?? 0, quantity: quantity?.toInt() ?? 0, ingredients: ingredients?.toInt() ?? 0, vendors: vendors?.toInt() ?? 0, ); } @freezed class PurchasingIngredientDataDto with _$PurchasingIngredientDataDto { const PurchasingIngredientDataDto._(); const factory PurchasingIngredientDataDto({ @JsonKey(name: 'ingredient_id') String? ingredientId, @JsonKey(name: 'ingredient_name') String? ingredientName, @JsonKey(name: 'quantity') num? quantity, @JsonKey(name: 'total_cost') num? totalCost, @JsonKey(name: 'average_unit_cost') num? averageUnitCost, @JsonKey(name: 'purchase_order_count') num? purchaseOrderCount, }) = _PurchasingIngredientDataDto; factory PurchasingIngredientDataDto.fromJson(Map json) => _$PurchasingIngredientDataDtoFromJson(json); PurchasingIngredientData toDomain() => PurchasingIngredientData( ingredientId: ingredientId ?? '', ingredientName: ingredientName ?? '', quantity: quantity?.toInt() ?? 0, totalCost: totalCost?.toInt() ?? 0, averageUnitCost: averageUnitCost?.toDouble() ?? 0, purchaseOrderCount: purchaseOrderCount?.toInt() ?? 0, ); } @freezed class PurchasingVendorDataDto with _$PurchasingVendorDataDto { const PurchasingVendorDataDto._(); const factory PurchasingVendorDataDto({ @JsonKey(name: 'vendor_id') String? vendorId, @JsonKey(name: 'vendor_name') String? vendorName, @JsonKey(name: 'total_cost') num? totalCost, @JsonKey(name: 'purchase_order_count') num? purchaseOrderCount, @JsonKey(name: 'ingredient_count') num? ingredientCount, @JsonKey(name: 'quantity') num? quantity, }) = _PurchasingVendorDataDto; factory PurchasingVendorDataDto.fromJson(Map json) => _$PurchasingVendorDataDtoFromJson(json); PurchasingVendorData toDomain() => PurchasingVendorData( vendorId: vendorId ?? '', vendorName: vendorName ?? '', totalCost: totalCost?.toInt() ?? 0, purchaseOrderCount: purchaseOrderCount?.toInt() ?? 0, ingredientCount: ingredientCount?.toInt() ?? 0, quantity: quantity?.toInt() ?? 0, ); }