Update: 2026-07-11 00:49:03
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import 'dart:convert';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:siro_admin/constant/links.dart';
|
||||
import 'package:siro_admin/controller/functions/crud.dart';
|
||||
import '../../print.dart';
|
||||
|
||||
class LiveAnalyticsController extends GetxController {
|
||||
bool isLoading = true;
|
||||
String selectedDate = '';
|
||||
|
||||
Map<String, dynamic> allData = {};
|
||||
|
||||
Map<String, dynamic> get realtime => _section('realtime');
|
||||
Map<String, dynamic> get gap => _section('gap');
|
||||
Map<String, dynamic> get heatmap => _section('heatmap');
|
||||
Map<String, dynamic> get pricing => _section('pricing');
|
||||
Map<String, dynamic> get revenue => _section('revenue');
|
||||
Map<String, dynamic> get growth => _section('growth');
|
||||
Map<String, dynamic> get market => _section('market');
|
||||
Map<String, dynamic> get complaints => _section('complaints');
|
||||
Map<String, dynamic> get funnel => _section('funnel');
|
||||
Map<String, dynamic> get hourly => _section('hourly');
|
||||
Map<String, dynamic> get weekly => _section('weekly');
|
||||
Map<String, dynamic> get zones => _section('zones');
|
||||
Map<String, dynamic> get retention => _section('retention');
|
||||
Map<String, dynamic> get competitor => _section('competitor');
|
||||
|
||||
List<String> availableDates = [];
|
||||
|
||||
Map<String, dynamic> _section(String key) {
|
||||
final d = allData[key];
|
||||
if (d is Map<String, dynamic>) return d;
|
||||
return {};
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
final now = DateTime.now();
|
||||
selectedDate =
|
||||
'${now.year}-${now.month.toString().padLeft(2, '0')}-${now.day.toString().padLeft(2, '0')}';
|
||||
fetchAll();
|
||||
}
|
||||
|
||||
Future<void> fetchAll() async {
|
||||
isLoading = true;
|
||||
update();
|
||||
|
||||
try {
|
||||
var res = await CRUD().get(
|
||||
link: AppLink.analyticsDashboardData,
|
||||
payload: {'date': selectedDate, 'section': 'all'},
|
||||
);
|
||||
|
||||
if (res != 'failure' && res != null) {
|
||||
var d = res is String ? jsonDecode(res) : res;
|
||||
if (d['status'] == 'success' && d['data'] != null) {
|
||||
allData = Map<String, dynamic>.from(d['data']);
|
||||
availableDates =
|
||||
List<String>.from(d['available_dates'] ?? []);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
Log.print('Error fetching live analytics: $e');
|
||||
}
|
||||
|
||||
isLoading = false;
|
||||
update();
|
||||
}
|
||||
|
||||
void changeDate(String date) {
|
||||
selectedDate = date;
|
||||
fetchAll();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user