dashboard_provider.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import '../database/database.dart';
  3. import 'database_provider.dart';
  4. import '../database/daos/clienti_dao.dart';
  5. import '../database/daos/articoli_dao.dart';
  6. import '../database/daos/ordini_dao.dart';
  7. class DashboardData {
  8. final List<TopCustomerData> topCustomers;
  9. final List<TopItemData> topItems;
  10. final int newOrdersCount;
  11. final int ordersOnHoldCount;
  12. final int newCustomersCount;
  13. DashboardData({
  14. this.topCustomers = const [],
  15. this.topItems = const [],
  16. this.newOrdersCount = 0,
  17. this.ordersOnHoldCount = 0,
  18. this.newCustomersCount = 0,
  19. });
  20. }
  21. final dashboardProvider = FutureProvider.family<DashboardData, int>((ref, idAgente) async {
  22. final clientiDao = ref.read(clientiDaoProvider);
  23. final articoliDao = ref.read(articoliDaoProvider);
  24. final ordiniDao = ref.read(ordiniDaoProvider);
  25. final topCusts = await clientiDao.topCustomers(5);
  26. final topItems = await articoliDao.getMostSoldItems(5);
  27. final newOrdC = await ordiniDao.countNewOrders();
  28. final ordHold = await ordiniDao.countOrdersOnHold();
  29. final newCust = await clientiDao.countNewCustomers();
  30. return DashboardData(
  31. topCustomers: topCusts,
  32. topItems: topItems,
  33. newOrdersCount: newOrdC,
  34. ordersOnHoldCount: ordHold,
  35. newCustomersCount: newCust,
  36. );
  37. });