part of '../analytic.dart'; @freezed class InventoryAnalytic with _$InventoryAnalytic { const factory InventoryAnalytic({ required InventoryAnalyticSummary summary, required List products, required List ingredients, }) = _InventoryAnalytic; factory InventoryAnalytic.empty() => InventoryAnalytic( summary: InventoryAnalyticSummary.empty(), products: const [], ingredients: const [], ); } @freezed class InventoryAnalyticSummary with _$InventoryAnalyticSummary { const factory InventoryAnalyticSummary({ required int totalProducts, required int totalIngredients, required int totalValue, required int lowStockProducts, required int lowStockIngredients, required int zeroStockProducts, required int zeroStockIngredients, required int totalSoldProducts, required int totalSoldIngredients, required String outletId, required String outletName, required DateTime generatedAt, }) = _InventoryAnalyticSummary; factory InventoryAnalyticSummary.empty() => InventoryAnalyticSummary( totalProducts: 0, totalIngredients: 0, totalValue: 0, lowStockProducts: 0, lowStockIngredients: 0, zeroStockProducts: 0, zeroStockIngredients: 0, totalSoldProducts: 0, totalSoldIngredients: 0, outletId: '', outletName: '', generatedAt: DateTime.now(), ); } @freezed class InventoryAnalyticProductItem with _$InventoryAnalyticProductItem { const factory InventoryAnalyticProductItem({ required String id, required String productId, required String productName, required String categoryName, required int quantity, required int reorderLevel, required num unitCost, required int totalValue, required int totalIn, required int totalOut, required bool isLowStock, required bool isZeroStock, required DateTime updatedAt, }) = _InventoryAnalyticProductItem; factory InventoryAnalyticProductItem.empty() => InventoryAnalyticProductItem( id: '', productId: '', productName: '', categoryName: '', quantity: 0, reorderLevel: 0, unitCost: 0, totalValue: 0, totalIn: 0, totalOut: 0, isLowStock: false, isZeroStock: false, updatedAt: DateTime.now(), ); } @freezed class InventoryAnalyticIngredientItem with _$InventoryAnalyticIngredientItem { const factory InventoryAnalyticIngredientItem({ required String id, required String ingredientId, required String ingredientName, required String unitName, required int quantity, required int reorderLevel, required num unitCost, required int totalValue, required int totalIn, required int totalOut, required bool isLowStock, required bool isZeroStock, required DateTime updatedAt, }) = _InventoryAnalyticIngredientItem; factory InventoryAnalyticIngredientItem.empty() => InventoryAnalyticIngredientItem( id: '', ingredientId: '', ingredientName: '', unitName: '', quantity: 0, reorderLevel: 0, unitCost: 0, totalValue: 0, totalIn: 0, totalOut: 0, isLowStock: false, isZeroStock: false, updatedAt: DateTime.now(), ); }