import 'package:absensi_qr/core/helper/schedule_helper.dart'; import 'package:absensi_qr/models/schedule.dart'; import 'package:absensi_qr/models/subject.dart'; import 'package:absensi_qr/services/endpoint_service.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:get/get.dart'; class ScheduleController extends GetxController { // todo here... final RxInt indexSelected = 0.obs; // calling endpoint service final EndpointService _endpointService = Get.find(); /// schedule configuration... final List scheduleMapper = ScheduleHelper.dayMapper; final List day3letter = ScheduleHelper.dayMapper .map((day) => day.substring(0, 3).capitalizeFirst!) .toList(); List dateOfWeek = ScheduleHelper.getDatesOfWeek(6); RxBool isLoading = false.obs; late BigInt idClass; final dataSchedule = [].obs; final filteredSchedule = [].obs; // get month year name String get monthYearOfWeek { return ScheduleHelper.getMonthName( DateTime.now().month, DateTime.now().year); } @override void onInit() { super.onInit(); filterScheduleByDay(indexSelected.value); if (_endpointService.studentData != null) { idClass = _endpointService.studentData!.idClass; getAllSchedule(); } else { print('data student is null'); Fluttertoast.showToast(msg: 'Gagal mendapatkan data kelas'); } } void filterScheduleByDay(int indexDay) { final String dayKey = scheduleMapper[indexDay]; final List filtered = dataSchedule.where((schedule) => schedule.dayOfWeek == dayKey).toList(); filteredSchedule.value = filtered; } Future getAllSchedule() async { isLoading.value = true; final result = await _endpointService.getAllSchedule(idClass: idClass.toString()); if (result.success) { final List? raw = result.data; if (raw != null) { final List schedules = raw .map((e) => Schedule.fromMap(e as Map)) .toList(); dataSchedule.value = schedules; filterScheduleByDay(indexSelected.value); Fluttertoast.showToast(msg: 'Jadwal berhasil diperbarui'); } else { Fluttertoast.showToast(msg: 'Data jadwal kosong'); } } else { Fluttertoast.showToast( msg: 'Gagal mendapatkan jadwal: ${result.message}'); } isLoading.value = false; } }