first commit
This commit is contained in:
58
lib/controllers/summary_controller.dart
Normal file
58
lib/controllers/summary_controller.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:miler/Models/summary/pickupstats.dart';
|
||||
import 'package:miler/providers/summary/summary.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
class SummaryController extends GetxController {
|
||||
final SummaryProvider _provider = SummaryProvider();
|
||||
|
||||
// Observables
|
||||
var today = 0.obs;
|
||||
var week = 0.obs;
|
||||
var month = 0.obs;
|
||||
var total = 0.obs;
|
||||
var cancelled = 0.obs;
|
||||
var isLoading = false.obs;
|
||||
|
||||
// Fetch stats and update values
|
||||
Future<void> fetchSummaryStats(int userId) async {
|
||||
try {
|
||||
isLoading.value = true;
|
||||
final PickupStats? stats = await _provider.fetchSummaryStats(userId);
|
||||
// A record of all zeros is what a freshly-seeded account returns, and it
|
||||
// is indistinguishable from no record at all — treat both as empty so
|
||||
// the demo figures can fill in.
|
||||
if (stats != null && (stats.total > 0 || stats.month > 0)) {
|
||||
today.value = stats.today;
|
||||
week.value = stats.week;
|
||||
month.value = stats.month;
|
||||
total.value = stats.total;
|
||||
cancelled.value = stats.cancelled;
|
||||
} else {
|
||||
_applyZero();
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint('Controller error: $e');
|
||||
_applyZero();
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// Nothing came back — show zeros.
|
||||
///
|
||||
/// This used to fill the tab with seeded demo figures in debug builds. That
|
||||
/// was defensible while the endpoint was unfinished and indefensible now that
|
||||
/// it is live: the one thing a pay screen must never do is invent a number,
|
||||
/// and a debug-only invention is still the number the person testing the app
|
||||
/// reports back as real. An empty Earnings tab is information — it says the
|
||||
/// fetch returned nothing — and the honest zero is what makes a broken
|
||||
/// endpoint visible instead of plausible.
|
||||
void _applyZero() {
|
||||
today.value = 0;
|
||||
week.value = 0;
|
||||
month.value = 0;
|
||||
total.value = 0;
|
||||
cancelled.value = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user