| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import '../database/daos/statistiche_dao.dart';
- import '../database/daos/articoli_dao.dart';
- import '../database/daos/clienti_dao.dart';
- import '../database/daos/agenti_dao.dart';
- import '../database/database.dart';
- class StatisticsService {
- final StatisticheDao _statisticheDao;
- final ArticoliDao _articoliDao;
- final ClientiDao _clientiDao;
- final AgentiDao _agentiDao;
- StatisticsService(this._statisticheDao, this._articoliDao, this._clientiDao, this._agentiDao);
- Future<List<StatisticheVenditaData>> getStatsForAgent(int idAgente, {String? da, String? a}) async {
- final from = da ?? DateTime.now().subtract(const Duration(days: 365)).toIso8601String();
- final to = a ?? DateTime.now().toIso8601String();
- return _statisticheDao.getPerAgente(idAgente, from, to);
- }
- Future<double> getTotalForAgent(int idAgente, {String? da, String? a}) async {
- final stats = await getStatsForAgent(idAgente, da: da, a: a);
- return stats.fold<double>(0.0, (sum, s) => sum + (s.importo ?? 0.0));
- }
- Future<Map<String, double>> getTotalsByClient(int idAgente, {String? da, String? a}) async {
- final stats = await getStatsForAgent(idAgente, da: da, a: a);
- final result = <String, double>{};
- for (final s in stats) {
- final key = s.idCliente.toString();
- result[key] = (result[key] ?? 0) + (s.importo ?? 0);
- }
- return result;
- }
- Future<Map<String, double>> getTotalsByArticle(int idAgente, {String? da, String? a}) async {
- final stats = await getStatsForAgent(idAgente, da: da, a: a);
- final result = <String, double>{};
- for (final s in stats) {
- final key = s.idArticolo.toString();
- result[key] = (result[key] ?? 0) + (s.importo ?? 0);
- }
- return result;
- }
- Future<Map<String, double>> getMonthlyTotals(int idAgente, {int months = 12}) async {
- final to = DateTime.now();
- final from = DateTime(to.year, to.month - months, to.day);
- final stats = await _statisticheDao.getPerAgente(
- idAgente,
- from.toIso8601String(),
- to.toIso8601String(),
- );
- final result = <String, double>{};
- for (final s in stats) {
- if (s.dataFattura == null || s.dataFattura!.length < 7) continue;
- final monthKey = s.dataFattura!.substring(0, 7);
- result[monthKey] = (result[monthKey] ?? 0) + (s.importo ?? 0);
- }
- return result;
- }
- }
|