part of '../analytic.dart'; @freezed class PurchasingAnalytic with _$PurchasingAnalytic { const factory PurchasingAnalytic({ required String organizationId, required String outletId, required String outletName, required DateTime dateFrom, required DateTime dateTo, required String groupBy, required PurchasingAnalyticSummary summary, required List data, required List ingredientData, required List vendorData, }) = _PurchasingAnalytic; factory PurchasingAnalytic.empty() => PurchasingAnalytic( organizationId: '', outletId: '', outletName: '', dateFrom: DateTime.fromMillisecondsSinceEpoch(0), dateTo: DateTime.fromMillisecondsSinceEpoch(0), groupBy: '', summary: PurchasingAnalyticSummary.empty(), data: [], ingredientData: [], vendorData: [], ); } @freezed class PurchasingAnalyticSummary with _$PurchasingAnalyticSummary { const factory PurchasingAnalyticSummary({ required int totalPurchases, required int totalPurchaseOrders, required int totalQuantity, required double averagePurchaseOrderValue, required int totalIngredients, required int totalVendors, }) = _PurchasingAnalyticSummary; factory PurchasingAnalyticSummary.empty() => const PurchasingAnalyticSummary( totalPurchases: 0, totalPurchaseOrders: 0, totalQuantity: 0, averagePurchaseOrderValue: 0, totalIngredients: 0, totalVendors: 0, ); } @freezed class PurchasingAnalyticData with _$PurchasingAnalyticData { const factory PurchasingAnalyticData({ required DateTime date, required int purchases, required int purchaseOrders, required int quantity, required int ingredients, required int vendors, }) = _PurchasingAnalyticData; factory PurchasingAnalyticData.empty() => PurchasingAnalyticData( date: DateTime.fromMillisecondsSinceEpoch(0), purchases: 0, purchaseOrders: 0, quantity: 0, ingredients: 0, vendors: 0, ); } @freezed class PurchasingIngredientData with _$PurchasingIngredientData { const factory PurchasingIngredientData({ required String ingredientId, required String ingredientName, required int quantity, required int totalCost, required double averageUnitCost, required int purchaseOrderCount, }) = _PurchasingIngredientData; factory PurchasingIngredientData.empty() => const PurchasingIngredientData( ingredientId: '', ingredientName: '', quantity: 0, totalCost: 0, averageUnitCost: 0, purchaseOrderCount: 0, ); } @freezed class PurchasingVendorData with _$PurchasingVendorData { const factory PurchasingVendorData({ required String vendorId, required String vendorName, required int totalCost, required int purchaseOrderCount, required int ingredientCount, required int quantity, }) = _PurchasingVendorData; factory PurchasingVendorData.empty() => const PurchasingVendorData( vendorId: '', vendorName: '', totalCost: 0, purchaseOrderCount: 0, ingredientCount: 0, quantity: 0, ); }