76 lines
2.3 KiB
Dart
76 lines
2.3 KiB
Dart
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();
|
|
}
|
|
}
|