Files
2026-08-11 13:16:33 +05:30

51 lines
1.7 KiB
Dart

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<PickupStats?> 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<PickupStats?> _fetchSummaryStatsNew() async {
Future<int> 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,
);
}
}