Merge branch 'master' into Fatima

merge-requests/1/merge
Fatimah Alshammari 3 years ago
commit 07636bef77

@ -3,9 +3,12 @@ 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/cancel_hr_transaction_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_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/leave_balance/start_absence_approval_proccess_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/sumbit_absence_transaction_list_model.dart';
class LeaveBalanceApiClient {
static final LeaveBalanceApiClient _instance = LeaveBalanceApiClient._internal();
@ -38,8 +41,8 @@ class LeaveBalanceApiClient {
String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION";
Map<String, dynamic> postParams = {
"P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID,
"P_DATE_END": pDateStart, //"29-Sep-2022",
"P_DATE_START": pDateEnd,
"P_DATE_START": pDateStart,
"P_DATE_END": pDateEnd,
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
@ -63,7 +66,7 @@ class LeaveBalanceApiClient {
}
Future<GenericResponseModel> validateAbsenceTransaction(
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String> data,
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String?> data,
{String comments = ""}) async {
String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION";
Map<String, dynamic> postParams = {
@ -74,8 +77,8 @@ class LeaveBalanceApiClient {
"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_DATE_START": pDateStart,
"P_DATE_END": pDateEnd, //"29-Sep-2022",
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
@ -89,8 +92,8 @@ class LeaveBalanceApiClient {
}, url, postParams);
}
Future<GenericResponseModel> submitAbsenceTransaction(
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String> data,
Future<SumbitAbsenceTransactionList> submitAbsenceTransaction(
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String?> data,
{String comments = ""}) async {
String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION";
Map<String, dynamic> postParams = {
@ -101,8 +104,8 @@ class LeaveBalanceApiClient {
"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_DATE_START": pDateStart,
"P_DATE_END": pDateEnd, //"29-Sep-2022",
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
@ -112,7 +115,32 @@ class LeaveBalanceApiClient {
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData;
return responseData.sumbitAbsenceTransactionList!;
}, url, postParams);
}
Future<CancelHRTransactionLIst> cancelHrTransaction(int pTransactionID) async {
String url = "${ApiConsts.erpRest}CANCEL_HR_TRANSACTION";
Map<String, dynamic> postParams = {"P_TRANSACTION_ID": pTransactionID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.cancelHRTransactionLIst!;
}, url, postParams);
}
Future<StartAbsenceApprovalProccess> startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async {
String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_TRANSACTION_ID": pTransactionID,
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_COMMENTS": comments,
"P_MENU_TYPE": "E",
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startAbsenceApprovalProccess!;
}, url, postParams);
}
}

@ -34,9 +34,13 @@ import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_mod
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/cancel_hr_transaction_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_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/leave_balance/start_absence_approval_proccess_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/sumbit_absence_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/validate_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';
@ -126,7 +130,7 @@ class GenericResponseModel {
BasicMemberInformationModel? basicMemberInformation;
bool? businessCardPrivilege;
CalculateAbsenceDuration? calculateAbsenceDuration;
String? cancelHRTransactionLIst;
CancelHRTransactionLIst? cancelHRTransactionLIst;
String? chatEmployeeLoginList;
String? companyBadge;
String? companyImage;
@ -310,7 +314,7 @@ class GenericResponseModel {
String? resubmitHrTransactionList;
String? sFHGetPoNotificationBodyList;
String? sFHGetPrNotificationBodyList;
String? startAbsenceApprovalProccess;
StartAbsenceApprovalProccess? startAbsenceApprovalProccess;
StartAddressApprovalProcess? startAddressApprovalProcessList;
String? startBasicDetApprProcessList;
String? startCeiApprovalProcess;
@ -331,7 +335,7 @@ class GenericResponseModel {
String? submitSITTransactionList;
String? submitTermTransactionList;
List<SubordinatesLeavesList>? subordinatesOnLeavesList;
String? sumbitAbsenceTransactionList;
SumbitAbsenceTransactionList? sumbitAbsenceTransactionList;
String? tokenID;
String? updateAttachmentList;
String? updateEmployeeImageList;
@ -343,7 +347,7 @@ class GenericResponseModel {
String? vHRGetManagersDetailsList;
String? vHRGetProjectByCodeList;
bool? vHRIsVerificationCodeValid;
String? validateAbsenceTransactionList;
ValidateAbsenceTransactionList? validateAbsenceTransactionList;
ValidateEITTransactionList? validateEITTransactionList;
String? validatePhonesTransactionList;
List<VrItemTypesList>? vrItemTypesList;
@ -658,7 +662,7 @@ class GenericResponseModel {
basicMemberInformation = json['BasicMemberInformation'] != null ? BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null;
businessCardPrivilege = json['BusinessCardPrivilege'];
calculateAbsenceDuration = json['CalculateAbsenceDuration'] != null ? new CalculateAbsenceDuration.fromJson(json['CalculateAbsenceDuration']) : null;
cancelHRTransactionLIst = json['CancelHRTransactionLIst'];
cancelHRTransactionLIst = json['CancelHRTransactionLIst'] != null ? new CancelHRTransactionLIst.fromJson(json['CancelHRTransactionLIst']) : null;
chatEmployeeLoginList = json['Chat_EmployeeLoginList'];
companyBadge = json['CompanyBadge'];
companyImage = json['CompanyImage'];
@ -1220,7 +1224,7 @@ class GenericResponseModel {
resubmitHrTransactionList = json['ResubmitHrTransactionList'];
sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList'];
sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList'];
startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'];
startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'] != null ? StartAbsenceApprovalProccess.fromJson(json['StartAbsenceApprovalProccess']) : null;
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null;
startBasicDetApprProcessList = json['StartBasicDetApprProcessList'];
@ -1254,7 +1258,8 @@ class GenericResponseModel {
});
}
sumbitAbsenceTransactionList = json['SumbitAbsenceTransactionList'];
sumbitAbsenceTransactionList = json['SumbitAbsenceTransactionList'] != null ? new SumbitAbsenceTransactionList.fromJson(json['SumbitAbsenceTransactionList']) : null;
tokenID = json['TokenID'];
updateAttachmentList = json['UpdateAttachmentList'];
updateEmployeeImageList = json['UpdateEmployeeImageList'];
@ -1271,7 +1276,8 @@ class GenericResponseModel {
vHRGetManagersDetailsList = json['VHR_GetManagersDetailsList'];
vHRGetProjectByCodeList = json['VHR_GetProjectByCodeList'];
vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid'];
validateAbsenceTransactionList = json['ValidateAbsenceTransactionList'];
validateAbsenceTransactionList = json['ValidateAbsenceTransactionList'] != null ? ValidateAbsenceTransactionList.fromJson(json['ValidateAbsenceTransactionList']) : null;
validateEITTransactionList = json['ValidateEITTransactionList'] != null ? ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null;
@ -1339,11 +1345,12 @@ class GenericResponseModel {
data['BasicMemberInformation'] = this.basicMemberInformation!.toJson();
}
data['BusinessCardPrivilege'] = this.businessCardPrivilege;
if (this.calculateAbsenceDuration != null) {
data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration!.toJson();
}
data['CancelHRTransactionLIst'] = this.cancelHRTransactionLIst;
if (this.cancelHRTransactionLIst != null) {
data['CancelHRTransactionLIst'] = this.calculateAbsenceDuration!.toJson();
}
data['Chat_EmployeeLoginList'] = this.chatEmployeeLoginList;
data['CompanyBadge'] = this.companyBadge;
data['CompanyImage'] = this.companyImage;
@ -1657,7 +1664,9 @@ class GenericResponseModel {
data['ResubmitHrTransactionList'] = this.resubmitHrTransactionList;
data['SFH_GetPoNotificationBodyList'] = this.sFHGetPoNotificationBodyList;
data['SFH_GetPrNotificationBodyList'] = this.sFHGetPrNotificationBodyList;
data['StartAbsenceApprovalProccess'] = this.startAbsenceApprovalProccess;
if (this.startAbsenceApprovalProccess != null) {
data['StartAbsenceApprovalProccess'] = this.startAbsenceApprovalProccess!.toJson();
}
data['StartAddressApprovalProcessList'] = this.startAddressApprovalProcessList;
data['StartBasicDetApprProcessList'] = this.startBasicDetApprProcessList;
data['StartCeiApprovalProcess'] = this.startCeiApprovalProcess;
@ -1696,7 +1705,9 @@ class GenericResponseModel {
data['SubordinatesOnLeavesList'] = this.subordinatesOnLeavesList!.map((v) => v.toJson()).toList();
}
data['SumbitAbsenceTransactionList'] = this.sumbitAbsenceTransactionList;
if (this.sumbitAbsenceTransactionList != null) {
data['SumbitAbsenceTransactionList'] = this.sumbitAbsenceTransactionList!.toJson();
}
data['TokenID'] = this.tokenID;
data['UpdateAttachmentList'] = this.updateAttachmentList;
data['UpdateEmployeeImageList'] = this.updateEmployeeImageList;
@ -1712,8 +1723,10 @@ class GenericResponseModel {
data['VHR_GetManagersDetailsList'] = this.vHRGetManagersDetailsList;
data['VHR_GetProjectByCodeList'] = this.vHRGetProjectByCodeList;
data['VHR_IsVerificationCodeValid'] = this.vHRIsVerificationCodeValid;
data['ValidateAbsenceTransactionList'] = this.validateAbsenceTransactionList;
if (validateAbsenceTransactionList != null) {
data['ValidateAbsenceTransactionList'] = validateAbsenceTransactionList!.toJson();
}
if (validateEITTransactionList != null) {
data['ValidateEITTransactionList'] = validateEITTransactionList!.toJson();
}

@ -0,0 +1,18 @@
class CancelHRTransactionLIst {
String? pRETURNMSG;
String? pRETURNSTATUS;
CancelHRTransactionLIst({this.pRETURNMSG, this.pRETURNSTATUS});
CancelHRTransactionLIst.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -0,0 +1,18 @@
class StartAbsenceApprovalProccess {
String? pRETURNMSG;
String? pRETURNSTATUS;
StartAbsenceApprovalProccess({this.pRETURNMSG, this.pRETURNSTATUS});
StartAbsenceApprovalProccess.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -0,0 +1,22 @@
class SumbitAbsenceTransactionList {
String? pRETURNMSG;
String? pRETURNSTATUS;
int? pTRANSACTIONID;
SumbitAbsenceTransactionList(
{this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID});
SumbitAbsenceTransactionList.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
pTRANSACTIONID = json['P_TRANSACTION_ID'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
data['P_TRANSACTION_ID'] = this.pTRANSACTIONID;
return data;
}
}

@ -0,0 +1,18 @@
class ValidateAbsenceTransactionList {
String? pRETURNMSG;
String? pRETURNSTATUS;
ValidateAbsenceTransactionList({this.pRETURNMSG, this.pRETURNSTATUS});
ValidateAbsenceTransactionList.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -1,5 +1,3 @@
class UpdateUserItemTypesList {
String? pRETURNMSG;
String? pRETURNSTATUS;

@ -4,7 +4,9 @@ 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/date_uitl.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';
@ -12,7 +14,9 @@ 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/leave_balance/sumbit_absence_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.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';
@ -59,11 +63,11 @@ class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
}
}
void getAbsenceDffStructure(String flexCode) async {
void getAbsenceDffStructure() async {
try {
Utils.showLoading(context);
getabsenceDffStructureList.clear();
getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(flexCode, "HR_LOA_SS", -999);
getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999);
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -87,6 +91,50 @@ class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
}
}
void validateAbsenceTransaction() async {
try {
Utils.showLoading(context);
Map<String, String?> dffDataMap = {};
for (int i = 1; i <= 20; i++) {
dffDataMap["P_ATTRIBUTE$i"] = null;
for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) {
if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) {
if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") {
dffDataMap["P_ATTRIBUTE$i"] = Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!);
} else {
dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME;
}
break;
}
}
}
await LeaveBalanceApiClient().validateAbsenceTransaction(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", selectedAbsenceType!.aBSENCEATTENDANCETYPEID!,
selectedReplacementEmployee!.userName!, DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap,
comments: comment);
SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction(
selectedAbsenceType!.dESCFLEXCONTEXTCODE!,
"HR_LOA_SS",
selectedAbsenceType!.aBSENCEATTENDANCETYPEID!,
selectedReplacementEmployee!.userName!,
DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"),
DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"),
-999,
dffDataMap,
comments: comment);
Utils.hideLoading(context);
await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance"));
Utils.showLoading(context);
await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!);
Utils.hideLoading(context);
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
@ -121,7 +169,7 @@ class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
}
selectedAbsenceType = absenceList[popupIndex];
setState(() {});
getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!);
getAbsenceDffStructure();
},
),
12.height,
@ -206,13 +254,22 @@ class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
).expanded,
DefaultButton(
LocaleKeys.next.tr(),
(selectedAbsenceType == null || startDateTime == null || endDateTime == null) ? null : () {},
validateFieldData()
? null
: () {
validateAbsenceTransaction();
},
).insideContainer
],
),
);
}
bool validateFieldData() {
List filteredList = getabsenceDffStructureList.where((element) => element.rEQUIREDFLAG == "Y" && (element.eSERVICESDV?.pVALUECOLUMNNAME) == null).toList();
return (selectedAbsenceType == null || startDateTime == null || endDateTime == null || filteredList.isNotEmpty);
}
Widget parseDynamicFormatType(GetAbsenceDffStructureList model, int index) {
if (model.dISPLAYFLAG != "N") {
if (model.vALIDATIONTYPE == "N") {

@ -35,15 +35,15 @@ class _LeaveBalanceState extends State<LeaveBalance> {
}
void getAbsenceTransactions() async {
// try {
try {
Utils.showLoading(context);
absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999);
Utils.hideLoading(context);
setState(() {});
// } catch (ex) {
// Utils.hideLoading(context);
// Utils.handleException(ex, context, null);
// }
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override

@ -4,6 +4,7 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/leave_balance_api_client.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
@ -27,6 +28,7 @@ class RequestSubmitScreenParams {
int transactionId;
String pItemId;
String approvalFlag;
RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId, this.approvalFlag);
}
@ -113,20 +115,24 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
params!.pItemId,
params!.transactionId,
);
} else {
} else if (params!.approvalFlag == 'add_leave_balance') {
await LeaveBalanceApiClient().startAbsenceApprovalProcess(
params!.transactionId,
comments.text,
-999,
);
} else if (params!.approvalFlag == 'eit') {
await MyAttendanceApiClient().startEitApprovalProcess(
LocaleKeys.submit.tr(),
comments.text,
params!.pItemId,
params!.transactionId,
);
}
} else {}
Utils.hideLoading(context);
Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true);
Navigator.of(context).popUntil((route) {
return route.settings.name == AppRoutes.dashboard;
});
Navigator.of(context).popUntil((route) => route.settings.name == AppRoutes.dashboard);
Navigator.pushNamed(context, AppRoutes.workList);
} catch (ex) {
Utils.hideLoading(context);
@ -147,17 +153,16 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
}
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: params!.title,
),
appBar: AppBarWidget(context, title: params!.title),
body: Column(
children: [
ListView(
padding: const EdgeInsets.all(21).copyWith(top: 14),
physics: const BouncingScrollPhysics(),
children: [
attachmentView(LocaleKeys.attachments.tr(),),
attachmentView(
LocaleKeys.attachments.tr(),
),
14.height,
InputWidget(
LocaleKeys.comments.tr(),
@ -207,15 +212,15 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CircularAvatar(url: approver.eMPLOYEEIMAGE, isImageBase64: true, height: 40, width: 40),
CircularAvatar(url: approver.eMPLOYEEIMAGE, isImageBase64: approver.eMPLOYEEIMAGE != null, height: 40, width: 40),
9.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
approver.aPPROVER!.toText16(),
approver.pOSITIONTITLE!.toText12(color: MyColors.lightTextColor),
(approver.aPPROVER ?? "").toText16(),
(approver.pOSITIONTITLE ?? "").toText12(color: MyColors.lightTextColor),
],
),
)

Loading…
Cancel
Save