|
|
|
import 'dart:convert';
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:mohem_flutter_app/api/dashboard_api_client.dart';
|
|
|
|
import 'package:mohem_flutter_app/classes/utils.dart';
|
|
|
|
import 'package:mohem_flutter_app/main.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/generic_response_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/widgets/Updater.dart';
|
|
|
|
|
|
|
|
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
|
|
|
|
// ignore: prefer_mixin
|
|
|
|
class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
|
|
|
|
//Attendance Tracking
|
|
|
|
bool isAttendanceTrackingLoading = true;
|
|
|
|
int endTime = 0, isTimeRemainingInSeconds = 0;
|
|
|
|
GetAttendanceTracking? attendanceTracking;
|
|
|
|
|
|
|
|
//Work List
|
|
|
|
bool isWorkListLoading = true;
|
|
|
|
int workListCounter = 0;
|
|
|
|
|
|
|
|
//Misssing Swipe
|
|
|
|
bool isMissingSwipeLoading = true;
|
|
|
|
int missingSwipeCounter = 0;
|
|
|
|
|
|
|
|
//Leave and Ticket Balance
|
|
|
|
bool isLeaveTicketBalanceLoading = true;
|
|
|
|
double leaveBalance = 0;
|
|
|
|
double ticketBalance = 0;
|
|
|
|
|
|
|
|
//Menu Entries
|
|
|
|
bool isServicesMenusLoading = true;
|
|
|
|
List<Menus>? homeMenus;
|
|
|
|
List<GetMenuEntriesList>? getMenuEntriesList;
|
|
|
|
|
|
|
|
//Attendance Tracking API's & Methods
|
|
|
|
fetchAttendanceTracking() async {
|
|
|
|
try {
|
|
|
|
attendanceTracking = await DashbaordApiClient().getAttendanceTracking();
|
|
|
|
isAttendanceTrackingLoading = false;
|
|
|
|
isTimeRemainingInSeconds = calculateSeconds("00:00:00");
|
|
|
|
endTime = DateTime.now().millisecondsSinceEpoch + Duration(seconds: isTimeRemainingInSeconds).inMilliseconds;
|
|
|
|
print("isTimeRemainingInSeconds " + isTimeRemainingInSeconds.toString());
|
|
|
|
print("endTime " + endTime.toString());
|
|
|
|
|
|
|
|
// notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int calculateSeconds(String time) {
|
|
|
|
int hour = int.parse(time.split(":")[0]);
|
|
|
|
int mints = int.parse(time.split(":")[1]);
|
|
|
|
int seconds = int.parse(time.split(":")[2]);
|
|
|
|
return ((hour * 60 * 60) + (mints * 60) + seconds);
|
|
|
|
}
|
|
|
|
|
|
|
|
update() {
|
|
|
|
isAttendanceTrackingLoading = !isAttendanceTrackingLoading;
|
|
|
|
isWorkListLoading = !isWorkListLoading;
|
|
|
|
attendanceTracking?.pSwipeIn = "a";
|
|
|
|
isTimeRemainingInSeconds = calculateSeconds("00:10:30");
|
|
|
|
endTime = DateTime.now().millisecondsSinceEpoch + Duration(seconds: isTimeRemainingInSeconds).inMilliseconds;
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
//Work List API's & Methods
|
|
|
|
fetchWorkListCounter() async {
|
|
|
|
try {
|
|
|
|
GenericResponseModel? genericResponseModel = await DashbaordApiClient().getOpenNotifications();
|
|
|
|
isWorkListLoading = false;
|
|
|
|
workListCounter = genericResponseModel?.pOPENNTFNUMBER ?? 0;
|
|
|
|
ItgFormsModel? itgFormsModel = await DashbaordApiClient().getItgFormsPendingTask();
|
|
|
|
workListCounter = workListCounter + (itgFormsModel?.totalCount ?? 0);
|
|
|
|
notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
isWorkListLoading = false;
|
|
|
|
logger.wtf(ex);
|
|
|
|
notifyListeners();
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Missing Siwpe API's & Methods
|
|
|
|
fetchMissingSwipe() async {
|
|
|
|
try {
|
|
|
|
GenericResponseModel? genericResponseModel = await DashbaordApiClient().getOpenMissingSwipes();
|
|
|
|
isMissingSwipeLoading = false;
|
|
|
|
missingSwipeCounter = genericResponseModel!.getOpenMissingSwipesList!.pOpenMissingSwipes ?? 0;
|
|
|
|
notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
isMissingSwipeLoading = false;
|
|
|
|
logger.wtf(ex);
|
|
|
|
notifyListeners();
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Leave and Ticket Balance API's & Methods
|
|
|
|
fetchLeaveTicketBalance() async {
|
|
|
|
try {
|
|
|
|
GenericResponseModel? genericResponseModel = await DashbaordApiClient().getAccrualBalances();
|
|
|
|
isLeaveTicketBalanceLoading = false;
|
|
|
|
leaveBalance = genericResponseModel?.getAccrualBalancesList![0].accrualNetEntitlement ?? 0.0;
|
|
|
|
ticketBalance = (genericResponseModel?.getAccrualBalancesList![1].accrualNetEntitlement ?? 0.0) + (genericResponseModel?.getAccrualBalancesList![2].accrualNetEntitlement ?? 0.0);
|
|
|
|
notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
isLeaveTicketBalanceLoading = false;
|
|
|
|
logger.wtf(ex);
|
|
|
|
notifyListeners();
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//List Menu API's & Methods
|
|
|
|
fetchListMenu() async {
|
|
|
|
try {
|
|
|
|
GenericResponseModel? genericResponseModel = await DashbaordApiClient().getListMenu();
|
|
|
|
Map<String, String> map = {};
|
|
|
|
print(jsonEncode(genericResponseModel!.listMenu));
|
|
|
|
for (int i = 0; i < genericResponseModel!.listMenu!.length; i++) {
|
|
|
|
print(genericResponseModel!.listMenu![i]!.menuName ?? "");
|
|
|
|
map[genericResponseModel!.listMenu![i]!.menuName ?? ""] = i.toString();
|
|
|
|
}
|
|
|
|
logger.i(map);
|
|
|
|
notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
logger.wtf(ex);
|
|
|
|
notifyListeners();
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Menu Entries API's & Methods
|
|
|
|
fetchMenuEntries() async {
|
|
|
|
try {
|
|
|
|
GenericResponseModel? genericResponseModel = await DashbaordApiClient().getGetMenuEntries();
|
|
|
|
getMenuEntriesList = genericResponseModel!.getMenuEntriesList;
|
|
|
|
homeMenus = parseMenues(getMenuEntriesList ?? []);
|
|
|
|
isServicesMenusLoading = false;
|
|
|
|
notifyListeners();
|
|
|
|
} catch (ex) {
|
|
|
|
logger.wtf(ex);
|
|
|
|
notifyListeners();
|
|
|
|
Utils.handleException(ex, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
List<Menus> parseMenues(List<GetMenuEntriesList> getMenuEntriesList) {
|
|
|
|
List<Menus> menus = [];
|
|
|
|
for (int i = 0; i < getMenuEntriesList.length; i++) {
|
|
|
|
if (getMenuEntriesList[i].parentMenuName!.isEmpty) {
|
|
|
|
menus.add(Menus(getMenuEntriesList[i], getMenuEntriesList.where((element) => getMenuEntriesList[i].menuName == element.parentMenuName).toList()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Verify Menus by printing in log
|
|
|
|
// for(int i=0;i<menus.length;i++){
|
|
|
|
// logger.i(jsonEncode(menus[i].menuEntry.prompt));
|
|
|
|
// for(int j=0;j<menus[i].menuEntiesList.length;j++){
|
|
|
|
// logger.e(menus[i].menuEntiesList[j].prompt);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
return menus;
|
|
|
|
}
|
|
|
|
}
|