import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:miler/Models/summary/pickupstats.dart'; import 'package:miler/data/api_config.dart'; import 'package:miler/views/helpers/constants/apiconstants.dart'; import 'package:flutter/foundation.dart'; class SummaryProvider { final String baseUrl = ApiConstants.summaryApiLive; Future fetchSummaryStats(int userId) => _fetchSummaryStatsNew(); /// NEW API: GET /miler/earnings?period=daily|weekly|monthly /// -> data:{ completed_stops, total_kms, total_earnings, total_bonus }. /// PickupStats is stop COUNTS per period; map completed_stops for each. Future _fetchSummaryStatsNew() async { Future stops(String period) async { try { final uri = Uri.parse( ApiConfig.url('/miler/earnings'), ).replace(queryParameters: {'period': period}); final res = await http.get(uri, headers: await ApiConfig.authHeaders()); if (res.statusCode >= 200 && res.statusCode < 300) { final decoded = json.decode(res.body); final d = (decoded is Map && decoded['data'] is Map) ? decoded['data'] as Map : {}; return int.tryParse('${d['completed_stops'] ?? 0}') ?? 0; } } catch (_) {} return 0; } final today = await stops('daily'); final week = await stops('weekly'); final month = await stops('monthly'); ApiConfig.logGap( 'summaryStats', 'v1 earnings has no cancelled/total count; derived from completed_stops.', ); return PickupStats( today: today, week: week, month: month, total: month, cancelled: 0, ); } }