import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/my_team/get_subordinates_leaves_total_vacations_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; class MyTeamApiClient { static final MyTeamApiClient _instance = MyTeamApiClient._internal(); MyTeamApiClient._internal(); factory MyTeamApiClient() => _instance; Future> getEmployeeSubordinates(String searchEmpEmail, String searchEmpName, String searchEmpNo) async { String url = "${ApiConsts.erpRest}GET_EMPLOYEE_SUBORDINATES"; Map postParams = { "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SEARCH_EMAIL_ADDRESS": searchEmpEmail, "P_SEARCH_EMPLOYEE_DISPLAY_NAME": searchEmpName, "P_SEARCH_EMPLOYEE_NUMBER": searchEmpNo, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getEmployeeSubordinatesList ?? []; }, url, postParams); } Future getTimeCardSummary(String month, int year, String? empID) async { String url = "${ApiConsts.erpRest}GET_TIME_CARD_SUMMARY"; Map postParams = { "P_MENU_TYPE": "M", "P_SELECTED_RESP_ID": -999, "SearchMonth": month, "SearchYear": year, }; postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return (responseData.getTimeCardSummaryList?.length ?? 0) > 0 ? responseData.getTimeCardSummaryList!.first : null; }, url, postParams); } Future> getDayHoursTypeDetails(String month, int year, String? empID) async { String url = "${ApiConsts.erpRest}GET_DAY_HOURS_TYPE_DETAILS"; Map postParams = { "P_MENU_TYPE": "M", "P_PAGE_LIMIT": 100, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "SearchMonth": month, "SearchYear": year, }; postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getDayHoursTypeDetailsList ?? []; }, url, postParams); } Future getAttendanceTracking(String? empID) async { String url = "${ApiConsts.erpRest}GET_Attendance_Tracking"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAttendanceTrackingList; }, url, postParams); } Future> employeeSubordinates(String searchEmpEmail, String searchEmpName, String searchEmpNo, String? empID) async { String url = "${ApiConsts.erpRest}GET_EMPLOYEE_SUBORDINATES"; Map postParams = { "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SEARCH_EMAIL_ADDRESS": searchEmpEmail, "P_SEARCH_EMPLOYEE_DISPLAY_NAME": searchEmpName, "P_SEARCH_EMPLOYEE_NUMBER": searchEmpNo, }; postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getEmployeeSubordinatesList ?? []; }, url, postParams); } Future> employeeSubordinatesRequest(String? empID) async { String url = "${ApiConsts.erpRest}GET_MENU_ENTRIES"; Map postParams = {"P_MENU_TYPE": "M", "P_SELECTED_RESP_ID": -999}; postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json["Data"]); return responseData.getMenuEntriesList ?? []; }, url, postParams); } Future?> getFavoriteReplacement() async { String url = "${ApiConsts.erpRest}Mohemm_GetFavoriteReplacements"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.mohemmGetFavoriteReplacementsList; }, url, postParams); } Future changeFavoriteReplacements({required String email, required String employeName, required String image, required String userName, bool isFav = false}) async { String url = "${ApiConsts.erpRest}Mohemm_ChangeFavoriteReplacements"; Map postParamsObj = { "EMAIL_ADDRESS": email, "EMPLOYEE_DISPLAY_NAME": employeName, "EMPLOYEE_IMAGE": image, "IsFavorite": isFav, "USER_NAME": userName, }; Map postParams = { "Mohemm_ChangeReplacementsInputList": [postParamsObj], //postParams["Mohemm_ChangeReplacementsInputList"] = list; }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData; }, url, postParams); } Future> getSubordinatesLeavesList(String dateFrom, String dateTo) async { String url = "${ApiConsts.erpRest}GET_SUBORDINATES_LEAVES_TOTAL_VACATIONS"; Map postParams = { "P_DATE_FROM": dateFrom, "P_DATE_TO": dateTo, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getSubordinatesLeavesTotalVacationsList ?? []; }, url, postParams); } }