From 8855eb7622fb1b7b1274bc65898b0d802c9c8cc2 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 28 Aug 2022 13:10:12 +0300 Subject: [PATCH] leave balance cont2. --- lib/api/leave_balance_api_client.dart | 12 +-- lib/main.dart | 2 - lib/models/generic_response_model.dart | 33 ++++++-- ...t_absence_attendance_types_list_model.dart | 24 ++++++ .../get_absence_transaction_list_model.dart | 80 +++++++++++++++++++ .../add_leave_balance_screen.dart | 5 +- .../leave_balance/leave_balance_screen.dart | 11 +-- 7 files changed, 147 insertions(+), 20 deletions(-) create mode 100644 lib/models/leave_balance/get_absence_attendance_types_list_model.dart create mode 100644 lib/models/leave_balance/get_absence_transaction_list_model.dart diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index 58158f9..d6f087b 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -2,8 +2,8 @@ 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/vacation_rule/get_vacation_rules_list_model.dart'; -import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_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_transaction_list_model.dart'; class LeaveBalanceApiClient { static final LeaveBalanceApiClient _instance = LeaveBalanceApiClient._internal(); @@ -12,23 +12,23 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID) async { + 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.getVacationRulesList ?? []; + return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getVrItgetAbsenceAttendanceTypesemTypes() async { + 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.vrItemTypesList ?? []; + return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } } 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 23026e3..3b60887 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -32,6 +32,8 @@ import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model. import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart'; 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/leave_balance/get_absence_attendance_types_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'; @@ -132,10 +134,10 @@ class GenericResponseModel { String? employeeQR; String? forgetPasswordTokenID; List? getAbsenceAttachmentsList; - List? getAbsenceAttendanceTypesList; + List? getAbsenceAttendanceTypesList; List? getAbsenceCollectionNotificationBodyList; List? getAbsenceDffStructureList; - List? getAbsenceTransactionList; + List? getAbsenceTransactionList; List? getAccrualBalancesList; List? getActionHistoryList; List? getAddressDffStructureList; @@ -671,7 +673,13 @@ class GenericResponseModel { employeeQR = json['EmployeeQR']; forgetPasswordTokenID = json['ForgetPasswordTokenID']; getAbsenceAttachmentsList = json['GetAbsenceAttachmentsList']; - getAbsenceAttendanceTypesList = json['GetAbsenceAttendanceTypesList']; + + if (json['GetAbsenceAttendanceTypesList'] != null) { + getAbsenceAttendanceTypesList = []; + json['GetAbsenceAttendanceTypesList'].forEach((v) { + getAbsenceAttendanceTypesList!.add(new GetAbsenceAttendanceTypesList.fromJson(v)); + }); + } if (json['GetAbsenceCollectionNotificationBodyList'] != null) { getAbsenceCollectionNotificationBodyList = []; @@ -681,7 +689,14 @@ class GenericResponseModel { } getAbsenceDffStructureList = json['GetAbsenceDffStructureList']; - getAbsenceTransactionList = json['GetAbsenceTransactionList']; + + if (json['GetAbsenceTransactionList'] != null) { + getAbsenceTransactionList = []; + json['GetAbsenceTransactionList'].forEach((v) { + getAbsenceTransactionList!.add(new GetAbsenceTransactionList.fromJson(v)); + }); + } + getAccrualBalancesList = json["GetAccrualBalancesList"] == null ? null : List.from(json["GetAccrualBalancesList"].map((x) => GetAccrualBalancesList.fromJson(x))); if (json['GetActionHistoryList'] != null) { @@ -1311,14 +1326,20 @@ 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.getAbsenceTransactionList != null) { + data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList!.map((v) => v.toJson()).toList(); + } data['GetAccrualBalancesList'] = this.getAccrualBalancesList; if (this.getActionHistoryList != null) { 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_transaction_list_model.dart b/lib/models/leave_balance/get_absence_transaction_list_model.dart new file mode 100644 index 0000000..d61cf2f --- /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 = json['ABSENCE_DAYS']; + 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/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index f0b70f8..b4278af 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -3,6 +3,7 @@ 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/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { @@ -15,6 +16,8 @@ class AddLeaveBalanceScreen extends StatefulWidget { } class _AddLeaveBalanceScreenState extends State { + List absenceList = []; + @override void initState() { super.initState(); @@ -24,7 +27,7 @@ class _AddLeaveBalanceScreenState extends State { void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - var bac = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); Utils.hideLoading(context); setState(() {}); } catch (ex) { diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 7dd4c29..8b00ce8 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -7,6 +7,7 @@ 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'; @@ -20,7 +21,7 @@ class LeaveBalance extends StatefulWidget { } class _LeaveBalanceState extends State { - List list = []; + List? absenceTransList; @override void initState() { @@ -36,7 +37,7 @@ class _LeaveBalanceState extends State { void getAbsenceTransactions() async { try { Utils.showLoading(context); - var bac = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -53,9 +54,9 @@ class _LeaveBalanceState extends State { context, title: LocaleKeys.leaveBalance.tr(), ), - body: list == null + body: absenceTransList == null ? const SizedBox() - : (list!.isEmpty + : (absenceTransList!.isEmpty ? Utils.getNoDataWidget(context) : ListView.separated( physics: const BouncingScrollPhysics(), @@ -75,7 +76,7 @@ class _LeaveBalanceState extends State { ], ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, - itemCount: list!.length + 1)), + itemCount: absenceTransList!.length)), floatingActionButton: Container( height: 54, width: 54,