98 lines
3.1 KiB
Dart
98 lines
3.1 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:fl_chart/fl_chart.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import '../../constant/links.dart';
|
|
import '../../models/model/passengers_model.dart';
|
|
import '../functions/crud.dart';
|
|
|
|
class StaticController extends GetxController {
|
|
Map<String, dynamic> jsonData1 = {};
|
|
Map<String, dynamic> jsonData2 = {};
|
|
List staticList = [];
|
|
var chartDataPassengers;
|
|
var chartDataDrivers;
|
|
var chartDataDriversCalling;
|
|
var chartDataDriversMatchingNotes;
|
|
bool isLoading = false;
|
|
String totalMonthlyPassengers = '';
|
|
String totalMonthlyDrivers = '';
|
|
late List<MonthlyPassengerInstall> passengersData;
|
|
late List<MonthlyDriverInstall> driversData;
|
|
|
|
Future<void> fetch() async {
|
|
isLoading = true;
|
|
update(); // Notify the observers about the loading state change
|
|
|
|
var res = await CRUD().get(
|
|
link: AppLink.getPassengersStatic,
|
|
payload: {},
|
|
);
|
|
jsonData1 = jsonDecode(res);
|
|
var jsonResponse = jsonDecode(res) as Map<String, dynamic>;
|
|
isLoading = false;
|
|
final List<dynamic> jsonData = jsonResponse['message'];
|
|
totalMonthlyPassengers = jsonData[0]['totalMonthly'].toString();
|
|
passengersData = jsonData.map<MonthlyPassengerInstall>((item) {
|
|
return MonthlyPassengerInstall.fromJson(item);
|
|
}).toList();
|
|
final List<FlSpot> spots = passengersData
|
|
.map((data) => FlSpot(
|
|
data.day.toDouble(),
|
|
data.totalPassengers.toDouble(),
|
|
))
|
|
.toList();
|
|
chartDataPassengers = spots;
|
|
|
|
update(); // Notify the observers about the data and loading state change
|
|
}
|
|
|
|
Future<void> fetchDrivers() async {
|
|
isLoading = true;
|
|
update(); // Notify the observers about the loading state change
|
|
|
|
var res = await CRUD().get(
|
|
link: AppLink.getdriverstotalMonthly,
|
|
payload: {},
|
|
);
|
|
jsonData2 = jsonDecode(res);
|
|
var jsonResponse = jsonDecode(res) as Map<String, dynamic>;
|
|
isLoading = false;
|
|
final List<dynamic> jsonData = jsonResponse['message'];
|
|
staticList = jsonData;
|
|
totalMonthlyDrivers = jsonData[0]['totalDrivers'].toString();
|
|
driversData = jsonData.map<MonthlyDriverInstall>((item) {
|
|
return MonthlyDriverInstall.fromJson(item);
|
|
}).toList();
|
|
final List<FlSpot> spots = driversData
|
|
.map((data) => FlSpot(
|
|
data.day.toDouble(),
|
|
data.dailyTotalDrivers.toDouble(),
|
|
))
|
|
.toList();
|
|
chartDataDrivers = spots;
|
|
final List<FlSpot> spotsCalling = driversData
|
|
.map((data) => FlSpot(
|
|
data.day.toDouble(),
|
|
data.dailyTotalCallingDrivers.toDouble(),
|
|
))
|
|
.toList();
|
|
chartDataDriversCalling = spotsCalling;
|
|
final List<FlSpot> spotsTotalMatchingNotes = driversData
|
|
.map((data) => FlSpot(
|
|
data.day.toDouble(),
|
|
data.dailyMatchingNotes.toDouble(),
|
|
))
|
|
.toList();
|
|
chartDataDriversMatchingNotes = spotsTotalMatchingNotes;
|
|
|
|
update(); // Notify the observers about the data and loading state change
|
|
}
|
|
|
|
Future getAll() async {
|
|
await fetch();
|
|
await fetchDrivers();
|
|
}
|
|
}
|