diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index c14d655..7e2048d 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -350,6 +350,12 @@ "itemType": "نوع العنصر", "TurnNotificationsFor": "تفعيل الاشعارات", "worklistSettings": "اعدادات الاشعارات", + "absenceType": "نوع الغياب", + "absenceCategory": "فئة الغياب", + "days": "أيام", + "hours": "ساعات", + "approvalStatus": "حالة القبول", + "absenceStatus": "حالة الغياب", "profile": { "reset_password": { "label": "Reset Password", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 69adbf2..38765dd 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -350,6 +350,12 @@ "itemType": "Item Type", "TurnNotificationsFor": "Turn on notifications for", "worklistSettings": "Worklist Settings", + "absenceType": "Absence Type", + "absenceCategory": "Absence Category", + "days": "Days", + "hours": "Hours", + "approvalStatus": "Approval Status", + "absenceStatus": "Absence Status", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart new file mode 100644 index 0000000..73793b3 --- /dev/null +++ b/lib/api/leave_balance_api_client.dart @@ -0,0 +1,118 @@ +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/generic_response_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; + +class LeaveBalanceApiClient { + static final LeaveBalanceApiClient _instance = LeaveBalanceApiClient._internal(); + + LeaveBalanceApiClient._internal(); + + factory LeaveBalanceApiClient() => _instance; + + Future> getAbsenceTransactions(int pSelectedResopID) async { + String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; + Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getAbsenceTransactionList ?? []; + }, url, postParams); + } + + Future> getAbsenceAttendanceTypes() async { + String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; + Map postParams = {}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getAbsenceAttendanceTypesList ?? []; + }, url, postParams); + } + + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { + String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; + Map postParams = { + "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, + "P_DATE_END": pDateStart, //"29-Sep-2022", + "P_DATE_START": pDateEnd, + "P_SELECTED_RESP_ID": pSelectedResopID, + "P_MENU_TYPE": "E", + "P_TIME_END": null, + "P_TIME_START": null, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.calculateAbsenceDuration!; + }, url, postParams); + } + + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { + String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; + Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getAbsenceDffStructureList ?? []; + }, url, postParams); + } + + Future validateAbsenceTransaction( + String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, + {String comments = ""}) async { + String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; + Map postParams = { + "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, + "P_FUNCTION_NAME": pFunctionName, + "P_REPLACEMENT_USER_NAME": pReplacementUserName, + "P_ABSENCE_ACTION": "CREATE", + "P_ABSENCE_COMMENTS": comments, + "P_ABSENCE_ATTENDANCE_ID": pAbsenceAttendanceTypeID, + "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, + "P_DATE_END": pDateStart, //"29-Sep-2022", + "P_DATE_START": pDateEnd, + "P_SELECTED_RESP_ID": pSelectedResopID, + "P_MENU_TYPE": "E", + "P_TIME_END": null, + "P_TIME_START": null, + }; + postParams.addAll(data); + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData; + }, url, postParams); + } + + Future submitAbsenceTransaction( + String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, + {String comments = ""}) async { + String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; + Map postParams = { + "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, + "P_FUNCTION_NAME": pFunctionName, + "P_REPLACEMENT_USER_NAME": pReplacementUserName, + "P_ABSENCE_ACTION": "CREATE", + "P_ABSENCE_COMMENTS": comments, + "P_ABSENCE_ATTENDANCE_ID": pAbsenceAttendanceTypeID, + "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, + "P_DATE_END": pDateStart, //"29-Sep-2022", + "P_DATE_START": pDateEnd, + "P_SELECTED_RESP_ID": pSelectedResopID, + "P_MENU_TYPE": "E", + "P_TIME_END": null, + "P_TIME_START": null, + }; + postParams.addAll(data); + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData; + }, url, postParams); + } +} diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 292bc4c..cf2ef23 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -192,4 +192,66 @@ class Utils { ], ); } + + /// EIT Forms date formats + + static String getMonthNamedFormat(DateTime date) { + /// it will return like "29-Sep-2022" + return DateFormat('dd-MMM-yyyy').format(date); + } + + static String reverseFormatDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('/', '-'); + formattedDate = formattedDate.replaceAll(' 00:00:00', ''); + } else { + formattedDate = date; + } + return formattedDate; + } + + static String formatStandardDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('-', '/'); + } else { + formattedDate = date; + } + return formattedDate; + } + + static String reverseFormatStandardDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('/', '-'); + } else { + formattedDate = date; + } + return formattedDate; + } + + static String formatDate(String date) { + String formattedDate; + + if (date.isNotEmpty) { + date = date.substring(0, 10); + formattedDate = date.replaceAll('-', '/'); + formattedDate = formattedDate + ' 00:00:00'; + } else { + formattedDate = date; + } + return formattedDate; + } + + static String formatDateNew(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.split('T')[0]; + formattedDate = formattedDate + ' 00:00:00'; + } else { + formattedDate = date; + } + return formattedDate; + } } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 76d5d40..4b51ca3 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -5,6 +5,8 @@ import 'package:mohem_flutter_app/ui/attendance/vacation_rule_screen.dart'; import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; +import 'package:mohem_flutter_app/ui/leave_balance/add_leave_balance_screen.dart'; +import 'package:mohem_flutter_app/ui/leave_balance/leave_balance_screen.dart'; import 'package:mohem_flutter_app/ui/login/forgot_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/login_screen.dart'; import 'package:mohem_flutter_app/ui/login/new_password_screen.dart'; @@ -74,6 +76,10 @@ class AppRoutes { static const String itemHistory = "/itemHistory"; static const String worklistSettings = "/worklistSettings"; + // Leave Balance + static const String leaveBalance = "/leaveBalance"; + static const String addLeaveBalance = "/addLeaveBalance"; + static const String servicesMenuListScreen = "/servicesMenuListScreen"; static const String dynamicScreen = "/dynamicScreen"; static const String addDynamicInput = "/addDynamicInput"; @@ -149,6 +155,11 @@ class AppRoutes { itemHistory: (context) => ItemHistoryScreen(), worklistSettings: (context) => WorklistSettings(), + // Leave Balance + + leaveBalance: (context) => LeaveBalance(), + addLeaveBalance: (context) => AddLeaveBalanceScreen(), + servicesMenuListScreen: (context) => ServicesMenuListScreen(), // workFromHome: (context) => WorkFromHomeScreen(), // addWorkFromHome: (context) => AddWorkFromHomeScreen(), diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index ae25a1e..53499b8 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -365,6 +365,12 @@ class CodegenLoader extends AssetLoader{ "save": "حفظ", "TurnNotificationsFor": "تفعيل الاشعارات", "worklistSettings": "اعدادات الاشعارات", + "absenceType": "نوع الغياب", + "absenceCategory": "فئة الغياب", + "days": "أيام", + "hours": "ساعات", + "approvalStatus": "حالة القبول", + "absenceStatus": "حالة الغياب", "profile": { "reset_password": { "label": "Reset Password", @@ -750,6 +756,12 @@ static const Map en_US = { "save": "Save", "TurnNotificationsFor": "Turn on notifications for", "worklistSettings": "Worklist Settings", + "absenceType": "Absence Type", + "absenceCategory": "Absence Category", + "days": "Days", + "hours": "Hours", + "approvalStatus": "Approval Status", + "absenceStatus": "Absence Status", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index c3e3081..43165af 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -350,6 +350,12 @@ abstract class LocaleKeys { static const save = 'save'; static const TurnNotificationsFor = 'TurnNotificationsFor'; static const worklistSettings = 'worklistSettings'; + static const absenceType = 'absenceType'; + static const absenceCategory = 'absenceCategory'; + static const days = 'days'; + static const hours = 'hours'; + static const approvalStatus = 'approvalStatus'; + static const absenceStatus = 'absenceStatus'; static const profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_password = 'profile.reset_password.password'; diff --git a/lib/main.dart b/lib/main.dart index b1e74db..3ccb876 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; - import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; @@ -61,7 +60,6 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return Sizer( builder: (context, orientation, deviceType) { - print(AppState().postParamsObject?.toJson()); var obj = AppState().postParamsObject; obj?.languageID = EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2; AppState().setPostParamsModel(obj!); diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 436fe6c..ad492e9 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -33,6 +33,10 @@ import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_mod import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_user_item_type_list.dart'; +import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/monthly_pay_slip/get_deductions_List_model.dart'; @@ -70,9 +74,9 @@ import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart'; import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart'; -import 'package:mohem_flutter_app/models/vacation_rule/create_vacation_rule_list_model.dart'; import 'package:mohem_flutter_app/models/update_item_type_success_list.dart'; import 'package:mohem_flutter_app/models/update_user_item_type_list.dart'; +import 'package:mohem_flutter_app/models/vacation_rule/create_vacation_rule_list_model.dart'; import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart'; import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart'; import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart'; @@ -121,7 +125,7 @@ class GenericResponseModel { String? bCLogo; BasicMemberInformationModel? basicMemberInformation; bool? businessCardPrivilege; - String? calculateAbsenceDuration; + CalculateAbsenceDuration? calculateAbsenceDuration; String? cancelHRTransactionLIst; String? chatEmployeeLoginList; String? companyBadge; @@ -137,10 +141,10 @@ class GenericResponseModel { String? employeeQR; String? forgetPasswordTokenID; List? getAbsenceAttachmentsList; - List? getAbsenceAttendanceTypesList; + List? getAbsenceAttendanceTypesList; List? getAbsenceCollectionNotificationBodyList; - List? getAbsenceDffStructureList; - List? getAbsenceTransactionList; + List? getAbsenceDffStructureList; + List? getAbsenceTransactionList; List? getAccrualBalancesList; List? getActionHistoryList; List? getAddressDffStructureList; @@ -645,15 +649,15 @@ class GenericResponseModel { if (json['AddAttSuccessList'] != null) { addAttSuccessList = []; json['AddAttSuccessList'].forEach((v) { - addAttSuccessList!.add(new AddAttSuccessList.fromJson(v)); + addAttSuccessList!.add(AddAttSuccessList.fromJson(v)); }); } - addAttachmentList = json['AddAttachment_List'] != null ? new AddAttachmentList.fromJson(json['AddAttachment_List']) : null; + addAttachmentList = json['AddAttachment_List'] != null ? AddAttachmentList.fromJson(json['AddAttachment_List']) : null; bCDomain = json['BC_Domain']; bCLogo = json['BC_Logo']; - basicMemberInformation = json['BasicMemberInformation'] != null ? new BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null; + basicMemberInformation = json['BasicMemberInformation'] != null ? BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null; businessCardPrivilege = json['BusinessCardPrivilege']; - calculateAbsenceDuration = json['CalculateAbsenceDuration']; + calculateAbsenceDuration = json['CalculateAbsenceDuration'] != null ? new CalculateAbsenceDuration.fromJson(json['CalculateAbsenceDuration']) : null; cancelHRTransactionLIst = json['CancelHRTransactionLIst']; chatEmployeeLoginList = json['Chat_EmployeeLoginList']; companyBadge = json['CompanyBadge']; @@ -665,28 +669,46 @@ class GenericResponseModel { if (json['CountryList'] != null) { countryList = []; json['CountryList'].forEach((v) { - countryList!.add(new GetCountriesListModel.fromJson(v)); + countryList!.add(GetCountriesListModel.fromJson(v)); }); } - createVacationRuleList = json['CreateVacationRuleList'] != null ? new CreateVacationRuleList.fromJson(json['CreateVacationRuleList']) : null; + createVacationRuleList = json['CreateVacationRuleList'] != null ? CreateVacationRuleList.fromJson(json['CreateVacationRuleList']) : null; deleteAttachmentList = json['DeleteAttachmentList']; deleteVacationRuleList = json['DeleteVacationRuleList']; disableSessionList = json['DisableSessionList']; employeeQR = json['EmployeeQR']; forgetPasswordTokenID = json['ForgetPasswordTokenID']; getAbsenceAttachmentsList = json['GetAbsenceAttachmentsList']; - getAbsenceAttendanceTypesList = json['GetAbsenceAttendanceTypesList']; + + if (json['GetAbsenceAttendanceTypesList'] != null) { + getAbsenceAttendanceTypesList = []; + json['GetAbsenceAttendanceTypesList'].forEach((v) { + getAbsenceAttendanceTypesList!.add(GetAbsenceAttendanceTypesList.fromJson(v)); + }); + } if (json['GetAbsenceCollectionNotificationBodyList'] != null) { getAbsenceCollectionNotificationBodyList = []; json['GetAbsenceCollectionNotificationBodyList'].forEach((v) { - getAbsenceCollectionNotificationBodyList!.add(new GetAbsenceCollectionNotificationBodyList.fromJson(v)); + getAbsenceCollectionNotificationBodyList!.add(GetAbsenceCollectionNotificationBodyList.fromJson(v)); + }); + } + + if (json['GetAbsenceDffStructureList'] != null) { + getAbsenceDffStructureList = []; + json['GetAbsenceDffStructureList'].forEach((v) { + getAbsenceDffStructureList!.add(GetAbsenceDffStructureList.fromJson(v)); + }); + } + + if (json['GetAbsenceTransactionList'] != null) { + getAbsenceTransactionList = []; + json['GetAbsenceTransactionList'].forEach((v) { + getAbsenceTransactionList!.add(GetAbsenceTransactionList.fromJson(v)); }); } - getAbsenceDffStructureList = json['GetAbsenceDffStructureList']; - getAbsenceTransactionList = json['GetAbsenceTransactionList']; getAccrualBalancesList = json["GetAccrualBalancesList"] == null ? null : List.from(json["GetAccrualBalancesList"].map((x) => GetAccrualBalancesList.fromJson(x))); if (json['GetActionHistoryList'] != null) { @@ -699,7 +721,7 @@ class GenericResponseModel { if (json['GetAddressDffStructureList'] != null) { getAddressDffStructureList = []; json['GetAddressDffStructureList'].forEach((v) { - getAddressDffStructureList!.add(new GetAddressDffStructureList.fromJson(v)); + getAddressDffStructureList!.add(GetAddressDffStructureList.fromJson(v)); }); } getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; @@ -707,41 +729,41 @@ class GenericResponseModel { if (json['GetApprovesList'] != null) { getApprovesList = []; json['GetApprovesList'].forEach((v) { - getApprovesList!.add(new GetApprovesList.fromJson(v)); + getApprovesList!.add(GetApprovesList.fromJson(v)); }); } if (json['GetAttachementList'] != null) { getAttachementList = []; json['GetAttachementList'].forEach((v) { - getAttachementList!.add(new GetAttachementList.fromJson(v)); + getAttachementList!.add(GetAttachementList.fromJson(v)); }); } getAttendanceTrackingList = json["GetAttendanceTrackingList"] == null ? null : GetAttendanceTracking.fromMap(json["GetAttendanceTrackingList"]); if (json['GetBasicDetColsStructureList'] != null) { getBasicDetColsStructureList = []; json['GetBasicDetColsStructureList'].forEach((v) { - getBasicDetColsStructureList!.add(new GetBasicDetColsStructureList.fromJson(v)); + getBasicDetColsStructureList!.add(GetBasicDetColsStructureList.fromJson(v)); }); } // getBasicDetDffStructureList = json['GetBasicDetDffStructureList']; if (json['GetBasicDetDffStructureList'] != null) { getBasicDetDffStructureList = []; json['GetBasicDetDffStructureList'].forEach((v) { - getBasicDetDffStructureList!.add(new GetBasicDetDffStructureList.fromJson(v)); + getBasicDetDffStructureList!.add(GetBasicDetDffStructureList.fromJson(v)); }); } if (json['GetContactDffStructureList'] != null) { getContactDffStructureList = []; json['GetContactDffStructureList'].forEach((v) { - getContactDffStructureList!.add(new GetContactDffStructureList.fromJson(v)); + getContactDffStructureList!.add(GetContactDffStructureList.fromJson(v)); }); } if (json['GetBasicDetNtfBodyList'] != null) { getBasicDetNtfBodyList = []; json['GetBasicDetNtfBodyList'].forEach((v) { - getBasicDetNtfBodyList!.add(new GetBasicDetNtfBodyList.fromJson(v)); + getBasicDetNtfBodyList!.add(GetBasicDetNtfBodyList.fromJson(v)); }); } @@ -756,13 +778,13 @@ class GenericResponseModel { if (json['GetContactDetailsList'] != null) { getContactDetailsList = []; json['GetContactDetailsList'].forEach((v) { - getContactDetailsList!.add(new GetContactDetailsList.fromJson(v)); + getContactDetailsList!.add(GetContactDetailsList.fromJson(v)); }); } if (json['GetContactColsStructureList'] != null) { getContactColsStructureList = []; json['GetContactColsStructureList'].forEach((v) { - getContactColsStructureList!.add(new GetContactColsStructureList.fromJson(v)); + getContactColsStructureList!.add(GetContactColsStructureList.fromJson(v)); }); } getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]); @@ -770,21 +792,21 @@ class GenericResponseModel { if (json['GetCountriesList'] != null) { getCountriesList = []; json['GetCountriesList'].forEach((v) { - getCountriesList!.add(new GetCountriesListModel.fromJson(v)); + getCountriesList!.add(GetCountriesListModel.fromJson(v)); }); } if (json['GetDayHoursTypeDetailsList'] != null) { getDayHoursTypeDetailsList = []; json['GetDayHoursTypeDetailsList'].forEach((v) { - getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v)); + getDayHoursTypeDetailsList!.add(GetDayHoursTypeDetailsList.fromJson(v)); }); } if (json['GetDeductionsList'] != null) { getDeductionsList = []; json['GetDeductionsList'].forEach((v) { - getDeductionsList!.add(new GetDeductionsList.fromJson(v)); + getDeductionsList!.add(GetDeductionsList.fromJson(v)); }); } getDefaultValueList = json['GetDefaultValueList'] != null ? GetDefaultValueList.fromJson(json['GetDefaultValueList']) : null; @@ -794,63 +816,62 @@ class GenericResponseModel { if (json['GetEITDFFStructureList'] != null) { getEITDFFStructureList = []; json['GetEITDFFStructureList'].forEach((v) { - getEITDFFStructureList!.add(new GetEITDFFStructureList.fromJson(v)); + getEITDFFStructureList!.add(GetEITDFFStructureList.fromJson(v)); }); } if (json['GetEITTransactionList'] != null) { getEITTransactionList = []; json['GetEITTransactionList'].forEach((v) { - getEITTransactionList!.add(new GetEITTransactionList.fromJson(v)); + getEITTransactionList!.add(GetEITTransactionList.fromJson(v)); }); } if (json['GetEarningsList'] != null) { getEarningsList = []; json['GetEarningsList'].forEach((v) { - getEarningsList!.add(new GetEarningsList.fromJson(v)); + getEarningsList!.add(GetEarningsList.fromJson(v)); }); } if (json['GetEmployeeAddressList'] != null) { getEmployeeAddressList = []; json['GetEmployeeAddressList'].forEach((v) { - getEmployeeAddressList!.add(new GetEmployeeAddressList.fromJson(v)); + getEmployeeAddressList!.add(GetEmployeeAddressList.fromJson(v)); }); } if (json['GetEmployeeBasicDetailsList'] != null) { getEmployeeBasicDetailsList = []; json['GetEmployeeBasicDetailsList'].forEach((v) { - getEmployeeBasicDetailsList!.add(new GetEmployeeBasicDetailsList.fromJson(v)); + getEmployeeBasicDetailsList!.add(GetEmployeeBasicDetailsList.fromJson(v)); }); } if (json['GetEmployeeContactsList'] != null) { getEmployeeContactsList = []; json['GetEmployeeContactsList'].forEach((v) { - getEmployeeContactsList!.add(new GetEmployeeContactsList.fromJson(v)); + getEmployeeContactsList!.add(GetEmployeeContactsList.fromJson(v)); }); } if (json['GetEmployeePhonesList'] != null) { getEmployeePhonesList = []; json['GetEmployeePhonesList'].forEach((v) { - getEmployeePhonesList!.add(new GetEmployeePhonesList.fromJson(v)); + getEmployeePhonesList!.add(GetEmployeePhonesList.fromJson(v)); }); } if (json['GetEmployeeSubordinatesList'] != null) { getEmployeeSubordinatesList = []; json['GetEmployeeSubordinatesList'].forEach((v) { - getEmployeeSubordinatesList! - .add(new GetEmployeeSubordinatesList.fromJson(v)); + getEmployeeSubordinatesList!.add(new GetEmployeeSubordinatesList.fromJson(v)); }); } getFliexfieldStructureList = json['GetFliexfieldStructureList']; getHrCollectionNotificationBodyList = json['GetHrCollectionNotificationBodyList']; getHrTransactionList = json['GetHrTransactionList']; - getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList'] != null ? new GetItemCreationNtfBodyList.fromJson(json['GetItemCreationNtfBodyList']) : null; + getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList'] != null ? GetItemCreationNtfBodyList.fromJson(json['GetItemCreationNtfBodyList']) : null; if (json['GetItemTypeNotificationsList'] != null) { getItemTypeNotificationsList = []; json['GetItemTypeNotificationsList'].forEach((v) { - getItemTypeNotificationsList!.add(new GetItemTypeNotificationsList.fromJson(v)); + getItemTypeNotificationsList!.add(GetItemTypeNotificationsList.fromJson(v)); }); } @@ -860,14 +881,14 @@ class GenericResponseModel { if (json['GetMoItemHistoryList'] != null) { getMoItemHistoryList = []; json['GetMoItemHistoryList'].forEach((v) { - getMoItemHistoryList!.add(new GetMoItemHistoryList.fromJson(v)); + getMoItemHistoryList!.add(GetMoItemHistoryList.fromJson(v)); }); } if (json['GetMoNotificationBodyList'] != null) { getMoNotificationBodyList = []; json['GetMoNotificationBodyList'].forEach((v) { - getMoNotificationBodyList!.add(new GetMoNotificationBodyList.fromJson(v)); + getMoNotificationBodyList!.add(GetMoNotificationBodyList.fromJson(v)); }); } @@ -901,14 +922,14 @@ class GenericResponseModel { if (json['GetPaymentInformationList'] != null) { getPaymentInformationList = []; json['GetPaymentInformationList'].forEach((v) { - getPaymentInformationList!.add(new GetPaymentInformationList.fromJson(v)); + getPaymentInformationList!.add(GetPaymentInformationList.fromJson(v)); }); } if (json['GetPayslipList'] != null) { getPayslipList = []; json['GetPayslipList'].forEach((v) { - getPayslipList!.add(new GetPayslipList.fromJson(v)); + getPayslipList!.add(GetPayslipList.fromJson(v)); }); } // getPendingReqDetailsList = json['GetPendingReqDetailsList']; @@ -919,15 +940,15 @@ class GenericResponseModel { if (json['GetPoItemHistoryList'] != null) { getPoItemHistoryList = []; json['GetPoItemHistoryList'].forEach((v) { - getPoItemHistoryList!.add(new GetPoItemHistoryList.fromJson(v)); + getPoItemHistoryList!.add(GetPoItemHistoryList.fromJson(v)); }); } - getPoNotificationBodyList = json['GetPoNotificationBodyList'] != null ? new GetPoNotificationBodyList.fromJson(json['GetPoNotificationBodyList']) : null; + getPoNotificationBodyList = json['GetPoNotificationBodyList'] != null ? GetPoNotificationBodyList.fromJson(json['GetPoNotificationBodyList']) : null; getPrNotificationBodyList = json['GetPrNotificationBodyList']; if (json['GetQuotationAnalysisList'] != null) { getQuotationAnalysisList = []; json['GetQuotationAnalysisList'].forEach((v) { - getQuotationAnalysisList!.add(new GetQuotationAnalysisList.fromJson(v)); + getQuotationAnalysisList!.add(GetQuotationAnalysisList.fromJson(v)); }); } getRFCEmployeeListList = json['GetRFCEmployeeListList']; @@ -938,7 +959,7 @@ class GenericResponseModel { if (json['GetScheduleShiftsDetailsList'] != null) { getScheduleShiftsDetailsList = []; json['GetScheduleShiftsDetailsList'].forEach((v) { - getScheduleShiftsDetailsList!.add(new GetScheduleShiftsDetailsList.fromJson(v)); + getScheduleShiftsDetailsList!.add(GetScheduleShiftsDetailsList.fromJson(v)); }); } getShiftTypesList = json['GetShiftTypesList']; @@ -946,13 +967,13 @@ class GenericResponseModel { if (json['GetStampMsNotificationBodyList'] != null) { getStampMsNotificationBodyList = []; json['GetStampMsNotificationBodyList'].forEach((v) { - getStampMsNotificationBodyList!.add(new GetStampMsNotificationBodyList.fromJson(v)); + getStampMsNotificationBodyList!.add(GetStampMsNotificationBodyList.fromJson(v)); }); } if (json['GetStampNsNotificationBodyList'] != null) { getStampNsNotificationBodyList = []; json['GetStampNsNotificationBodyList'].forEach((v) { - getStampNsNotificationBodyList!.add(new GetStampNsNotificationBodyList.fromJson(v)); + getStampNsNotificationBodyList!.add(GetStampNsNotificationBodyList.fromJson(v)); }); } @@ -976,7 +997,7 @@ class GenericResponseModel { if (json['GetSummaryOfPaymentList'] != null) { getSummaryOfPaymentList = []; json['GetSummaryOfPaymentList'].forEach((v) { - getSummaryOfPaymentList!.add(new GetSummaryOfPaymentList.fromJson(v)); + getSummaryOfPaymentList!.add(GetSummaryOfPaymentList.fromJson(v)); }); } getSwipesList = json['GetSwipesList']; @@ -987,77 +1008,77 @@ class GenericResponseModel { if (json['GetTimeCardSummaryList'] != null) { getTimeCardSummaryList = []; json['GetTimeCardSummaryList'].forEach((v) { - getTimeCardSummaryList!.add(new GetTimeCardSummaryList.fromJson(v)); + getTimeCardSummaryList!.add(GetTimeCardSummaryList.fromJson(v)); }); } if (json['Mohemm_ITG_TicketsByEmployeeList'] != null) { getTicketsByEmployeeList = []; json['Mohemm_ITG_TicketsByEmployeeList'].forEach((v) { - getTicketsByEmployeeList!.add(new GetTicketsByEmployeeList.fromJson(v)); + getTicketsByEmployeeList!.add(GetTicketsByEmployeeList.fromJson(v)); }); } if (json['Mohemm_ITG_TicketDetailsList'] != null) { getTicketDetailsByEmployee = []; json['Mohemm_ITG_TicketDetailsList'].forEach((v) { - getTicketDetailsByEmployee!.add(new GetTicketDetailsByEmployee.fromJson(v)); + getTicketDetailsByEmployee!.add(GetTicketDetailsByEmployee.fromJson(v)); }); } if (json['Mohemm_ITG_TicketTransactionsList'] != null) { getTicketTransactions = []; json['Mohemm_ITG_TicketTransactionsList'].forEach((v) { - getTicketTransactions!.add(new GetTicketTransactions.fromJson(v)); + getTicketTransactions!.add(GetTicketTransactions.fromJson(v)); }); } if (json['Mohemm_Itg_TicketTypesList'] != null) { getTicketTypes = []; json['Mohemm_Itg_TicketTypesList'].forEach((v) { - getTicketTypes!.add(new GetTicketTypes.fromJson(v)); + getTicketTypes!.add(GetTicketTypes.fromJson(v)); }); } if (json['Mohemm_Itg_ProjectsList'] != null) { getMowadhafhiProjects = []; json['Mohemm_Itg_ProjectsList'].forEach((v) { - getMowadhafhiProjects!.add(new GetMowadhafhiProjects.fromJson(v)); + getMowadhafhiProjects!.add(GetMowadhafhiProjects.fromJson(v)); }); } if (json['Mohemm_ITG_ProjectDepartmentsList'] != null) { getProjectDepartments = []; json['Mohemm_ITG_ProjectDepartmentsList'].forEach((v) { - getProjectDepartments!.add(new GetProjectDepartments.fromJson(v)); + getProjectDepartments!.add(GetProjectDepartments.fromJson(v)); }); } if (json['Mohemm_ITG_DepartmentSectionsList'] != null) { getDepartmentSections = []; json['Mohemm_ITG_DepartmentSectionsList'].forEach((v) { - getDepartmentSections!.add(new GetDepartmentSections.fromJson(v)); + getDepartmentSections!.add(GetDepartmentSections.fromJson(v)); }); } if (json['Mohemm_ITG_SectionTopicsList'] != null) { getSectionTopics = []; json['Mohemm_ITG_SectionTopicsList'].forEach((v) { - getSectionTopics!.add(new GetSectionTopics.fromJson(v)); + getSectionTopics!.add(GetSectionTopics.fromJson(v)); }); } if (json['GetPendingReqFunctionsList'] != null) { getPendingTransactionsFunctions = []; json['GetPendingReqFunctionsList'].forEach((v) { - getPendingTransactionsFunctions!.add(new GetPendingTransactionsFunctions.fromJson(v)); + getPendingTransactionsFunctions!.add(GetPendingTransactionsFunctions.fromJson(v)); }); } if (json['GetPendingReqDetailsList'] != null) { getPendingTransactionsDetails = []; json['GetPendingReqDetailsList'].forEach((v) { - getPendingTransactionsDetails!.add(new GetPendingTransactionsDetails.fromJson(v)); + getPendingTransactionsDetails!.add(GetPendingTransactionsDetails.fromJson(v)); }); } @@ -1185,7 +1206,7 @@ class GenericResponseModel { if (json['RespondAttributesList'] != null) { respondAttributesList = []; json['RespondAttributesList'].forEach((v) { - respondAttributesList!.add(new RespondAttributesList.fromJson(v)); + respondAttributesList!.add(RespondAttributesList.fromJson(v)); }); } if (json['RespondRolesList'] != null) { @@ -1200,25 +1221,25 @@ class GenericResponseModel { sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList']; sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList']; startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess']; - startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? new StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null; + startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null; startBasicDetApprProcessList = json['StartBasicDetApprProcessList']; startCeiApprovalProcess = json['StartCeiApprovalProcess']; startContactApprovalProcessList = json['StartContactApprovalProcessList']; - startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null; + startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null; startHrApprovalProcessList = json['StartHrApprovalProcessList']; - startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? new StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null; + startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null; startSitApprovalProcess = json['StartSitApprovalProcess']; startTermApprovalProcessList = json['StartTermApprovalProcessList']; - submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? new SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null; - submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? new SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null; + submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null; + submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null; submitCEITransactionList = json['SubmitCEITransactionList']; submitCcpTransactionList = json['SubmitCcpTransactionList']; - submitContactTransactionList = json['SubmitContactTransactionList'] != null ? new SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null; - submitEITTransactionList = json['SubmitEITTransactionList'] != null ? new SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null; + submitContactTransactionList = json['SubmitContactTransactionList'] != null ? SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null; + submitEITTransactionList = json['SubmitEITTransactionList'] != null ? SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null; submitHrTransactionList = json['SubmitHrTransactionList']; submitPhonesTransactionList = json['SubmitPhonesTransactionList']; @@ -1240,13 +1261,10 @@ class GenericResponseModel { if (json['UpdateItemTypeSuccessList'] != null) { updateItemTypeSuccessList = []; json['UpdateItemTypeSuccessList'].forEach((v) { - updateItemTypeSuccessList! - .add(new UpdateItemTypeSuccessList.fromJson(v)); + updateItemTypeSuccessList!.add(new UpdateItemTypeSuccessList.fromJson(v)); }); } - updateUserItemTypesList = json['UpdateUserItemTypesList'] != null - ? new UpdateUserItemTypesList.fromJson(json['UpdateUserItemTypesList']) - : null; + updateUserItemTypesList = json['UpdateUserItemTypesList'] != null ? new UpdateUserItemTypesList.fromJson(json['UpdateUserItemTypesList']) : null; updateVacationRuleList = json['UpdateVacationRuleList']; vHREmployeeLoginList = json['VHR_EmployeeLoginList']; vHRGetEmployeeDetailsList = json['VHR_GetEmployeeDetailsList']; @@ -1255,7 +1273,7 @@ class GenericResponseModel { vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid']; validateAbsenceTransactionList = json['ValidateAbsenceTransactionList']; - validateEITTransactionList = json['ValidateEITTransactionList'] != null ? new ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null; + validateEITTransactionList = json['ValidateEITTransactionList'] != null ? ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null; validatePhonesTransactionList = json['ValidatePhonesTransactionList']; if (json['VrItemTypesList'] != null) { @@ -1267,7 +1285,7 @@ class GenericResponseModel { if (json['WFLookUpList'] != null) { wFLookUpList = []; json['WFLookUpList'].forEach((v) { - wFLookUpList!.add(new WFLookUpList.fromJson(v)); + wFLookUpList!.add(WFLookUpList.fromJson(v)); }); } eLearningGETEMPLOYEEPROFILEList = json['eLearning_GET_EMPLOYEE_PROFILEList']; @@ -1280,7 +1298,7 @@ class GenericResponseModel { } Map toJson() { - Map data = new Map(); + Map data = Map(); data['Date'] = this.date; data['LanguageID'] = this.languageID; data['ServiceName'] = this.serviceName; @@ -1321,7 +1339,10 @@ class GenericResponseModel { data['BasicMemberInformation'] = this.basicMemberInformation!.toJson(); } data['BusinessCardPrivilege'] = this.businessCardPrivilege; - data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration; + + if (this.calculateAbsenceDuration != null) { + data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration!.toJson(); + } data['CancelHRTransactionLIst'] = this.cancelHRTransactionLIst; data['Chat_EmployeeLoginList'] = this.chatEmployeeLoginList; data['CompanyBadge'] = this.companyBadge; @@ -1342,14 +1363,22 @@ class GenericResponseModel { data['EmployeeQR'] = this.employeeQR; data['ForgetPasswordTokenID'] = this.forgetPasswordTokenID; data['GetAbsenceAttachmentsList'] = this.getAbsenceAttachmentsList; - data['GetAbsenceAttendanceTypesList'] = this.getAbsenceAttendanceTypesList; + + if (this.getAbsenceAttendanceTypesList != null) { + data['GetAbsenceAttendanceTypesList'] = this.getAbsenceAttendanceTypesList!.map((v) => v.toJson()).toList(); + } if (this.getAbsenceCollectionNotificationBodyList != null) { data['GetAbsenceCollectionNotificationBodyList'] = this.getAbsenceCollectionNotificationBodyList!.map((v) => v.toJson()).toList(); } - data['GetAbsenceDffStructureList'] = this.getAbsenceDffStructureList; - data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList; + if (this.getAbsenceDffStructureList != null) { + data['GetAbsenceDffStructureList'] = this.getAbsenceDffStructureList!.map((v) => v.toJson()).toList(); + } + + if (this.getAbsenceTransactionList != null) { + data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList!.map((v) => v.toJson()).toList(); + } data['GetAccrualBalancesList'] = this.getAccrualBalancesList; if (this.getActionHistoryList != null) { @@ -1428,8 +1457,7 @@ class GenericResponseModel { data['GetEmployeePhonesList'] = this.getEmployeePhonesList!.map((v) => v.toJson()).toList(); } if (this.getEmployeeSubordinatesList != null) { - data['GetEmployeeSubordinatesList'] = - this.getEmployeeSubordinatesList!.map((v) => v.toJson()).toList(); + data['GetEmployeeSubordinatesList'] = this.getEmployeeSubordinatesList!.map((v) => v.toJson()).toList(); } data['GetFliexfieldStructureList'] = this.getFliexfieldStructureList; data['GetHrCollectionNotificationBodyList'] = this.getHrCollectionNotificationBodyList; @@ -1673,8 +1701,7 @@ class GenericResponseModel { data['UpdateAttachmentList'] = this.updateAttachmentList; data['UpdateEmployeeImageList'] = this.updateEmployeeImageList; if (this.updateItemTypeSuccessList != null) { - data['UpdateItemTypeSuccessList'] = - this.updateItemTypeSuccessList!.map((v) => v.toJson()).toList(); + data['UpdateItemTypeSuccessList'] = this.updateItemTypeSuccessList!.map((v) => v.toJson()).toList(); } if (this.updateUserItemTypesList != null) { data['UpdateUserItemTypesList'] = this.updateUserItemTypesList!.toJson(); diff --git a/lib/models/get_user_item_type_list.dart b/lib/models/get_user_item_type_list.dart index 29892f1..b21748e 100644 --- a/lib/models/get_user_item_type_list.dart +++ b/lib/models/get_user_item_type_list.dart @@ -25,7 +25,7 @@ class GetUserItemTypesList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['FYA_ENABLED_FALG'] = this.fYAENABLEDFALG; data['FYI_ENABLED_FLAG'] = this.fYIENABLEDFLAG; data['ITEM_TYPE'] = this.iTEMTYPE; diff --git a/lib/models/leave_balance/calculate_absence_duration_model.dart b/lib/models/leave_balance/calculate_absence_duration_model.dart new file mode 100644 index 0000000..b16b4c3 --- /dev/null +++ b/lib/models/leave_balance/calculate_absence_duration_model.dart @@ -0,0 +1,24 @@ +class CalculateAbsenceDuration { + int? pABSENCEDAYS; + int? pABSENCEHOURS; + String? pRETURNMSG; + String? pRETURNSTATUS; + + CalculateAbsenceDuration({this.pABSENCEDAYS, this.pABSENCEHOURS, this.pRETURNMSG, this.pRETURNSTATUS}); + + CalculateAbsenceDuration.fromJson(Map json) { + pABSENCEDAYS = json['P_ABSENCE_DAYS']; + pABSENCEHOURS = json['P_ABSENCE_HOURS']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + } + + Map toJson() { + Map data = new Map(); + data['P_ABSENCE_DAYS'] = this.pABSENCEDAYS; + data['P_ABSENCE_HOURS'] = this.pABSENCEHOURS; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + return data; + } +} diff --git a/lib/models/leave_balance/get_absence_attendance_types_list_model.dart b/lib/models/leave_balance/get_absence_attendance_types_list_model.dart new file mode 100644 index 0000000..ccfb0dc --- /dev/null +++ b/lib/models/leave_balance/get_absence_attendance_types_list_model.dart @@ -0,0 +1,24 @@ +class GetAbsenceAttendanceTypesList { + int? aBSENCEATTENDANCETYPEID; + String? aBSENCEATTENDANCETYPENAME; + String? dESCFLEXCONTEXTCODE; + String? hOURSORDAYS; + + GetAbsenceAttendanceTypesList({this.aBSENCEATTENDANCETYPEID, this.aBSENCEATTENDANCETYPENAME, this.dESCFLEXCONTEXTCODE, this.hOURSORDAYS}); + + GetAbsenceAttendanceTypesList.fromJson(Map json) { + aBSENCEATTENDANCETYPEID = json['ABSENCE_ATTENDANCE_TYPE_ID']; + aBSENCEATTENDANCETYPENAME = json['ABSENCE_ATTENDANCE_TYPE_NAME']; + dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE']; + hOURSORDAYS = json['HOURS_OR_DAYS']; + } + + Map toJson() { + Map data = new Map(); + data['ABSENCE_ATTENDANCE_TYPE_ID'] = this.aBSENCEATTENDANCETYPEID; + data['ABSENCE_ATTENDANCE_TYPE_NAME'] = this.aBSENCEATTENDANCETYPENAME; + data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE; + data['HOURS_OR_DAYS'] = this.hOURSORDAYS; + return data; + } +} diff --git a/lib/models/leave_balance/get_absence_dff_structure_list_model.dart b/lib/models/leave_balance/get_absence_dff_structure_list_model.dart new file mode 100644 index 0000000..81bc671 --- /dev/null +++ b/lib/models/leave_balance/get_absence_dff_structure_list_model.dart @@ -0,0 +1,195 @@ +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; + +class GetAbsenceDffStructureList { + String? aLPHANUMERICALLOWEDFLAG; + String? aPPLICATIONCOLUMNNAME; + String? cHILDSEGMENTSDV; + List? cHILDSEGMENTSDVSplited; + String? cHILDSEGMENTSVS; + List? cHILDSEGMENTSVSSplited; + String? dEFAULTTYPE; + String? dEFAULTVALUE; + String? dESCFLEXCONTEXTCODE; + String? dESCFLEXCONTEXTNAME; + String? dESCFLEXNAME; + String? dISPLAYFLAG; + String? eNABLEDFLAG; + ESERVICESDV? eSERVICESDV; + List? eSERVICESVS; + String? fLEXVALUESETNAME; + String? fORMATTYPE; + String? fORMATTYPEDSP; + bool? isEmptyOption; + String? lONGLISTFLAG; + int? mAXIMUMSIZE; + String? mAXIMUMVALUE; + String? mINIMUMVALUE; + String? mOBILEENABLED; + String? nUMBERPRECISION; + String? nUMERICMODEENABLEDFLAG; + String? pARENTSEGMENTSDV; + List? pARENTSEGMENTSDVSplited; + String? pARENTSEGMENTSVS; + List? pARENTSEGMENTSVSSplitedVS; + String? rEADONLY; + String? rEQUIREDFLAG; + String? sEGMENTNAME; + String? sEGMENTPROMPT; + int? sEGMENTSEQNUM; + String? uPPERCASEONLYFLAG; + String? uSEDFLAG; + String? vALIDATIONTYPE; + String? vALIDATIONTYPEDSP; + + GetAbsenceDffStructureList( + {this.aLPHANUMERICALLOWEDFLAG, + this.aPPLICATIONCOLUMNNAME, + this.cHILDSEGMENTSDV, + this.cHILDSEGMENTSDVSplited, + this.cHILDSEGMENTSVS, + this.cHILDSEGMENTSVSSplited, + this.dEFAULTTYPE, + this.dEFAULTVALUE, + this.dESCFLEXCONTEXTCODE, + this.dESCFLEXCONTEXTNAME, + this.dESCFLEXNAME, + this.dISPLAYFLAG, + this.eNABLEDFLAG, + this.eSERVICESDV, + this.eSERVICESVS, + this.fLEXVALUESETNAME, + this.fORMATTYPE, + this.fORMATTYPEDSP, + this.isEmptyOption, + this.lONGLISTFLAG, + this.mAXIMUMSIZE, + this.mAXIMUMVALUE, + this.mINIMUMVALUE, + this.mOBILEENABLED, + this.nUMBERPRECISION, + this.nUMERICMODEENABLEDFLAG, + this.pARENTSEGMENTSDV, + this.pARENTSEGMENTSDVSplited, + this.pARENTSEGMENTSVS, + this.pARENTSEGMENTSVSSplitedVS, + this.rEADONLY, + this.rEQUIREDFLAG, + this.sEGMENTNAME, + this.sEGMENTPROMPT, + this.sEGMENTSEQNUM, + this.uPPERCASEONLYFLAG, + this.uSEDFLAG, + this.vALIDATIONTYPE, + this.vALIDATIONTYPEDSP}); + + GetAbsenceDffStructureList.fromJson(Map json) { + aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; + aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; + cHILDSEGMENTSDV = json['CHILD_SEGMENTS_DV']; + cHILDSEGMENTSDVSplited = json['CHILD_SEGMENTS_DV_Splited'] == null ? [] : json['CHILD_SEGMENTS_DV_Splited'].cast(); + cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS']; + cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited']== null ? [] : json['CHILD_SEGMENTS_VS_Splited'].cast(); + dEFAULTTYPE = json['DEFAULT_TYPE']; + dEFAULTVALUE = json['DEFAULT_VALUE']; + dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE']; + dESCFLEXCONTEXTNAME = json['DESC_FLEX_CONTEXT_NAME']; + dESCFLEXNAME = json['DESC_FLEX_NAME']; + dISPLAYFLAG = json['DISPLAY_FLAG']; + eNABLEDFLAG = json['ENABLED_FLAG']; + eSERVICESDV = json['E_SERVICES_DV'] != null ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) : null; + if (json['E_SERVICES_VS'] != null) { + eSERVICESVS = []; + json['E_SERVICES_VS'].forEach((v) { + eSERVICESVS!.add(new ESERVICESVS.fromJson(v)); + }); + } + fLEXVALUESETNAME = json['FLEX_VALUE_SET_NAME']; + fORMATTYPE = json['FORMAT_TYPE']; + fORMATTYPEDSP = json['FORMAT_TYPE_DSP']; + isEmptyOption = json['IsEmptyOption']; + lONGLISTFLAG = json['LONGLIST_FLAG']; + mAXIMUMSIZE = json['MAXIMUM_SIZE']; + mAXIMUMVALUE = json['MAXIMUM_VALUE']; + mINIMUMVALUE = json['MINIMUM_VALUE']; + mOBILEENABLED = json['MOBILE_ENABLED']; + nUMBERPRECISION = json['NUMBER_PRECISION']; + nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG']; + pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV']; + if (json['PARENT_SEGMENTS_DV_Splited'] != null) { + pARENTSEGMENTSDVSplited = []; + json['PARENT_SEGMENTS_DV_Splited'].forEach((v) { + pARENTSEGMENTSDVSplited!.add(PARENTSEGMENTSDVSplited.fromJson(v)); + }); + } + pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; + if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { + pARENTSEGMENTSVSSplitedVS = []; + json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { + pARENTSEGMENTSVSSplitedVS!.add(new PARENTSEGMENTSVSSplitedVS.fromJson(v)); + }); + } + rEADONLY = json['READ_ONLY']; + rEQUIREDFLAG = json['REQUIRED_FLAG']; + sEGMENTNAME = json['SEGMENT_NAME']; + sEGMENTPROMPT = json['SEGMENT_PROMPT']; + sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; + uPPERCASEONLYFLAG = json['UPPERCASE_ONLY_FLAG']; + uSEDFLAG = json['USED_FLAG']; + vALIDATIONTYPE = json['VALIDATION_TYPE']; + vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP']; + } + + Map toJson() { + Map data = new Map(); + data['ALPHANUMERIC_ALLOWED_FLAG'] = this.aLPHANUMERICALLOWEDFLAG; + data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; + data['CHILD_SEGMENTS_DV'] = this.cHILDSEGMENTSDV; + data['CHILD_SEGMENTS_DV_Splited'] = this.cHILDSEGMENTSDVSplited; + data['CHILD_SEGMENTS_VS'] = this.cHILDSEGMENTSVS; + data['CHILD_SEGMENTS_VS_Splited'] = this.cHILDSEGMENTSVSSplited; + data['DEFAULT_TYPE'] = this.dEFAULTTYPE; + data['DEFAULT_VALUE'] = this.dEFAULTVALUE; + data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE; + data['DESC_FLEX_CONTEXT_NAME'] = this.dESCFLEXCONTEXTNAME; + data['DESC_FLEX_NAME'] = this.dESCFLEXNAME; + data['DISPLAY_FLAG'] = this.dISPLAYFLAG; + data['ENABLED_FLAG'] = this.eNABLEDFLAG; + if (this.eSERVICESDV != null) { + data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson(); + } + if (this.eSERVICESVS != null) { + data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList(); + } + data['FLEX_VALUE_SET_NAME'] = this.fLEXVALUESETNAME; + data['FORMAT_TYPE'] = this.fORMATTYPE; + data['FORMAT_TYPE_DSP'] = this.fORMATTYPEDSP; + data['IsEmptyOption'] = this.isEmptyOption; + data['LONGLIST_FLAG'] = this.lONGLISTFLAG; + data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE; + data['MAXIMUM_VALUE'] = this.mAXIMUMVALUE; + data['MINIMUM_VALUE'] = this.mINIMUMVALUE; + data['MOBILE_ENABLED'] = this.mOBILEENABLED; + data['NUMBER_PRECISION'] = this.nUMBERPRECISION; + data['NUMERIC_MODE_ENABLED_FLAG'] = this.nUMERICMODEENABLEDFLAG; + data['PARENT_SEGMENTS_DV'] = this.pARENTSEGMENTSDV; + if (this.pARENTSEGMENTSDVSplited != null) { + data['PARENT_SEGMENTS_DV_Splited'] = this.pARENTSEGMENTSDVSplited!.map((v) => v.toJson()).toList(); + } + data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS; + if (this.pARENTSEGMENTSVSSplitedVS != null) { + data['PARENT_SEGMENTS_VS_SplitedVS'] = this.pARENTSEGMENTSVSSplitedVS!.map((v) => v.toJson()).toList(); + } + data['READ_ONLY'] = this.rEADONLY; + data['REQUIRED_FLAG'] = this.rEQUIREDFLAG; + data['SEGMENT_NAME'] = this.sEGMENTNAME; + data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; + data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; + data['UPPERCASE_ONLY_FLAG'] = this.uPPERCASEONLYFLAG; + data['USED_FLAG'] = this.uSEDFLAG; + data['VALIDATION_TYPE'] = this.vALIDATIONTYPE; + data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP; + return data; + } + + bool get isDefaultTypeIsCDPS => (dEFAULTTYPE == "C" || dEFAULTTYPE == "D" || dEFAULTTYPE == "P" || dEFAULTTYPE == "S"); +} diff --git a/lib/models/leave_balance/get_absence_transaction_list_model.dart b/lib/models/leave_balance/get_absence_transaction_list_model.dart new file mode 100644 index 0000000..74fb733 --- /dev/null +++ b/lib/models/leave_balance/get_absence_transaction_list_model.dart @@ -0,0 +1,80 @@ +class GetAbsenceTransactionList { + int? aBSENCEATTENDANCEID; + int? aBSENCEATTENDANCETYPEID; + String? aBSENCECATEGORY; + double? aBSENCEDAYS; + double? aBSENCEHOURS; + String? aBSENCESTATUS; + String? aBSENCETYPE; + String? aPPROVALSTATUS; + String? aTTACHMENTEXIST; + String? dELETEBUTTON; + String? eNDDATE; + int? fROMROWNUM; + int? nOOFROWS; + int? rOWNUM; + String? sTARTDATE; + int? tOROWNUM; + String? uPDATEBUTTON; + + GetAbsenceTransactionList( + {this.aBSENCEATTENDANCEID, + this.aBSENCEATTENDANCETYPEID, + this.aBSENCECATEGORY, + this.aBSENCEDAYS, + this.aBSENCEHOURS, + this.aBSENCESTATUS, + this.aBSENCETYPE, + this.aPPROVALSTATUS, + this.aTTACHMENTEXIST, + this.dELETEBUTTON, + this.eNDDATE, + this.fROMROWNUM, + this.nOOFROWS, + this.rOWNUM, + this.sTARTDATE, + this.tOROWNUM, + this.uPDATEBUTTON}); + + GetAbsenceTransactionList.fromJson(Map json) { + aBSENCEATTENDANCEID = json['ABSENCE_ATTENDANCE_ID']; + aBSENCEATTENDANCETYPEID = json['ABSENCE_ATTENDANCE_TYPE_ID']; + aBSENCECATEGORY = json['ABSENCE_CATEGORY']; + aBSENCEDAYS = double.parse(json['ABSENCE_DAYS'].toString() ?? "0.0"); + aBSENCEHOURS = json['ABSENCE_HOURS']; + aBSENCESTATUS = json['ABSENCE_STATUS']; + aBSENCETYPE = json['ABSENCE_TYPE']; + aPPROVALSTATUS = json['APPROVAL_STATUS']; + aTTACHMENTEXIST = json['ATTACHMENT_EXIST']; + dELETEBUTTON = json['DELETE_BUTTON']; + eNDDATE = json['END_DATE']; + fROMROWNUM = json['FROM_ROW_NUM']; + nOOFROWS = json['NO_OF_ROWS']; + rOWNUM = json['ROW_NUM']; + sTARTDATE = json['START_DATE']; + tOROWNUM = json['TO_ROW_NUM']; + uPDATEBUTTON = json['UPDATE_BUTTON']; + } + + Map toJson() { + Map data = new Map(); + data['ABSENCE_ATTENDANCE_ID'] = this.aBSENCEATTENDANCEID; + data['ABSENCE_ATTENDANCE_TYPE_ID'] = this.aBSENCEATTENDANCETYPEID; + data['ABSENCE_CATEGORY'] = this.aBSENCECATEGORY; + data['ABSENCE_DAYS'] = this.aBSENCEDAYS; + data['ABSENCE_HOURS'] = this.aBSENCEHOURS; + data['ABSENCE_STATUS'] = this.aBSENCESTATUS; + data['ABSENCE_TYPE'] = this.aBSENCETYPE; + data['APPROVAL_STATUS'] = this.aPPROVALSTATUS; + data['ATTACHMENT_EXIST'] = this.aTTACHMENTEXIST; + data['DELETE_BUTTON'] = this.dELETEBUTTON; + data['END_DATE'] = this.eNDDATE; + data['FROM_ROW_NUM'] = this.fROMROWNUM; + data['NO_OF_ROWS'] = this.nOOFROWS; + data['ROW_NUM'] = this.rOWNUM; + data['START_DATE'] = this.sTARTDATE; + data['TO_ROW_NUM'] = this.tOROWNUM; + data['UPDATE_BUTTON'] = this.uPDATEBUTTON; + return data; + } +} diff --git a/lib/models/my_team/get_attendance_tracking_list_model.dart b/lib/models/my_team/get_attendance_tracking_list_model.dart index 0fbc5f3..10d9d52 100644 --- a/lib/models/my_team/get_attendance_tracking_list_model.dart +++ b/lib/models/my_team/get_attendance_tracking_list_model.dart @@ -41,7 +41,7 @@ class GetAttendanceTrackingList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['P_BREAK_HOURS'] = this.pBREAKHOURS; data['P_LATE_IN_HOURS'] = this.pLATEINHOURS; data['P_REMAINING_HOURS'] = this.pREMAININGHOURS; diff --git a/lib/models/my_team/get_employee_subordinates_list.dart b/lib/models/my_team/get_employee_subordinates_list.dart index 1158f7d..e0178eb 100644 --- a/lib/models/my_team/get_employee_subordinates_list.dart +++ b/lib/models/my_team/get_employee_subordinates_list.dart @@ -1,4 +1,3 @@ - class GetEmployeeSubordinatesList { String? aCTUALTERMINATIONDATE; String? aSSIGNMENTENDDATE; @@ -78,80 +77,80 @@ class GetEmployeeSubordinatesList { GetEmployeeSubordinatesList( {this.aCTUALTERMINATIONDATE, - this.aSSIGNMENTENDDATE, - this.aSSIGNMENTID, - this.aSSIGNMENTNUMBER, - this.aSSIGNMENTSTARTDATE, - this.aSSIGNMENTSTATUSTYPEID, - this.aSSIGNMENTTYPE, - this.bUSINESSGROUPID, - this.bUSINESSGROUPNAME, - this.cURRENTEMPLOYEEFLAG, - this.eMPLOYEEDISPLAYNAME, - this.eMPLOYEEEMAILADDRESS, - this.eMPLOYEEIMAGE, - this.eMPLOYEEMOBILENUMBER, - this.eMPLOYEENAME, - this.eMPLOYEENUMBER, - this.eMPLOYEEWORKNUMBER, - this.eMPLOYMENTCATEGORY, - this.eMPLOYMENTCATEGORYMEANING, - this.fREQUENCY, - this.fREQUENCYMEANING, - this.fROMROWNUM, - this.gRADEID, - this.gRADENAME, - this.genderCode, - this.genderMeaning, - this.hIREDATE, - this.isFavorite, - this.jOBID, - this.jOBNAME, - this.lOCATIONID, - this.lOCATIONNAME, - this.mANUALTIMECARDFLAG, - this.mANUALTIMECARDMEANING, - this.nATIONALITYCODE, - this.nATIONALITYMEANING, - this.nATIONALIDENTIFIER, - this.nORMALHOURS, - this.nOOFROWS, - this.nUMOFSUBORDINATES, - this.oRGANIZATIONID, - this.oRGANIZATIONNAME, - this.pAYROLLCODE, - this.pAYROLLID, - this.pAYROLLNAME, - this.pERSONID, - this.pERSONTYPE, - this.pERSONTYPEID, - this.pERINFORMATIONCATEGORY, - this.pOSITIONID, - this.pOSITIONNAME, - this.pRIMARYFLAG, - this.rOWNUM, - this.sERVICEDAYS, - this.sERVICEMONTHS, - this.sERVICEYEARS, - this.sUPERVISORASSIGNMENTID, - this.sUPERVISORDISPLAYNAME, - this.sUPERVISOREMAILADDRESS, - this.sUPERVISORID, - this.sUPERVISORMOBILENUMBER, - this.sUPERVISORNAME, - this.sUPERVISORNUMBER, - this.sUPERVISORWORKNUMBER, - this.sWIPESEXEMPTEDFLAG, - this.sWIPESEXEMPTEDMEANING, - this.sYSTEMPERSONTYPE, - this.tKEMAILADDRESS, - this.tKEMPLOYEEDISPLAYNAME, - this.tKEMPLOYEENAME, - this.tKEMPLOYEENUMBER, - this.tKPERSONID, - this.tOROWNUM, - this.uNITNUMBER, - this.uSERSTATUS}); + this.aSSIGNMENTENDDATE, + this.aSSIGNMENTID, + this.aSSIGNMENTNUMBER, + this.aSSIGNMENTSTARTDATE, + this.aSSIGNMENTSTATUSTYPEID, + this.aSSIGNMENTTYPE, + this.bUSINESSGROUPID, + this.bUSINESSGROUPNAME, + this.cURRENTEMPLOYEEFLAG, + this.eMPLOYEEDISPLAYNAME, + this.eMPLOYEEEMAILADDRESS, + this.eMPLOYEEIMAGE, + this.eMPLOYEEMOBILENUMBER, + this.eMPLOYEENAME, + this.eMPLOYEENUMBER, + this.eMPLOYEEWORKNUMBER, + this.eMPLOYMENTCATEGORY, + this.eMPLOYMENTCATEGORYMEANING, + this.fREQUENCY, + this.fREQUENCYMEANING, + this.fROMROWNUM, + this.gRADEID, + this.gRADENAME, + this.genderCode, + this.genderMeaning, + this.hIREDATE, + this.isFavorite, + this.jOBID, + this.jOBNAME, + this.lOCATIONID, + this.lOCATIONNAME, + this.mANUALTIMECARDFLAG, + this.mANUALTIMECARDMEANING, + this.nATIONALITYCODE, + this.nATIONALITYMEANING, + this.nATIONALIDENTIFIER, + this.nORMALHOURS, + this.nOOFROWS, + this.nUMOFSUBORDINATES, + this.oRGANIZATIONID, + this.oRGANIZATIONNAME, + this.pAYROLLCODE, + this.pAYROLLID, + this.pAYROLLNAME, + this.pERSONID, + this.pERSONTYPE, + this.pERSONTYPEID, + this.pERINFORMATIONCATEGORY, + this.pOSITIONID, + this.pOSITIONNAME, + this.pRIMARYFLAG, + this.rOWNUM, + this.sERVICEDAYS, + this.sERVICEMONTHS, + this.sERVICEYEARS, + this.sUPERVISORASSIGNMENTID, + this.sUPERVISORDISPLAYNAME, + this.sUPERVISOREMAILADDRESS, + this.sUPERVISORID, + this.sUPERVISORMOBILENUMBER, + this.sUPERVISORNAME, + this.sUPERVISORNUMBER, + this.sUPERVISORWORKNUMBER, + this.sWIPESEXEMPTEDFLAG, + this.sWIPESEXEMPTEDMEANING, + this.sYSTEMPERSONTYPE, + this.tKEMAILADDRESS, + this.tKEMPLOYEEDISPLAYNAME, + this.tKEMPLOYEENAME, + this.tKEMPLOYEENUMBER, + this.tKPERSONID, + this.tOROWNUM, + this.uNITNUMBER, + this.uSERSTATUS}); GetEmployeeSubordinatesList.fromJson(Map json) { aCTUALTERMINATIONDATE = json['ACTUAL_TERMINATION_DATE']; @@ -232,7 +231,7 @@ class GetEmployeeSubordinatesList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['ACTUAL_TERMINATION_DATE'] = this.aCTUALTERMINATIONDATE; data['ASSIGNMENT_END_DATE'] = this.aSSIGNMENTENDDATE; data['ASSIGNMENT_ID'] = this.aSSIGNMENTID; @@ -310,4 +309,4 @@ class GetEmployeeSubordinatesList { data['USER_STATUS'] = this.uSERSTATUS; return data; } -} \ No newline at end of file +} diff --git a/lib/models/update_item_type_success_list.dart b/lib/models/update_item_type_success_list.dart index 556fa42..81d0132 100644 --- a/lib/models/update_item_type_success_list.dart +++ b/lib/models/update_item_type_success_list.dart @@ -15,7 +15,7 @@ class UpdateItemTypeSuccessList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['ItemID'] = this.itemID; data['UpdateError'] = this.updateError; data['UpdateSuccess'] = this.updateSuccess; diff --git a/lib/models/update_user_item_type_list.dart b/lib/models/update_user_item_type_list.dart index ceff62a..2253ebb 100644 --- a/lib/models/update_user_item_type_list.dart +++ b/lib/models/update_user_item_type_list.dart @@ -12,7 +12,7 @@ class UpdateUserItemTypesList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['P_RETURN_MSG'] = this.pRETURNMSG; data['P_RETURN_STATUS'] = this.pRETURNSTATUS; return data; diff --git a/lib/models/worklist/update_user_type_list.dart b/lib/models/worklist/update_user_type_list.dart index dc05fde..1637880 100644 --- a/lib/models/worklist/update_user_type_list.dart +++ b/lib/models/worklist/update_user_type_list.dart @@ -1,13 +1,9 @@ - - - class UpdateUserTypesList { int? itemID; String? pFYAENABLEDFALG; String? pFYIENABLEDFALG; String? pITEMTYPE; - UpdateUserTypesList({this.itemID, this.pFYAENABLEDFALG, this.pFYIENABLEDFALG, this.pITEMTYPE}); UpdateUserTypesList.fromJson(Map json) { @@ -18,11 +14,11 @@ class UpdateUserTypesList { } Map toJson() { - Map data = new Map(); + Map data = new Map(); data['ItemID'] = this.itemID; data['P_FYAENABLED_FALG'] = this.pFYAENABLEDFALG; data['P_FYIENABLED_FALG'] = this.pFYIENABLEDFALG; data['P_ITEM_TYPE'] = this.pITEMTYPE; return data; } -} \ No newline at end of file +} diff --git a/lib/ui/landing/today_attendance_screen.dart b/lib/ui/landing/today_attendance_screen.dart index 83c3f06..cde099d 100644 --- a/lib/ui/landing/today_attendance_screen.dart +++ b/lib/ui/landing/today_attendance_screen.dart @@ -1,23 +1,16 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; -import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart'; -import 'package:mohem_flutter_app/widgets/location/Location.dart'; -import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart'; -import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart'; +import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart'; import 'package:nfc_manager/nfc_manager.dart'; import 'package:provider/provider.dart'; import 'package:wifi_iot/wifi_iot.dart'; @@ -183,62 +176,62 @@ class _TodayAttendanceScreenState extends State { ), ), //.expanded, - // MarkAttendanceWidget(model), - Container( - width: double.infinity, - decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), - // margin: EdgeInsets.only(top: 187 - 31), - padding: EdgeInsets.only(left: 21, right: 21, top: 24, bottom: 24), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - LocaleKeys.markAttendance.tr().toSectionHeading(), - LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: Color(0xff535353)), - 24.height, - GridView( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsets.zero, - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8), - children: [ - if (isNfcEnabled) - attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { - if (isNfcLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); - }); - } else { - performNfcAttendance(model); - } - }), - if (isWifiEnabled) - attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () { - if (isWifiLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); - }); - } else { - performWifiAttendance(model); - } - // connectWifi(); - }), - if (isQrEnabled) - attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async { - if (isQrLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performQrCodeAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); - }); - } else { - performQrCodeAttendance(model); - } - // performQrCodeAttendance(model); - }), - ], - ) - ], - ), - ), + MarkAttendanceWidget(model, topPadding: 24), + // Container( + // width: double.infinity, + // decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), + // // margin: EdgeInsets.only(top: 187 - 31), + // padding: EdgeInsets.only(left: 21, right: 21, top: 24, bottom: 24), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisSize: MainAxisSize.min, + // children: [ + // LocaleKeys.markAttendance.tr().toSectionHeading(), + // LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: Color(0xff535353)), + // 24.height, + // GridView( + // physics: const NeverScrollableScrollPhysics(), + // shrinkWrap: true, + // padding: EdgeInsets.zero, + // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8), + // children: [ + // if (isNfcEnabled) + // attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { + // if (isNfcLocationEnabled) { + // Location.getCurrentLocation((LatLng? latlng) { + // performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + // }); + // } else { + // performNfcAttendance(model); + // } + // }), + // if (isWifiEnabled) + // attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () { + // if (isWifiLocationEnabled) { + // Location.getCurrentLocation((LatLng? latlng) { + // performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + // }); + // } else { + // performWifiAttendance(model); + // } + // // connectWifi(); + // }), + // if (isQrEnabled) + // attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async { + // if (isQrLocationEnabled) { + // Location.getCurrentLocation((LatLng? latlng) { + // performQrCodeAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + // }); + // } else { + // performQrCodeAttendance(model); + // } + // // performQrCodeAttendance(model); + // }), + // ], + // ) + // ], + // ), + // ), // Positioned( // top: 187 - 21, // child: Container( @@ -269,59 +262,59 @@ class _TodayAttendanceScreenState extends State { ); } - Future performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { - if (isNfcLocationEnabled) { - print("nfc location enabled"); - } else { - print("nfc not location enabled"); - } - - showNfcReader(context, onNcfScan: (String? nfcId) async { - print(nfcId); - Utils.showLoading(context); - try { - GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - } catch (ex) { - print(ex); - Utils.hideLoading(context); - Utils.handleException(ex, context, (msg) { - Utils.confirmDialog(context, msg); - }); - } - }); - } - - Future performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { - if (isWifiLocationEnabled) { - print("wifi location enabled"); - } else { - print("wifi not location enabled"); - } - - bool v = await WiFiForIoTPlugin.connect(AppState().mohemmWifiSSID ?? "", password: AppState().mohemmWifiPassword ?? "", joinOnce: true, security: NetworkSecurity.WPA, withInternet: false); - if (v) { - await WiFiForIoTPlugin.forceWifiUsage(true); - print("connected"); - Utils.showLoading(context); - try { - GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 3, nfcValue: "", isGpsRequired: isWifiLocationEnabled, lat: lat, long: lng); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - await closeWifiRequest(); - } catch (ex) { - print(ex); - await closeWifiRequest(); - Utils.hideLoading(context); - Utils.handleException(ex, context, (msg) { - Utils.confirmDialog(context, msg); - }); - } - } else { - Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr()); - } - } + // Future performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { + // if (isNfcLocationEnabled) { + // print("nfc location enabled"); + // } else { + // print("nfc not location enabled"); + // } + // + // showNfcReader(context, onNcfScan: (String? nfcId) async { + // print(nfcId); + // Utils.showLoading(context); + // try { + // GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); + // bool status = await model.fetchAttendanceTracking(context); + // Utils.hideLoading(context); + // } catch (ex) { + // print(ex); + // Utils.hideLoading(context); + // Utils.handleException(ex, context, (msg) { + // Utils.confirmDialog(context, msg); + // }); + // } + // }); + // } + // + // Future performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { + // if (isWifiLocationEnabled) { + // print("wifi location enabled"); + // } else { + // print("wifi not location enabled"); + // } + // + // bool v = await WiFiForIoTPlugin.connect(AppState().mohemmWifiSSID ?? "", password: AppState().mohemmWifiPassword ?? "", joinOnce: true, security: NetworkSecurity.WPA, withInternet: false); + // if (v) { + // await WiFiForIoTPlugin.forceWifiUsage(true); + // print("connected"); + // Utils.showLoading(context); + // try { + // GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 3, nfcValue: "", isGpsRequired: isWifiLocationEnabled, lat: lat, long: lng); + // bool status = await model.fetchAttendanceTracking(context); + // Utils.hideLoading(context); + // await closeWifiRequest(); + // } catch (ex) { + // print(ex); + // await closeWifiRequest(); + // Utils.hideLoading(context); + // Utils.handleException(ex, context, (msg) { + // Utils.confirmDialog(context, msg); + // }); + // } + // } else { + // Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr()); + // } + // } Future closeWifiRequest() async { await WiFiForIoTPlugin.forceWifiUsage(false); @@ -329,62 +322,62 @@ class _TodayAttendanceScreenState extends State { return v; } - Future performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { - var qrCodeValue = await Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => QrScannerDialog(), - ), - ); - if (qrCodeValue != null) { - print("qrCode: " + qrCodeValue); - Utils.showLoading(context); - try { - GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - } catch (ex) { - print(ex); - Utils.hideLoading(context); - Utils.handleException(ex, context, (msg) { - Utils.confirmDialog(context, msg); - }); - } - } - } - - Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(15), - gradient: const LinearGradient(transform: GradientRotation(.64), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ]), - ), - clipBehavior: Clip.antiAlias, - child: Stack( - children: [ - Container( - padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SvgPicture.asset( - image, - color: Colors.white, - ).expanded, - title.toText17(isBold: true, color: Colors.white), - ], - ), - ), - if (!isEnabled) - Container( - width: double.infinity, - height: double.infinity, - color: Colors.grey.withOpacity(0.7), - ) - ], - ), - ).onPress(onPress); + // Future performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { + // var qrCodeValue = await Navigator.of(context).push( + // MaterialPageRoute( + // builder: (context) => QrScannerDialog(), + // ), + // ); + // if (qrCodeValue != null) { + // print("qrCode: " + qrCodeValue); + // Utils.showLoading(context); + // try { + // GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue); + // bool status = await model.fetchAttendanceTracking(context); + // Utils.hideLoading(context); + // } catch (ex) { + // print(ex); + // Utils.hideLoading(context); + // Utils.handleException(ex, context, (msg) { + // Utils.confirmDialog(context, msg); + // }); + // } + // } + // } + // + // Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container( + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(15), + // gradient: const LinearGradient(transform: GradientRotation(.64), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ + // MyColors.gradiantEndColor, + // MyColors.gradiantStartColor, + // ]), + // ), + // clipBehavior: Clip.antiAlias, + // child: Stack( + // children: [ + // Container( + // padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // SvgPicture.asset( + // image, + // color: Colors.white, + // ).expanded, + // title.toText17(isBold: true, color: Colors.white), + // ], + // ), + // ), + // if (!isEnabled) + // Container( + // width: double.infinity, + // height: double.infinity, + // color: Colors.grey.withOpacity(0.7), + // ) + // ], + // ), + // ).onPress(onPress); Widget commonStatusView(String title, String time) => Expanded( child: Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/ui/landing/widget/menus_widget.dart b/lib/ui/landing/widget/menus_widget.dart index e386295..91723ee 100644 --- a/lib/ui/landing/widget/menus_widget.dart +++ b/lib/ui/landing/widget/menus_widget.dart @@ -6,6 +6,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -14,125 +15,128 @@ class MenusWidget extends StatelessWidget { Widget build(BuildContext context) { List namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA]; - return Consumer(builder: (cxt, data, child) { - return GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 2 / 2, crossAxisSpacing: 9, mainAxisSpacing: 9), - padding: EdgeInsets.zero, - shrinkWrap: true, - primary: false, - physics: const NeverScrollableScrollPhysics(), - children: [ - data.isWorkListLoading - ? MenuShimmer().onPress(() { - data.fetchWorkListCounter(context, showLoading: true); - }) - : Container( - decoration: BoxDecoration( - color: Color(namesColor[0]), - borderRadius: BorderRadius.circular(10), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.workList.tr().toText12(color: Colors.white), - Row( - children: [ - Expanded( - child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true,maxlines: 1), - ), - SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) - ], - ) - ], - ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), - ).onPress(() async { - //await data.fetchWorkListCounter(context, showLoading: true); - Navigator.pushNamed(context, AppRoutes.workList); - }), - data.isMissingSwipeLoading - ? MenuShimmer().onPress(() { - data.fetchWorkListCounter(context); - }) - : Container( - decoration: BoxDecoration( - color: Color(namesColor[1]), - borderRadius: BorderRadius.circular(10), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.missingSwipes.tr().toText12(color: Colors.white), - Row( - children: [ - Expanded( - child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true,maxlines: 1), - ), - SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) - ], - ) - ], - ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), - ).onPress(() { - Navigator.pushNamed(context, AppRoutes.workList); - }), - data.isLeaveTicketBalanceLoading - ? MenuShimmer().onPress(() { - data.fetchWorkListCounter(context); - }) - : Container( - decoration: BoxDecoration( - color: Color(namesColor[2]), - borderRadius: BorderRadius.circular(10), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.leaveBalance.tr().toText12(color: Colors.white), - Row( - children: [ - Expanded( - child: data.leaveBalance.toString().toText16(color: Colors.white, isBold: true,maxlines: 1), - ), - SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) - ], - ) - ], - ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), - ).onPress(() { - Navigator.pushNamed(context, AppRoutes.workList); - }), - data.isLeaveTicketBalanceLoading - ? MenuShimmer().onPress(() { - data.fetchWorkListCounter(context); - }) - : Container( - decoration: BoxDecoration( - color: Color(namesColor[3]), - borderRadius: BorderRadius.circular(10), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.ticketBalance.tr().toText12(color: Colors.white), - Row( - children: [ - Expanded( - child: data.ticketBalance.toString().toText16(color: Colors.white, isBold: true,maxlines: 1), - ), - SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) - ], - ) - ], - ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), - ).onPress(() { - Navigator.pushNamed(context, AppRoutes.workList); - }) - ], - ); - }); + return Consumer( + builder: (cxt, data, child) { + return GridView( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 2 / 2, crossAxisSpacing: 9, mainAxisSpacing: 9), + padding: EdgeInsets.zero, + shrinkWrap: true, + primary: false, + physics: const NeverScrollableScrollPhysics(), + children: [ + data.isWorkListLoading + ? MenuShimmer().onPress(() { + data.fetchWorkListCounter(context, showLoading: true); + }) + : Container( + decoration: BoxDecoration( + color: Color(namesColor[0]), + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.workList.tr().toText12(color: Colors.white), + Row( + children: [ + Expanded( + child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), + ), + SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) + ], + ) + ], + ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.workList); + }), + data.isMissingSwipeLoading + ? MenuShimmer().onPress(() { + data.fetchWorkListCounter(context); + }) + : Container( + decoration: BoxDecoration( + color: Color(namesColor[1]), + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.missingSwipes.tr().toText12(color: Colors.white), + Row( + children: [ + Expanded( + child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), + ), + SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) + ], + ) + ], + ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); + }), + data.isLeaveTicketBalanceLoading + ? MenuShimmer().onPress(() { + data.fetchWorkListCounter(context); + }) + : Container( + decoration: BoxDecoration( + color: Color(namesColor[2]), + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.leaveBalance.tr().toText12(color: Colors.white), + Row( + children: [ + Expanded( + child: data.leaveBalance.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), + ), + SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) + ], + ) + ], + ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.leaveBalance); + }), + data.isLeaveTicketBalanceLoading + ? MenuShimmer().onPress(() { + data.fetchWorkListCounter(context); + }) + : Container( + decoration: BoxDecoration( + color: Color(namesColor[3]), + borderRadius: BorderRadius.circular(10), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.ticketBalance.tr().toText12(color: Colors.white), + Row( + children: [ + Expanded( + child: data.ticketBalance.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), + ), + SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white) + ], + ) + ], + ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), + ).onPress( + () { + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.ticketBalance.tr(), "HMG_TKT_NEW_EIT_SS")); + }, + ) + ], + ); + }, + ); } } diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart new file mode 100644 index 0000000..d87fa88 --- /dev/null +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -0,0 +1,580 @@ +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; + +class AddLeaveBalanceScreen extends StatefulWidget { + AddLeaveBalanceScreen({Key? key}) : super(key: key); + + @override + _AddLeaveBalanceScreenState createState() { + return _AddLeaveBalanceScreenState(); + } +} + +class _AddLeaveBalanceScreenState extends State { + List getabsenceDffStructureList = []; + List absenceList = []; + + GetAbsenceAttendanceTypesList? selectedAbsenceType; + DateTime? startDateTime; + DateTime? endDateTime; + int? totalDays; + String comment = ""; + ReplacementList? selectedReplacementEmployee; + + DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); + + @override + void initState() { + super.initState(); + getAbsenceAttendanceTypes(); + } + + void getAbsenceAttendanceTypes() async { + try { + Utils.showLoading(context); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + void getAbsenceDffStructure(String flexCode) async { + try { + Utils.showLoading(context); + getabsenceDffStructureList.clear(); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(flexCode, "HR_LOA_SS", -999); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + void getCalculatedAbsenceDuration() async { + try { + Utils.showLoading(context); + CalculateAbsenceDuration duration = await LeaveBalanceApiClient() + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); + print(duration.toJson()); + totalDays = duration.pABSENCEDAYS; + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + appBar: AppBarWidget( + context, + title: LocaleKeys.leaveBalance.tr(), + ), + body: Column( + children: [ + ListView( + padding: const EdgeInsets.all(21), + children: [ + PopupMenuButton( + child: DynamicTextFieldWidget( + LocaleKeys.absenceType.tr() + "*", + selectedAbsenceType == null ? LocaleKeys.selectTypeT.tr() : selectedAbsenceType!.aBSENCEATTENDANCETYPENAME!, + isEnable: false, + isPopup: true, + ), + itemBuilder: (_) => >[ + for (int i = 0; i < absenceList.length; i++) PopupMenuItem(value: i, child: Text(absenceList[i].aBSENCEATTENDANCETYPENAME!)), + ], + onSelected: (int popupIndex) { + if (selectedAbsenceType == absenceList[popupIndex]) { + return; + } + selectedAbsenceType = absenceList[popupIndex]; + setState(() {}); + getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!); + }, + ), + 12.height, + DynamicTextFieldWidget( + LocaleKeys.startDateT.tr() + "*", + startDateTime == null ? "Select date" : startDateTime.toString().split(' ')[0], + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + var start = await _selectDate(context); + if (start != startDateTime) { + startDateTime = start; + setState(() {}); + } + }, + ), + 12.height, + DynamicTextFieldWidget( + LocaleKeys.endDateT.tr() + "*", + endDateTime == null ? "Select date" : endDateTime.toString().split(' ')[0], + suffixIconData: Icons.calendar_today, + isEnable: false, + isReadOnly: selectedAbsenceType == null || startDateTime == null, + onTap: () async { + if (selectedAbsenceType == null || startDateTime == null) return; + var end = await _selectDate(context); + if (end != endDateTime) { + endDateTime = end; + setState(() {}); + getCalculatedAbsenceDuration(); + } + }, + ), + 12.height, + DynamicTextFieldWidget( + "Total Days", + totalDays?.toString() ?? "Calculated days", + isInputTypeNum: true, + isEnable: false, + onChange: (input) { + totalDays = int.parse(input); + }, + ), + 12.height, + DynamicTextFieldWidget( + LocaleKeys.selectEmployee.tr(), + selectedReplacementEmployee == null ? LocaleKeys.searchForEmployee.tr() : selectedReplacementEmployee!.employeeDisplayName ?? "", + isEnable: false, + onTap: () { + showMyBottomSheet( + context, + child: SearchEmployeeBottomSheet( + title: LocaleKeys.searchForEmployee.tr(), + apiMode: LocaleKeys.delegate.tr(), + onSelectEmployee: (_selectedEmployee) { + // Navigator.pop(context); + selectedReplacementEmployee = _selectedEmployee; + setState(() {}); + }, + ), + ); + }, + ), + 12.height, + DynamicTextFieldWidget( + LocaleKeys.comments.tr(), + LocaleKeys.writeComment.tr(), + lines: 2, + onChange: (input) { + comment = input; + }, + ), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: const EdgeInsets.only(top: 12), + itemBuilder: (cxt, int parentIndex) => parseDynamicFormatType(getabsenceDffStructureList[parentIndex], parentIndex), + separatorBuilder: (cxt, index) => 0.height, + itemCount: getabsenceDffStructureList.length, + ) + ], + ).expanded, + DefaultButton( + LocaleKeys.next.tr(), + (selectedAbsenceType == null || startDateTime == null || endDateTime == null) ? null : () {}, + ).insideContainer + ], + ), + ); + } + + Widget parseDynamicFormatType(GetAbsenceDffStructureList model, int index) { + if (model.dISPLAYFLAG != "N") { + if (model.vALIDATIONTYPE == "N") { + if (model.fORMATTYPE == "C") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? "", + isReadOnly: model.rEADONLY == "Y", + onChange: (text) { + model.eSERVICESDV ??= ESERVICESDV(); + model.eSERVICESDV!.pIDCOLUMNNAME = text; + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "N") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? "", + isReadOnly: model.rEADONLY == "Y", + isInputTypeNum: true, + onChange: (text) { + model.eSERVICESDV ??= ESERVICESDV(); + model.eSERVICESDV!.pIDCOLUMNNAME = text; + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "X") { + String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + + if (getabsenceDffStructureList[index].isDefaultTypeIsCDPS) { + if (displayText.contains(" 00:00:00")) { + displayText = displayText.replaceAll(" 00:00:00", ""); + } + if (displayText.contains("/")) { + displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); + } + } + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + displayText, + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + selectedDate = DateFormat("yyyy/MM/dd").parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", "")); + } else { + selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); + } + } + DateTime date = await _selectDate(context); + String dateString = date.toString().split(' ').first; + // DateTime date1 = DateTime(date.year, date.month, date.day); + // getabsenceDffStructureList![index].fieldAnswer = date.toString(); + ESERVICESDV eservicesdv; + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: Utils.formatDate(dateString), + pRETURNMSG: "null", + pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: + getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + } else { + eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: dateString, + pRETURNMSG: "null", + pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: + getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + } + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "Y") { + String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + displayText = Utils.reverseFormatDate(displayText); + // if (displayText.contains(" 00:00:00")) { + // displayText = displayText.replaceAll(" 00:00:00", ""); + // } + // if (!displayText.contains("-")) { + // displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); + // } + } + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + displayText, + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + String tempDate = getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!; + if (tempDate.contains("00:00:00")) { + tempDate = tempDate.replaceAll("00:00:00", '').trim(); + } + if (tempDate.contains("/")) { + selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate); + } else { + selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate); + } + } else { + selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); + } + } + DateTime date = await _selectDate(context); + String dateString = date.toString().split(' ').first; + // getabsenceDffStructureList![index].fieldAnswer = date.toString(); + ESERVICESDV eservicesdv; + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: Utils.formatDate(dateString), + pRETURNMSG: "null", + pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: + getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + } else { + eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: dateString, + pRETURNMSG: "null", + pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: + getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + } + + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }, + ).paddingOnly(bottom: 12); + } + } else { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pVALUECOLUMNNAME ?? "", + isEnable: false, + isPopup: true, + isInputTypeNum: true, + isReadOnly: model.rEADONLY == "Y", + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + if (model.rEADONLY != "Y") + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + ], + onSelected: (int popipIndex) async { + ESERVICESDV eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, + pRETURNMSG: "null", + pRETURNSTATUS: "null", //getabsenceDffStructureList![popipIndex].dEFAULTVALUE, + pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }); + } + } else { + return const SizedBox(); + } + if (model.fORMATTYPE == "N") { + if (model.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pVALUECOLUMNNAME ?? "", + isEnable: false, + isPopup: true, + isInputTypeNum: true, + isReadOnly: model.rEADONLY == "Y", + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + if (model.rEADONLY != "Y") + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(value: i, child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!)), + ], + onSelected: (int popipIndex) async { + ESERVICESDV eservicesdv = + ESERVICESDV(pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", pRETURNSTATUS: "null", pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }); + } + + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? "", + isReadOnly: model.rEADONLY == "Y", + onChange: (text) { + //model.fieldAnswer = text; + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "X" || model.fORMATTYPE == "Y") { + String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + if (displayText.contains(" 00:00:00")) { + displayText = displayText.replaceAll(" 00:00:00", ""); + } + if (!displayText.contains("-")) { + displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); + } + } + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + displayText, + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { + if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) { + selectedDate = DateFormat("yyyy/MM/dd").parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", "")); + } else { + selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); + } + } + DateTime date = await _selectDate(context); + String dateString = date.toString().split(' ').first; + // getabsenceDffStructureList![index].fieldAnswer = date.toString(); + ESERVICESDV eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: dateString, + pRETURNMSG: "null", + pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: + getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "I") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? "", + suffixIconData: Icons.access_time_filled_rounded, + isEnable: false, + onTap: () async { + if (getabsenceDffStructureList[index].mOBILEENABLED != "Y") return; + + if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { + var timeString = getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.split(":"); + selectedDate = DateTime(0, 0, 0, int.parse(timeString[0]), int.parse(timeString[1])); + + //DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); + } + TimeOfDay _time = await _selectTime(context); + DateTime tempTime = DateTime(0, 1, 1, _time.hour, _time.minute); + String time = DateFormat('HH:mm').format(tempTime).trim(); + + // DateTime date1 = DateTime(date.year, date.month, date.day); + // getabsenceDffStructureList![index].fieldAnswer = date.toString(); + ESERVICESDV eservicesdv = ESERVICESDV(pIDCOLUMNNAME: time, pRETURNMSG: "null", pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, pVALUECOLUMNNAME: time); + getabsenceDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + // await calGetValueSetValues(model); + // } + // if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + // await getDefaultValues(model); + // } + }, + ).paddingOnly(bottom: 12); + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [], + ).objectContainerView(); + } + + Future _selectDate(BuildContext context) async { + DateTime time = selectedDate; + if (Platform.isIOS) { + await showCupertinoModalPopup( + context: context, + builder: (cxt) => Container( + height: 250, + color: Colors.white, + child: CupertinoDatePicker( + backgroundColor: Colors.white, + mode: CupertinoDatePickerMode.date, + onDateTimeChanged: (value) { + if (value != null && value != selectedDate) { + time = value; + } + }, + initialDateTime: selectedDate, + ), + ), + ); + } else { + DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + if (picked != null && picked != selectedDate) { + time = picked; + } + } + time = DateTime(time.year, time.month, time.day); + return time; + } + + Future _selectTime(BuildContext context) async { + TimeOfDay time = TimeOfDay(hour: selectedDate.hour, minute: selectedDate.minute); + if (Platform.isIOS) { + await showCupertinoModalPopup( + context: context, + builder: (cxt) => Container( + height: 250, + color: Colors.white, + child: CupertinoDatePicker( + backgroundColor: Colors.white, + mode: CupertinoDatePickerMode.time, + use24hFormat: true, + onDateTimeChanged: (value) { + if (value != null && value != selectedDate) { + time = TimeOfDay(hour: value.hour, minute: value.minute); + } + }, + initialDateTime: selectedDate, + ), + ), + ); + } else { + TimeOfDay? picked = await showTimePicker( + context: context, + initialTime: time, + builder: (cxt, child) { + return MediaQuery(data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), child: child ?? Container()); + }); + + if (picked != null && picked != time) { + time = picked; + } + // final DateTime? picked = + // await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + // if (picked != null && picked != selectedDate) { + // time = picked; + // } + } + return time; + } +} diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart new file mode 100644 index 0000000..70a7f7c --- /dev/null +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -0,0 +1,96 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; + +class LeaveBalance extends StatefulWidget { + LeaveBalance({Key? key}) : super(key: key); + + @override + _LeaveBalanceState createState() { + return _LeaveBalanceState(); + } +} + +class _LeaveBalanceState extends State { + List? absenceTransList; + + @override + void initState() { + super.initState(); + getAbsenceTransactions(); + } + + @override + void dispose() { + super.dispose(); + } + + void getAbsenceTransactions() async { + // try { + Utils.showLoading(context); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + Utils.hideLoading(context); + setState(() {}); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + appBar: AppBarWidget( + context, + title: LocaleKeys.leaveBalance.tr(), + ), + body: absenceTransList == null + ? const SizedBox() + : (absenceTransList!.isEmpty + ? Utils.getNoDataWidget(context) + : ListView.separated( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(21), + itemBuilder: (cxt, int index) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + ItemDetailView(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""), + ItemDetailView(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""), + ItemDetailView(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""), + ItemDetailView(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""), + ItemDetailView(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""), + ItemDetailView(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""), + ItemDetailView(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""), + ItemDetailView(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""), + ], + ).objectContainerView(), + separatorBuilder: (cxt, index) => 12.height, + itemCount: absenceTransList!.length)), + floatingActionButton: Container( + height: 54, + width: 54, + decoration: const BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ]), + ), + child: const Icon(Icons.add, color: Colors.white, size: 30), + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.addLeaveBalance); + }), + ); + } +} diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 72b0567..4f6e527 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -281,7 +281,7 @@ class _DynamicInputScreenState extends State { // idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day)); // } - idColName = formatStandardDate(idColName!); + idColName = Utils.formatStandardDate(idColName!); } } else { val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME; @@ -293,7 +293,7 @@ class _DynamicInputScreenState extends State { idColName = val; if (getEitDffStructureList![j].fORMATTYPE == "X") { - idColName = formatDateNew(idColName!); + idColName = Utils.formatDateNew(idColName!); // commenting to test // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!); // idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date); @@ -406,7 +406,8 @@ class _DynamicInputScreenState extends State { padding: const EdgeInsets.all(21), itemBuilder: (cxt, int parentIndex) => parseDynamicFormatType(getEitDffStructureList![parentIndex], parentIndex), separatorBuilder: (cxt, index) => 0.height, - itemCount: getEitDffStructureList!.length))) + itemCount: getEitDffStructureList!.length, + ))) .expanded, // 12.height, DefaultButton( @@ -481,16 +482,18 @@ class _DynamicInputScreenState extends State { ESERVICESDV eservicesdv; if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: formatDate(dateString), + pIDCOLUMNNAME: Utils.formatDate(dateString), pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: + getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } else { eservicesdv = ESERVICESDV( pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: + getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); @@ -505,7 +508,7 @@ class _DynamicInputScreenState extends State { } else if (model.fORMATTYPE == "Y") { String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? ""); if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { - displayText = reverseFormatDate(displayText); + displayText = Utils.reverseFormatDate(displayText); // if (displayText.contains(" 00:00:00")) { // displayText = displayText.replaceAll(" 00:00:00", ""); // } @@ -540,16 +543,18 @@ class _DynamicInputScreenState extends State { ESERVICESDV eservicesdv; if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: formatDate(dateString), + pIDCOLUMNNAME: Utils.formatDate(dateString), pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: + getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } else { eservicesdv = ESERVICESDV( pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: + getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } getEitDffStructureList![index].eSERVICESDV = eservicesdv; @@ -663,7 +668,7 @@ class _DynamicInputScreenState extends State { pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { @@ -736,8 +741,7 @@ class _DynamicInputScreenState extends State { ), ); } else { - DateTime? picked = - await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); if (picked != null && picked != selectedDate) { time = picked; } @@ -786,59 +790,4 @@ class _DynamicInputScreenState extends State { } return time; } - - String reverseFormatDate(String date) { - String formattedDate; - if (date.isNotEmpty) { - formattedDate = date.replaceAll('/', '-'); - formattedDate = formattedDate.replaceAll(' 00:00:00', ''); - } else { - formattedDate = date; - } - return formattedDate; - } - - String formatStandardDate(String date) { - String formattedDate; - if (date.isNotEmpty) { - formattedDate = date.replaceAll('-', '/'); - } else { - formattedDate = date; - } - return formattedDate; - } - - String reverseFormatStandardDate(String date) { - String formattedDate; - if (date.isNotEmpty) { - formattedDate = date.replaceAll('/', '-'); - } else { - formattedDate = date; - } - return formattedDate; - } - - String formatDate(String date) { - String formattedDate; - - if (date.isNotEmpty) { - date = date.substring(0, 10); - formattedDate = date.replaceAll('-', '/'); - formattedDate = formattedDate + ' 00:00:00'; - } else { - formattedDate = date; - } - return formattedDate; - } - - String formatDateNew(String date) { - String formattedDate; - if (date.isNotEmpty) { - formattedDate = date.split('T')[0]; - formattedDate = formattedDate + ' 00:00:00'; - } else { - formattedDate = date; - } - return formattedDate; - } } diff --git a/lib/ui/my_team/view_attendance.dart b/lib/ui/my_team/view_attendance.dart index 3f978c3..06b0bce 100644 --- a/lib/ui/my_team/view_attendance.dart +++ b/lib/ui/my_team/view_attendance.dart @@ -447,7 +447,7 @@ class _ViewAttendanceState extends State { List _getDataSource() { - List meetings = []; + List meetings = []; return meetings; } @@ -545,7 +545,7 @@ class MeetingDataSource extends CalendarDataSource { } Meeting _getMeetingData(int index) { - dynamic meeting = appointments; + dynamic meeting = appointments; Meeting meetingData; if (meeting is Meeting) { meetingData = meeting; diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index 35f2071..a2896a5 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -33,9 +34,11 @@ class _BasicDetailsState extends State { String? emailAddress = ""; String? employeeNo = ""; int correctOrNew = 1; - List getEmployeeBasicDetailsList = []; + List? getEmployeeBasicDetailsList; + late MemberInformationListModel memberInformationList; GetMenuEntriesList menuEntries = GetMenuEntriesList(); + @override void initState() { super.initState(); @@ -58,7 +61,6 @@ class _BasicDetailsState extends State { } } - Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget( @@ -68,53 +70,43 @@ class _BasicDetailsState extends State { backgroundColor: MyColors.backgroundColor, body: Column( children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: double.infinity, - margin: EdgeInsets.only(top: 20, left: 21, right: 21, bottom: 20), - padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5), - height: 300, - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 26, - offset: Offset(0, 3), - ), - ], - color: Colors.white, - borderRadius: BorderRadius.circular(10.0), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: getEmployeeBasicDetailsList.map((e) => - Column( - children: [ - e.dISPLAYFLAG == "Y" ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - SizedBox(height: 12,) - ]): Container(), - ], - )).toList()), - ), - ], - ), - ), + ListView( + padding: const EdgeInsets.all(21), + children: [ + getEmployeeBasicDetailsList == null + ? const SizedBox().expanded + : (getEmployeeBasicDetailsList!.isEmpty + ? Utils.getNoDataWidget(context).expanded + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: getEmployeeBasicDetailsList! + .map((e) => Column( + children: [ + e.dISPLAYFLAG == "Y" + ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), + "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), + 12.height + ]) + : Container(), + ], + )) + .toList()) + .objectContainerView()) + ], + ).expanded, DefaultButton( - LocaleKeys.update.tr(), - menuEntries.updateButton == 'Y' ? () async { - showAlertDialog(context);} - : null).insideContainer, + LocaleKeys.update.tr(), + menuEntries.updateButton == 'Y' + ? () async { + showAlertDialog(context); + } + : null) + .insideContainer, ], )); } - void showAlertDialog(BuildContext context) { Widget cancelButton = TextButton( child: Text(LocaleKeys.cancel.tr()), diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 4d223cf..4bc3fa1 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -4,7 +4,9 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; @@ -13,9 +15,7 @@ import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart'; import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart'; -import 'package:mohem_flutter_app/ui/profile/profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:provider/provider.dart'; class ContactDetails extends StatefulWidget { @@ -47,26 +47,12 @@ class _ContactDetailsState extends State { menuEntriesPhone = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList()[0]; menuEntriesAddress = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList()[0]; getEmployeePhones(); - - setState(() {}); } void getEmployeePhones() async { try { Utils.showLoading(context); getEmployeePhonesList = await ProfileApiClient().getEmployeePhones(); - getEmployeeAddress(); - Utils.hideLoading(context); - setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } - } - - void getEmployeeAddress() async { - try { - Utils.showLoading(context); getEmployeeAddressList = await ProfileApiClient().getEmployeeAddress(); Utils.hideLoading(context); setState(() {}); @@ -78,36 +64,18 @@ class _ContactDetailsState extends State { Widget build(BuildContext context) { return Scaffold( - appBar: AppBarWidget( - context, - title: LocaleKeys.profile_contactDetails.tr(), - ), - backgroundColor: MyColors.backgroundColor, - body: SingleChildScrollView( - child: Column(children: [ - Container( - width: double.infinity, - margin: EdgeInsets.only( - top: 20, - left: 26, - right: 26, - ), - padding: EdgeInsets.all(15), - - ///height: 200, - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 26, - offset: Offset(0, 3), - ), - ], - color: Colors.white, - borderRadius: BorderRadius.circular(10.0), - ), - child: Stack(children: [ + appBar: AppBarWidget( + context, + title: LocaleKeys.profile_contactDetails.tr(), + ), + backgroundColor: MyColors.backgroundColor, + // bottomSheet: footer(), + body: ListView( + padding: const EdgeInsets.all(21), + children: [ + if (getEmployeePhonesList.isNotEmpty) + Stack( + children: [ Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -124,37 +92,33 @@ class _ContactDetailsState extends State { : Container() ], ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: getEmployeePhonesList - .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${e.pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), - "${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), - ])) - .toList()) - ])), - Container( - width: double.infinity, - margin: EdgeInsets.only( - top: 20, - left: 26, - right: 26, - ), - padding: EdgeInsets.all(15), - // height: 400, - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 26, - offset: Offset(0, 3), - ), - ], - color: Colors.white, - borderRadius: BorderRadius.circular(10.0), - ), - child: Stack(children: [ + ListView.separated( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsets.zero, + itemBuilder: (cxt, index) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "${getEmployeePhonesList[index].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), + ("${getEmployeePhonesList[index].pHONENUMBER}" ?? "").toText16(isBold: true, color: MyColors.blackColor), + ], + ), + separatorBuilder: (cxt, index) => 12.height, + itemCount: getEmployeePhonesList.length), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: getEmployeePhonesList + // .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + // "${e.pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), + // "${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), + // ])) + // .toList()) + ], + ).objectContainerView(), + 12.height, + if (getEmployeeAddressList.isNotEmpty) + Stack( + children: [ Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -171,37 +135,34 @@ class _ContactDetailsState extends State { : Container() ], ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: getEmployeeAddressList - .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - SizedBox( - height: 20, - ), - ])) - .toList()) - ])) - ]))); + ListView.separated( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsets.zero, + itemBuilder: (cxt, index) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "${getEmployeeAddressList[index].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), + ("${getEmployeeAddressList[index].sEGMENTVALUEDSP}" ?? "").toText16(isBold: true, color: MyColors.blackColor), + ], + ), + separatorBuilder: (cxt, index) => 12.height, + itemCount: getEmployeeAddressList.length), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: getEmployeeAddressList + // .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + // "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), + // "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), + // ])) + // .toList()) + ], + ).objectContainerView() + ], + ), + ); } - // Widget footer() { - // return Container( - // decoration: BoxDecoration( - // // borderRadius: BorderRadius.circular(10), - // color: MyColors.white, - // boxShadow: [ - // BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), - // ], - // ), - // child: DefaultButton(LocaleKeys.update.tr(), () async { - // // context.setLocale(const Locale("en", "US")); // to change Loacle - // ProfileScreen(); - // }).insideContainer, - // ); - // } - void updatePhone() { Navigator.push( context, diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index c534dee..449fd97 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -19,8 +19,9 @@ import 'package:wifi_iot/wifi_iot.dart'; class MarkAttendanceWidget extends StatefulWidget { DashboardProviderModel model; + double topPadding; - MarkAttendanceWidget(this.model, {Key? key}) : super(key: key); + MarkAttendanceWidget(this.model, {Key? key, this.topPadding = 0}) : super(key: key); @override _MarkAttendanceWidgetState createState() { @@ -70,9 +71,8 @@ class _MarkAttendanceWidgetState extends State { @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.only(left: 21, right: 21, bottom: 21), - decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), - + padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding), + decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), width: double.infinity, child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -85,16 +85,16 @@ class _MarkAttendanceWidgetState extends State { padding: const EdgeInsets.only(bottom: 14, top: 21), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8), children: [ - if (isNfcEnabled) - attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { - if (isNfcLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); - }); - } else { - performNfcAttendance(widget.model); - } - }), + // if (isNfcEnabled) + attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { + if (isNfcLocationEnabled) { + Location.getCurrentLocation((LatLng? latlng) { + performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + }); + } else { + performNfcAttendance(widget.model); + } + }), if (isWifiEnabled) attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () { if (isWifiLocationEnabled) { @@ -180,8 +180,7 @@ class _MarkAttendanceWidgetState extends State { Future closeWifiRequest() async { await WiFiForIoTPlugin.forceWifiUsage(false); - bool v = await WiFiForIoTPlugin.disconnect(); - return v; + return await WiFiForIoTPlugin.disconnect(); } Future performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { @@ -210,40 +209,30 @@ class _MarkAttendanceWidgetState extends State { Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), - gradient: const LinearGradient( - transform: GradientRotation(.64), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], - ), + color: isEnabled ? null : Colors.grey.withOpacity(.5), + gradient: isEnabled + ? const LinearGradient( + transform: GradientRotation(.64), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ) + : null, ), clipBehavior: Clip.antiAlias, - child: Stack( + padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: SvgPicture.asset( - image, - color: Colors.white, - )), - title.toText17(isBold: true, color: Colors.white), - ], - ), - ), - if (!isEnabled) - Container( - width: double.infinity, - height: double.infinity, - color: Colors.grey.withOpacity(0.7), - ) + SvgPicture.asset(image, color: Colors.white).expanded, + title.toText17(isBold: true, color: Colors.white), ], ), - ).onPress(onPress); + ).onPress(() { + if (!isEnabled) return; + onPress(); + }); }