first commit

This commit is contained in:
2026-08-11 13:16:33 +05:30
parent 18531bf46b
commit c8350563d9
388 changed files with 69656 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
import 'package:miler/Models/summary/riderweeklykms.dart';
import 'package:miler/controllers/riderkm.dart';
class RiderWeeklyKmProvider extends ChangeNotifier {
final RiderWeeklyKmController _controller = RiderWeeklyKmController();
bool isLoading = false;
String? error;
List<RiderWeeklyKms> kmsList = [];
double totalKms = 0.0;
Future<void> fetchRiderWeeklyKms(int userId) async {
isLoading = true;
error = null;
notifyListeners();
try {
final result = await _controller.getRiderWeeklyKms(userId);
kmsList = result['details'];
totalKms = result['total_kms'];
} catch (e) {
error = e.toString();
}
isLoading = false;
notifyListeners();
}
}

View File

@@ -0,0 +1,50 @@
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,
);
}
}