my attendance working cont-1

faiz_marathon_signalR_critical
Sikander Saleem 2 years ago
parent 9b5147b565
commit 25d020441c

@ -204,6 +204,12 @@
"requestDate": "تاريخ الطلب", "requestDate": "تاريخ الطلب",
"analyzedDate": "تاريخ التحليل", "analyzedDate": "تاريخ التحليل",
"urgent": "العاجلة", "urgent": "العاجلة",
"requestDetails": "طلب تفاصيل",
"approvalLevel": "مستوى الموافقة",
"requesterDetails": "تفاصيل مقدم الطلب",
"myAttendance": "حضوري",
"workOnBreak": "العمل على استراحة",
"next": "التالي",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",

@ -204,6 +204,12 @@
"requestDate": "Request Date", "requestDate": "Request Date",
"analyzedDate": "Analyzed Date", "analyzedDate": "Analyzed Date",
"urgent": "Urgent", "urgent": "Urgent",
"requestDetails": "Request Details",
"approvalLevel": "Approval Level",
"requesterDetails": "Requester Details",
"myAttendance": "My Attendance",
"workOnBreak": "Work On Break",
"next": "Next",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",

@ -0,0 +1,41 @@
import 'dart:async';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'api_client.dart';
class MyAttendanceApiClient {
static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal();
MyAttendanceApiClient._internal();
factory MyAttendanceApiClient() => _instance;
Future<List<GetEITTransactionList>?> getEitTransaction(String pFunctionName) async {
String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS";
Map<String, dynamic> postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getEITTransactionList ?? [];
}, url, postParams);
}
Future<List<GetEITDFFStructureList>?> getEitDffStructure(String pFunctionName) async {
String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE";
Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getEITDFFStructureList ?? [];
}, url, postParams);
}
}

@ -17,6 +17,7 @@ import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dar
import 'package:mohem_flutter_app/models/get_quotation_analysis_list_model.dart'; import 'package:mohem_flutter_app/models/get_quotation_analysis_list_model.dart';
import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart'; 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_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
@ -279,4 +280,19 @@ class WorkListApiClient {
return responseData.getItemCreationNtfBodyList; return responseData.getItemCreationNtfBodyList;
}, url, postParams); }, url, postParams);
} }
Future<ITGRequest?> getITGFormDetails(String requestType, int taskId, int itemId, String employeeNumber) async {
String url = "${ApiConsts.cocRest}ITGGetFormDetials";
Map<String, dynamic> postParams = {
"RequestType": requestType,
"TaskID": taskId,
"ItemID": itemId,
"EmployeeNumber": "15153",
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
ItgFormsModel responseData = ItgFormsModel.fromJson(json);
return responseData.itgRequest;
}, url, postParams);
}
} }

@ -1,4 +1,5 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart';
import 'package:mohem_flutter_app/models/member_information_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/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart';
@ -74,5 +75,14 @@ class AppState {
set setWorkList(List<WorkListResponseModel>? _workList) => workList = _workList; set setWorkList(List<WorkListResponseModel>? _workList) => workList = _workList;
int? workListIndex; int? workListIndex;
set setWorkListIndex(int? _workListIndex) => workListIndex = _workListIndex; set setWorkListIndex(int? _workListIndex) => workListIndex = _workListIndex;
List<RequestDetails>? requestAllList;
set setRequestAllList(List<RequestDetails>? _requestAllList) => requestAllList = _requestAllList;
int? itgWorkListIndex;
set setItgWorkListIndex(int? _itgWorkListIndex) => itgWorkListIndex = _itgWorkListIndex;
} }

@ -6,8 +6,12 @@ import 'package:mohem_flutter_app/ui/login/login_screen.dart';
import 'package:mohem_flutter_app/ui/login/new_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/new_password_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/add_work_from_home_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/my_attendance_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/missing_swipe_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
class AppRoutes { class AppRoutes {
@ -26,9 +30,14 @@ class AppRoutes {
//Work List //Work List
static const String workList = "/workList"; static const String workList = "/workList";
static const String missingSwipe = "/missingSwipe"; static const String workListDetail = "/workListDetail";
static const String itgDetail = "/itgDetail";
static const String itemHistory = "/itemHistory"; static const String itemHistory = "/itemHistory";
static const String myAttendance = "/myAttendance";
static const String workFromHome = "/workFromHome";
static const String addWorkFromHome = "/addWorkFromHome";
static final Map<String, WidgetBuilder> routes = { static final Map<String, WidgetBuilder> routes = {
login: (context) => LoginScreen(), login: (context) => LoginScreen(),
verifyLogin: (context) => VerifyLoginScreen(), verifyLogin: (context) => VerifyLoginScreen(),
@ -40,7 +49,12 @@ class AppRoutes {
//Work List //Work List
workList: (context) => WorkListScreen(), workList: (context) => WorkListScreen(),
missingSwipe: (context) => MissingSwipeScreen(), workListDetail: (context) => WorkListDetailScreen(),
itgDetail: (context) => ItgDetailScreen(),
itemHistory: (context) => ItemHistoryScreen(), itemHistory: (context) => ItemHistoryScreen(),
myAttendance: (context) => MyAttendanceScreen(),
workFromHome: (context) => WorkFromHomeScreen(),
addWorkFromHome: (context) => AddWorkFromHomeScreen(),
}; };
} }

@ -220,6 +220,9 @@ class CodegenLoader extends AssetLoader{
"requestDate": "تاريخ الطلب", "requestDate": "تاريخ الطلب",
"analyzedDate": "تاريخ التحليل", "analyzedDate": "تاريخ التحليل",
"urgent": "العاجلة", "urgent": "العاجلة",
"requestDetails": "طلب تفاصيل",
"approvalLevel": "مستوى الموافقة",
"requesterDetails": "تفاصيل مقدم الطلب",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",
@ -459,6 +462,9 @@ static const Map<String,dynamic> en_US = {
"requestDate": "Request Date", "requestDate": "Request Date",
"analyzedDate": "Analyzed Date", "analyzedDate": "Analyzed Date",
"urgent": "Urgent", "urgent": "Urgent",
"requestDetails": "Request Details",
"approvalLevel": "Approval Level",
"requesterDetails": "Requester Details",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",

@ -205,6 +205,9 @@ abstract class LocaleKeys {
static const requestDate = 'requestDate'; static const requestDate = 'requestDate';
static const analyzedDate = 'analyzedDate'; static const analyzedDate = 'analyzedDate';
static const urgent = 'urgent'; static const urgent = 'urgent';
static const requestDetails = 'requestDetails';
static const approvalLevel = 'approvalLevel';
static const requesterDetails = 'requesterDetails';
static const profile_reset_password_label = 'profile.reset_password.label'; 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_username = 'profile.reset_password.username';
static const profile_reset_password_password = 'profile.reset_password.password'; static const profile_reset_password_password = 'profile.reset_password.password';
@ -215,5 +218,8 @@ abstract class LocaleKeys {
static const gender_with_arg = 'gender.with_arg'; static const gender_with_arg = 'gender.with_arg';
static const gender = 'gender'; static const gender = 'gender';
static const reset_locale = 'reset_locale'; static const reset_locale = 'reset_locale';
static const myAttendance = 'myAttendance';
static const workOnBreak = 'workOnBreak';
static const next = 'next';
} }

@ -4,6 +4,9 @@
import 'dart:convert'; import 'dart:convert';
import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/request_type_model.dart';
ItgFormsModel itgFormsModelFromMap(String str) => ItgFormsModel.fromJson(json.decode(str)); ItgFormsModel itgFormsModelFromMap(String str) => ItgFormsModel.fromJson(json.decode(str));
String itgFormsModelToMap(ItgFormsModel data) => json.encode(data.toMap()); String itgFormsModelToMap(ItgFormsModel data) => json.encode(data.toMap());
@ -80,7 +83,7 @@ class ItgFormsModel {
String? successMsg; String? successMsg;
dynamic successMsgN; dynamic successMsgN;
dynamic vidaUpdatedResponse; dynamic vidaUpdatedResponse;
dynamic itgRequest; ITGRequest? itgRequest;
dynamic itgFormAttachmentsList; dynamic itgFormAttachmentsList;
String? message; String? message;
dynamic mohemmItgDepartmentSectionsList; dynamic mohemmItgDepartmentSectionsList;
@ -124,7 +127,7 @@ class ItgFormsModel {
successMsg: json["SuccessMsg"] == null ? null : json["SuccessMsg"], successMsg: json["SuccessMsg"] == null ? null : json["SuccessMsg"],
successMsgN: json["SuccessMsgN"], successMsgN: json["SuccessMsgN"],
vidaUpdatedResponse: json["VidaUpdatedResponse"], vidaUpdatedResponse: json["VidaUpdatedResponse"],
itgRequest: json["ITGRequest"], itgRequest: json['ITGRequest'] != null ? ITGRequest.fromJson(json['ITGRequest']) : null,
itgFormAttachmentsList: json["Itg_FormAttachmentsList"], itgFormAttachmentsList: json["Itg_FormAttachmentsList"],
message: json["Message"] == null ? null : json["Message"], message: json["Message"] == null ? null : json["Message"],
mohemmItgDepartmentSectionsList: json["Mohemm_ITG_DepartmentSectionsList"], mohemmItgDepartmentSectionsList: json["Mohemm_ITG_DepartmentSectionsList"],
@ -169,7 +172,7 @@ class ItgFormsModel {
"SuccessMsg": successMsg == null ? null : successMsg, "SuccessMsg": successMsg == null ? null : successMsg,
"SuccessMsgN": successMsgN, "SuccessMsgN": successMsgN,
"VidaUpdatedResponse": vidaUpdatedResponse, "VidaUpdatedResponse": vidaUpdatedResponse,
"ITGRequest": itgRequest, "ITGRequest": itgRequest == null ? null : itgRequest!.toJson(),
"Itg_FormAttachmentsList": itgFormAttachmentsList, "Itg_FormAttachmentsList": itgFormAttachmentsList,
"Message": message == null ? null : message, "Message": message == null ? null : message,
"Mohemm_ITG_DepartmentSectionsList": mohemmItgDepartmentSectionsList, "Mohemm_ITG_DepartmentSectionsList": mohemmItgDepartmentSectionsList,
@ -187,69 +190,3 @@ class ItgFormsModel {
"statuseCode": statuseCode == null ? null : statuseCode, "statuseCode": statuseCode == null ? null : statuseCode,
}; };
} }
class RequestType {
int? itemCount;
List<RequestDetails>? requestDetails;
String? requestTypeCode;
String? requestTypeName;
RequestType({this.itemCount, this.requestDetails, this.requestTypeCode, this.requestTypeName});
RequestType.fromJson(Map<String, dynamic> json) {
itemCount = json['ItemCount'];
if (json['RequestDetails'] != null) {
requestDetails = <RequestDetails>[];
json['RequestDetails'].forEach((v) {
requestDetails!.add(new RequestDetails.fromJson(v));
});
}
requestTypeCode = json['RequestTypeCode'];
requestTypeName = json['RequestTypeName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ItemCount'] = this.itemCount;
if (this.requestDetails != null) {
data['RequestDetails'] = this.requestDetails!.map((v) => v.toJson()).toList();
}
data['RequestTypeCode'] = this.requestTypeCode;
data['RequestTypeName'] = this.requestTypeName;
return data;
}
}
class RequestDetails {
int? iD;
int? itemID;
String? listID;
String? listName;
String? modifiedDate;
String? title;
String? uRL;
RequestDetails({this.iD, this.itemID, this.listID, this.listName, this.modifiedDate, this.title, this.uRL});
RequestDetails.fromJson(Map<String, dynamic> json) {
iD = json['ID'];
itemID = json['ItemID'];
listID = json['ListID'];
listName = json['ListName'];
modifiedDate = json['ModifiedDate'];
title = json['Title'];
uRL = json['URL'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ID'] = this.iD;
data['ItemID'] = this.itemID;
data['ListID'] = this.listID;
data['ListName'] = this.listName;
data['ModifiedDate'] = this.modifiedDate;
data['Title'] = this.title;
data['URL'] = this.uRL;
return data;
}
}

@ -2,6 +2,8 @@ import 'package:mohem_flutter_app/models/get_absence_collection_notification_bod
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_attachement_list_model.dart'; import 'package:mohem_flutter_app/models/get_attachement_list_model.dart';
import 'package:mohem_flutter_app/models/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_basic_det_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart';
@ -108,8 +110,8 @@ class GenericResponseModel {
List<String>? getDeductionsList; List<String>? getDeductionsList;
List<String>? getDefaultValueList; List<String>? getDefaultValueList;
List<String>? getEITCollectionNotificationBodyList; List<String>? getEITCollectionNotificationBodyList;
List<String>? getEITDFFStructureList; List<GetEITDFFStructureList>? getEITDFFStructureList;
List<String>? getEITTransactionList; List<GetEITTransactionList>? getEITTransactionList;
List<String>? getEarningsList; List<String>? getEarningsList;
List<String>? getEmployeeAddressList; List<String>? getEmployeeAddressList;
List<String>? getEmployeeBasicDetailsList; List<String>? getEmployeeBasicDetailsList;
@ -641,8 +643,18 @@ class GenericResponseModel {
getDeductionsList = json['GetDeductionsList']; getDeductionsList = json['GetDeductionsList'];
getDefaultValueList = json['GetDefaultValueList']; getDefaultValueList = json['GetDefaultValueList'];
getEITCollectionNotificationBodyList = json['GetEITCollectionNotificationBodyList']; getEITCollectionNotificationBodyList = json['GetEITCollectionNotificationBodyList'];
getEITDFFStructureList = json['GetEITDFFStructureList']; if (json['GetEITDFFStructureList'] != null) {
getEITTransactionList = json['GetEITTransactionList']; getEITDFFStructureList = <GetEITDFFStructureList>[];
json['GetEITDFFStructureList'].forEach((v) {
getEITDFFStructureList!.add(new GetEITDFFStructureList.fromJson(v));
});
}
if (json['GetEITTransactionList'] != null) {
getEITTransactionList = <GetEITTransactionList>[];
json['GetEITTransactionList'].forEach((v) {
getEITTransactionList!.add(new GetEITTransactionList.fromJson(v));
});
}
getEarningsList = json['GetEarningsList']; getEarningsList = json['GetEarningsList'];
getEmployeeAddressList = json['GetEmployeeAddressList']; getEmployeeAddressList = json['GetEmployeeAddressList'];
getEmployeeBasicDetailsList = json['GetEmployeeBasicDetailsList']; getEmployeeBasicDetailsList = json['GetEmployeeBasicDetailsList'];
@ -1006,8 +1018,12 @@ class GenericResponseModel {
data['GetDeductionsList'] = this.getDeductionsList; data['GetDeductionsList'] = this.getDeductionsList;
data['GetDefaultValueList'] = this.getDefaultValueList; data['GetDefaultValueList'] = this.getDefaultValueList;
data['GetEITCollectionNotificationBodyList'] = this.getEITCollectionNotificationBodyList; data['GetEITCollectionNotificationBodyList'] = this.getEITCollectionNotificationBodyList;
data['GetEITDFFStructureList'] = this.getEITDFFStructureList; if (this.getEITDFFStructureList != null) {
data['GetEITTransactionList'] = this.getEITTransactionList; data['GetEITDFFStructureList'] = this.getEITDFFStructureList!.map((v) => v.toJson()).toList();
}
if (this.getEITTransactionList != null) {
data['GetEITTransactionList'] = this.getEITTransactionList!.map((v) => v.toJson()).toList();
}
data['GetEarningsList'] = this.getEarningsList; data['GetEarningsList'] = this.getEarningsList;
data['GetEmployeeAddressList'] = this.getEmployeeAddressList; data['GetEmployeeAddressList'] = this.getEmployeeAddressList;
data['GetEmployeeBasicDetailsList'] = this.getEmployeeBasicDetailsList; data['GetEmployeeBasicDetailsList'] = this.getEmployeeBasicDetailsList;

@ -0,0 +1,235 @@
class GetEITDFFStructureList {
String? aLPHANUMERICALLOWEDFLAG;
String? aPPLICATIONCOLUMNNAME;
String? cHILDSEGMENTSDV;
List<String>? cHILDSEGMENTSDVSplited;
String? cHILDSEGMENTSVS;
String? cHILDSEGMENTSVSSplited;
String? dEFAULTTYPE;
String? dEFAULTVALUE;
String? dESCFLEXCONTEXTCODE;
String? dESCFLEXCONTEXTNAME;
String? dESCFLEXNAME;
String? dISPLAYFLAG;
String? eNABLEDFLAG;
ESERVICESDV? eSERVICESDV;
List<String>? 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>? pARENTSEGMENTSDVSplited;
String? pARENTSEGMENTSVS;
List<String>? pARENTSEGMENTSVSSplitedVS;
String? rEADONLY;
String? rEQUIREDFLAG;
String? sEGMENTNAME;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? uPPERCASEONLYFLAG;
String? uSEDFLAG;
String? vALIDATIONTYPE;
String? vALIDATIONTYPEDSP;
GetEITDFFStructureList(
{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});
GetEITDFFStructureList.fromJson(Map<String, dynamic> json) {
aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG'];
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
cHILDSEGMENTSDV = json['CHILD_SEGMENTS_DV'];
cHILDSEGMENTSDVSplited = json['CHILD_SEGMENTS_DV_Splited'] == null ? <String>[] : json['CHILD_SEGMENTS_DV_Splited'].cast<String>();
cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS'];
cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited'];
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 = <String>[];
json['E_SERVICES_VS'].forEach((v) {
eSERVICESVS!.add(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 = <PARENTSEGMENTSDVSplited>[];
json['PARENT_SEGMENTS_DV_Splited'].forEach((v) {
pARENTSEGMENTSDVSplited!.add(new PARENTSEGMENTSDVSplited.fromJson(v));
});
}
pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS'];
if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) {
pARENTSEGMENTSVSSplitedVS = <String>[];
json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) {
pARENTSEGMENTSVSSplitedVS!.add(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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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!.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!.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;
}
}
class ESERVICESDV {
String? pIDCOLUMNNAME;
String? pRETURNMSG;
String? pRETURNSTATUS;
String? pVALUECOLUMNNAME;
ESERVICESDV({this.pIDCOLUMNNAME, this.pRETURNMSG, this.pRETURNSTATUS, this.pVALUECOLUMNNAME});
ESERVICESDV.fromJson(Map<String, dynamic> json) {
pIDCOLUMNNAME = json['P_ID_COLUMN_NAME'];
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
pVALUECOLUMNNAME = json['P_VALUE_COLUMN_NAME'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['P_ID_COLUMN_NAME'] = this.pIDCOLUMNNAME;
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
data['P_VALUE_COLUMN_NAME'] = this.pVALUECOLUMNNAME;
return data;
}
}
class PARENTSEGMENTSDVSplited {
String? isRequired;
String? name;
PARENTSEGMENTSDVSplited({this.isRequired, this.name});
PARENTSEGMENTSDVSplited.fromJson(Map<String, dynamic> json) {
isRequired = json['IsRequired'];
name = json['Name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['IsRequired'] = this.isRequired;
data['Name'] = this.name;
return data;
}
}

@ -0,0 +1,104 @@
class GetEITTransactionList {
List<CollectionTransaction>? collectionTransaction;
GetEITTransactionList({this.collectionTransaction});
GetEITTransactionList.fromJson(Map<String, dynamic> json) {
if (json['Collection_Transaction'] != null) {
collectionTransaction = <CollectionTransaction>[];
json['Collection_Transaction'].forEach((v) {
collectionTransaction!.add(new CollectionTransaction.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.collectionTransaction != null) {
data['Collection_Transaction'] =
this.collectionTransaction!.map((v) => v.toJson()).toList();
}
return data;
}
}
class CollectionTransaction {
String? aPPLICATIONCOLUMNNAME;
String? dATATYPE;
String? dATEVALUE;
String? dESCFLEXCONTEXTCODE;
String? dESCFLEXNAME;
String? dISPLAYFLAG;
int? fROMROWNUM;
int? nOOFROWS;
int? nUMBERVALUE;
int? rOWNUM;
String? sEGMENTNAME;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? sEGMENTVALUEDSP;
int? tOROWNUM;
int? tRANSACTIONNUMBER;
String? vARCHAR2VALUE;
CollectionTransaction(
{this.aPPLICATIONCOLUMNNAME,
this.dATATYPE,
this.dATEVALUE,
this.dESCFLEXCONTEXTCODE,
this.dESCFLEXNAME,
this.dISPLAYFLAG,
this.fROMROWNUM,
this.nOOFROWS,
this.nUMBERVALUE,
this.rOWNUM,
this.sEGMENTNAME,
this.sEGMENTPROMPT,
this.sEGMENTSEQNUM,
this.sEGMENTVALUEDSP,
this.tOROWNUM,
this.tRANSACTIONNUMBER,
this.vARCHAR2VALUE});
CollectionTransaction.fromJson(Map<String, dynamic> json) {
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
dATATYPE = json['DATATYPE'];
dATEVALUE = json['DATE_VALUE'];
dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE'];
dESCFLEXNAME = json['DESC_FLEX_NAME'];
dISPLAYFLAG = json['DISPLAY_FLAG'];
fROMROWNUM = json['FROM_ROW_NUM'];
nOOFROWS = json['NO_OF_ROWS'];
nUMBERVALUE = json['NUMBER_VALUE'];
rOWNUM = json['ROW_NUM'];
sEGMENTNAME = json['SEGMENT_NAME'];
sEGMENTPROMPT = json['SEGMENT_PROMPT'];
sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM'];
sEGMENTVALUEDSP = json['SEGMENT_VALUE_DSP'];
tOROWNUM = json['TO_ROW_NUM'];
tRANSACTIONNUMBER = json['TRANSACTION_NUMBER'];
vARCHAR2VALUE = json['VARCHAR2_VALUE'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['DATATYPE'] = this.dATATYPE;
data['DATE_VALUE'] = this.dATEVALUE;
data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE;
data['DESC_FLEX_NAME'] = this.dESCFLEXNAME;
data['DISPLAY_FLAG'] = this.dISPLAYFLAG;
data['FROM_ROW_NUM'] = this.fROMROWNUM;
data['NO_OF_ROWS'] = this.nOOFROWS;
data['NUMBER_VALUE'] = this.nUMBERVALUE;
data['ROW_NUM'] = this.rOWNUM;
data['SEGMENT_NAME'] = this.sEGMENTNAME;
data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT;
data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM;
data['SEGMENT_VALUE_DSP'] = this.sEGMENTVALUEDSP;
data['TO_ROW_NUM'] = this.tOROWNUM;
data['TRANSACTION_NUMBER'] = this.tRANSACTIONNUMBER;
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data;
}
}

@ -0,0 +1,21 @@
class AllowedActions {
String? action;
String? details;
bool? isAvailable;
AllowedActions({this.action, this.details, this.isAvailable});
AllowedActions.fromJson(Map<String, dynamic> json) {
action = json['Action'];
details = json['Details'];
isAvailable = json['IsAvailable'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Action'] = this.action;
data['Details'] = this.details;
data['IsAvailable'] = this.isAvailable;
return data;
}
}

@ -0,0 +1,27 @@
import 'package:mohem_flutter_app/models/itg_forms_models/fields_model.dart';
class FieldGoups {
List<Fields>? fields;
String? title;
FieldGoups({this.fields, this.title});
FieldGoups.fromJson(Map<String, dynamic> json) {
if (json['Fields'] != null) {
fields = <Fields>[];
json['Fields'].forEach((v) {
fields!.add(new Fields.fromJson(v));
});
}
title = json['Title'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.fields != null) {
data['Fields'] = this.fields!.map((v) => v.toJson()).toList();
}
data['Title'] = this.title;
return data;
}
}

@ -0,0 +1,27 @@
class Fields {
List<String>? multipleValue;
String? tableValue;
String? title;
String? type;
String? value;
Fields({this.multipleValue, this.tableValue, this.title, this.type, this.value});
Fields.fromJson(Map<String, dynamic> json) {
multipleValue = json['MultipleValue'] != null ? json['MultipleValue'].cast<String>() : null;
tableValue = json['TableValue'];
title = json['Title'];
type = json['Type'];
value = json['Value'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['MultipleValue'] = this.multipleValue;
data['TableValue'] = this.tableValue;
data['Title'] = this.title;
data['Type'] = this.type;
data['Value'] = this.value;
return data;
}
}

@ -0,0 +1,52 @@
import 'package:mohem_flutter_app/models/itg_forms_models/allowed_actions_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/field_goups_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/wf_history_model.dart';
class ITGRequest {
List<AllowedActions>? allowedActions;
Null? attachments;
List<FieldGoups>? fieldGoups;
Null? grantFields;
List<WFHistory>? wFHistory;
ITGRequest({this.allowedActions, this.attachments, this.fieldGoups, this.grantFields, this.wFHistory});
ITGRequest.fromJson(Map<String, dynamic> json) {
if (json['AllowedActions'] != null) {
allowedActions = <AllowedActions>[];
json['AllowedActions'].forEach((v) {
allowedActions!.add(new AllowedActions.fromJson(v));
});
}
attachments = json['Attachments'];
if (json['FieldGoups'] != null) {
fieldGoups = <FieldGoups>[];
json['FieldGoups'].forEach((v) {
fieldGoups!.add(new FieldGoups.fromJson(v));
});
}
grantFields = json['GrantFields'];
if (json['WFHistory'] != null) {
wFHistory = <WFHistory>[];
json['WFHistory'].forEach((v) {
wFHistory!.add(new WFHistory.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.allowedActions != null) {
data['AllowedActions'] = this.allowedActions!.map((v) => v.toJson()).toList();
}
data['Attachments'] = this.attachments;
if (this.fieldGoups != null) {
data['FieldGoups'] = this.fieldGoups!.map((v) => v.toJson()).toList();
}
data['GrantFields'] = this.grantFields;
if (this.wFHistory != null) {
data['WFHistory'] = this.wFHistory!.map((v) => v.toJson()).toList();
}
return data;
}
}

@ -0,0 +1,34 @@
class RequestDetails {
int? iD;
int? itemID;
String? listID;
String? listName;
String? modifiedDate;
String? title;
String? uRL;
String? requestType;
RequestDetails({this.iD, this.itemID, this.listID, this.listName, this.modifiedDate, this.title, this.uRL,this.requestType});
RequestDetails.fromJson(Map<String, dynamic> json) {
iD = json['ID'];
itemID = json['ItemID'];
listID = json['ListID'];
listName = json['ListName'];
modifiedDate = json['ModifiedDate'];
title = json['Title'];
uRL = json['URL'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ID'] = this.iD;
data['ItemID'] = this.itemID;
data['ListID'] = this.listID;
data['ListName'] = this.listName;
data['ModifiedDate'] = this.modifiedDate;
data['Title'] = this.title;
data['URL'] = this.uRL;
return data;
}
}

@ -0,0 +1,33 @@
import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart';
class RequestType {
int? itemCount;
List<RequestDetails>? requestDetails;
String? requestTypeCode;
String? requestTypeName;
RequestType({this.itemCount, this.requestDetails, this.requestTypeCode, this.requestTypeName});
RequestType.fromJson(Map<String, dynamic> json) {
itemCount = json['ItemCount'];
if (json['RequestDetails'] != null) {
requestDetails = <RequestDetails>[];
json['RequestDetails'].forEach((v) {
requestDetails!.add(new RequestDetails.fromJson(v));
});
}
requestTypeCode = json['RequestTypeCode'];
requestTypeName = json['RequestTypeName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ItemCount'] = this.itemCount;
if (this.requestDetails != null) {
data['RequestDetails'] = this.requestDetails!.map((v) => v.toJson()).toList();
}
data['RequestTypeCode'] = this.requestTypeCode;
data['RequestTypeName'] = this.requestTypeName;
return data;
}
}

@ -0,0 +1,40 @@
class WFHistory {
String? action;
String? approvalLevel;
String? date;
String? email;
String? employeeID;
String? name;
String? notes;
WFHistory(
{this.action,
this.approvalLevel,
this.date,
this.email,
this.employeeID,
this.name,
this.notes});
WFHistory.fromJson(Map<String, dynamic> json) {
action = json['Action'];
approvalLevel = json['ApprovalLevel'];
date = json['Date'];
email = json['Email'];
employeeID = json['EmployeeID'];
name = json['Name'];
notes = json['Notes'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Action'] = this.action;
data['ApprovalLevel'] = this.approvalLevel;
data['Date'] = this.date;
data['Email'] = this.email;
data['EmployeeID'] = this.employeeID;
data['Name'] = this.name;
data['Notes'] = this.notes;
return data;
}
}

@ -101,223 +101,214 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
Expanded( Expanded(
child: Column( child: SingleChildScrollView(
// padding: EdgeInsets.zero, child: Column(
// physics: NeverScrollableScrollPhysics(), children: [
children: [ Column(
Expanded( crossAxisAlignment: CrossAxisAlignment.start,
child: SingleChildScrollView( children: [
child: Column( LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
children: [ "Mahmoud Shrouf".toText24(isBold: true),
Column( 16.height,
crossAxisAlignment: CrossAxisAlignment.start, Row(
children: [ children: [
LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), Expanded(
"Mahmoud Shrouf".toText24(isBold: true), child: AspectRatio(
16.height, aspectRatio: 159 / 159,
Row( child: Consumer<DashboardProviderModel>(
children: [ builder: (context, model, child) {
Expanded( return (model.isAttendanceTrackingLoading
child: AspectRatio( ? GetAttendanceTrackingShimmer()
aspectRatio: 159 / 159, : Container(
child: Consumer<DashboardProviderModel>( decoration: BoxDecoration(
builder: (context, model, child) { borderRadius: BorderRadius.circular(15),
return (model.isAttendanceTrackingLoading gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
? GetAttendanceTrackingShimmer() MyColors.gradiantEndColor,
: Container( MyColors.gradiantStartColor,
decoration: BoxDecoration( ]),
borderRadius: BorderRadius.circular(15), ),
gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ child: Stack(
MyColors.gradiantEndColor, alignment: Alignment.center,
MyColors.gradiantStartColor, children: [
]), if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"),
), Column(
child: Stack( crossAxisAlignment: CrossAxisAlignment.start,
alignment: Alignment.center, children: [
children: [ Expanded(
if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"), child: Column(
Column( mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true),
child: Column( if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white),
if (model.isTimeRemainingInSeconds != 0)
Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true), 9.height,
if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white), CountdownTimer(
if (model.isTimeRemainingInSeconds != 0) endTime: model.endTime,
Column( onEnd: null,
mainAxisSize: MainAxisSize.min, endWidget: "00:00:00".toText14(color: Colors.white, isBold: true),
crossAxisAlignment: CrossAxisAlignment.start, textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold),
children: [ ),
9.height, LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white),
CountdownTimer( 9.height,
endTime: model.endTime, ClipRRect(
onEnd: null, borderRadius: BorderRadius.all(
endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), Radius.circular(20),
textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold),
),
LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white),
9.height,
ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(20),
),
child: LinearProgressIndicator(
value: model.progress,
minHeight: 8,
valueColor: const AlwaysStoppedAnimation<Color>(Colors.white),
backgroundColor: const Color(0xff196D73),
),
),
],
), ),
], child: LinearProgressIndicator(
).paddingOnly(top: 12, right: 15, left: 12), value: model.progress,
), minHeight: 8,
Row( valueColor: const AlwaysStoppedAnimation<Color>(Colors.white),
children: [ backgroundColor: const Color(0xff196D73),
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.checkIn.tr().toText12(color: Colors.white),
(model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
.toString()
.toText14(color: Colors.white, isBold: true),
4.height,
],
).paddingOnly(left: 12),
),
Container(
width: 45,
height: 45,
padding: const EdgeInsets.only(left: 14, right: 14),
decoration: const BoxDecoration(
color: Color(0xff259EA4),
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(15),
), ),
), ),
child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"), ],
), ),
],
).paddingOnly(top: 12, right: 15, left: 12),
),
Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.checkIn.tr().toText12(color: Colors.white),
(model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
.toString()
.toText14(color: Colors.white, isBold: true),
4.height,
], ],
).paddingOnly(left: 12),
),
Container(
width: 45,
height: 45,
padding: const EdgeInsets.only(left: 14, right: 14),
decoration: const BoxDecoration(
color: Color(0xff259EA4),
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(15),
),
), ),
], child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"),
), ),
], ],
), ),
).onPress(() { ],
Navigator.pushNamed(context, AppRoutes.todayAttendance); ),
})) ],
.animatedSwither(); ),
}, ).onPress(() {
), Navigator.pushNamed(context, AppRoutes.todayAttendance);
}))
.animatedSwither();
},
),
),
),
9.width,
Expanded(
child: MenusWidget(),
),
],
),
],
).paddingOnly(left: 21, right: 21, top: 7),
ServicesWidget(),
8.height,
Container(
width: double.infinity,
padding: EdgeInsets.only(top: 31),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.offers.tr().toText12(),
Row(
children: [
LocaleKeys.discounts.tr().toText24(isBold: true),
6.width,
Container(
padding: const EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration(
color: MyColors.yellowColor,
borderRadius: BorderRadius.circular(10),
),
child: LocaleKeys.newString.tr().toText10(isBold: true)),
],
), ),
), ],
9.width, ),
Expanded(
child: MenusWidget(),
),
],
), ),
20.height, LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true),
], ],
).paddingOnly(left: 21, right: 21, top: 7), ).paddingOnly(left: 21, right: 21),
ServicesWidget(), SizedBox(
8.height, height: 103 + 33,
], child: ListView.separated(
), shrinkWrap: true,
), physics: const BouncingScrollPhysics(),
), padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
Container( scrollDirection: Axis.horizontal,
width: double.infinity, itemBuilder: (cxt, index) {
padding: EdgeInsets.only(top: 31), return SizedBox(
decoration: BoxDecoration( width: 73,
color: Colors.white, child: Column(
borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)), crossAxisAlignment: CrossAxisAlignment.center,
border: Border.all(color: MyColors.lightGreyEDColor, width: 1), children: [
), Container(
child: Column( width: 73,
mainAxisSize: MainAxisSize.min, height: 73,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.offers.tr().toText12(),
Row(
children: [
LocaleKeys.discounts.tr().toText24(isBold: true),
6.width,
Container(
padding: const EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: MyColors.yellowColor, borderRadius: const BorderRadius.all(
borderRadius: BorderRadius.circular(10), Radius.circular(100),
),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
), ),
child: LocaleKeys.newString.tr().toText10(isBold: true)), child: ClipRRect(
], borderRadius: const BorderRadius.all(
), Radius.circular(50),
], ),
), child: Image.network(
), "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true), fit: BoxFit.cover,
], ),
).paddingOnly(left: 21, right: 21),
SizedBox(
height: 103 + 33,
child: ListView.separated(
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
scrollDirection: Axis.horizontal,
itemBuilder: (cxt, index) {
return SizedBox(
width: 73,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 73,
height: 73,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(100),
), ),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
), ),
child: ClipRRect( 4.height,
borderRadius: const BorderRadius.all( Expanded(
Radius.circular(50), child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
),
child: Image.network(
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
fit: BoxFit.cover,
),
), ),
), ],
4.height, ),
Expanded( );
child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2), },
), separatorBuilder: (cxt, index) => 8.width,
], itemCount: 6),
), ),
); ],
}, ),
separatorBuilder: (cxt, index) => 8.width, )
itemCount: 6), ],
), ),
],
),
)
],
), ),
) )
], ],

@ -1,10 +1,13 @@
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.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/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_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/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.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/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -30,83 +33,88 @@ class ServicesWidget extends StatelessWidget {
? whileLoading() ? whileLoading()
: ListView.separated( : ListView.separated(
itemBuilder: (context, parentIndex) { itemBuilder: (context, parentIndex) {
return Column( return Container(
children: [ child: Column(
Row( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded( Row(
child: Column( crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start, children: [
mainAxisSize: MainAxisSize.min, data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().expanded,
children: [ LocaleKeys.viewAllServices.tr().toText12(isUnderLine: true),
firstWord(data.homeMenus![parentIndex].menuEntry.prompt!).toText12(), ],
lastWord(data.homeMenus![parentIndex].menuEntry.prompt!).toText24(isBold: true), ).paddingOnly(left: 21, right: 21),
], SizedBox(
), height: 105 + 26,
), child: ListView.separated(
LocaleKeys.viewAllServices.tr().toText12(isUnderLine: true), shrinkWrap: true,
], physics: const BouncingScrollPhysics(),
).paddingOnly(left: 21, right: 21), padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13),
SizedBox( scrollDirection: Axis.horizontal,
height: 105 + 26, itemBuilder: (cxt, index) {
child: ListView.separated( return AspectRatio(
shrinkWrap: true, aspectRatio: 105 / 105,
physics: const BouncingScrollPhysics(), child: data.isServicesMenusLoading
padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13), ? ServicesMenuShimmer()
scrollDirection: Axis.horizontal, : Container(
itemBuilder: (cxt, index) { decoration: BoxDecoration(
return AspectRatio( color: Colors.white,
aspectRatio: 105 / 105, borderRadius: BorderRadius.circular(15),
child: data.isServicesMenusLoading boxShadow: [
? ServicesMenuShimmer() BoxShadow(
: Container( color: const Color(0xff000000).withOpacity(.05),
decoration: BoxDecoration( blurRadius: 26,
color: Colors.white, offset: const Offset(0, -3),
borderRadius: BorderRadius.circular(15), ),
boxShadow: [ ],
BoxShadow( ),
color: const Color(0xff000000).withOpacity(.05), child: Column(
blurRadius: 26, mainAxisAlignment: MainAxisAlignment.spaceBetween,
offset: const Offset(0, -3), crossAxisAlignment: CrossAxisAlignment.start,
), children: [
], SvgPicture.asset(iconT[index]),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true),
),
SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)
],
)
],
).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
), ),
child: Column( ).onPress(() {
mainAxisAlignment: MainAxisAlignment.spaceBetween, handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
crossAxisAlignment: CrossAxisAlignment.start, });
children: [ },
SvgPicture.asset(iconT[index]), separatorBuilder: (cxt, index) => 9.width,
Row( itemCount: data.homeMenus![parentIndex].menuEntiesList.length),
crossAxisAlignment: CrossAxisAlignment.end, ),
children: [ ],
Expanded( ),
child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true),
),
SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)
],
)
],
).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
),
);
},
separatorBuilder: (cxt, index) => 9.width,
itemCount: data.homeMenus![parentIndex].menuEntiesList.length),
),
],
); );
}, },
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return 12.height; return 12.height;
}, },
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
itemCount: data.homeMenus!.length); itemCount: data.homeMenus!.length);
}, },
); );
} }
void handleOnPress(context, GetMenuEntriesList menuEntry) {
if (menuEntry.menuName == "HMG_OTL_SS") {
Navigator.pushNamed(context, AppRoutes.myAttendance);
} else {
Utils.showToast("In Progress");
}
}
String firstWord(String value) { String firstWord(String value) {
return value.split(" ").length > 1 ? value.split(" ")[0] : ""; return value.split(" ").length > 1 ? value.split(" ")[0] : "";
} }

@ -128,6 +128,8 @@ class _LoginScreenState extends State<LoginScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
username.text = "15153"; username.text = "15153";
password.text = "Abcd@1234"; password.text = "Abcd@1234";
// username.text = "15444";
// password.text = "w123456@";
return Scaffold( return Scaffold(
body: Column( body: Column(
children: [ children: [

@ -224,56 +224,60 @@ class _VerifyLastLoginScreenState extends State<VerifyLastLoginScreen> {
// isMoreOption = true; // isMoreOption = true;
}); });
} else { } else {
Utils.showLoading(context); try {
if (_flag == 2 || _flag == 3) { Utils.showLoading(context);
bool authenticateWithFaceAndTouchID = await loginWithFaceIDAndBiometrics(); if (_flag == 2 || _flag == 3) {
if (authenticateWithFaceAndTouchID) { bool authenticateWithFaceAndTouchID = await loginWithFaceIDAndBiometrics();
Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route<dynamic> route) => false); if (authenticateWithFaceAndTouchID) {
return;
} else {
Utils.hideLoading(context);
return;
}
}
await LoginApiClient().checkMobileAppVersion();
await LoginApiClient().memberLogin(AppState().getUserName!, AppState().password!);
BasicMemberInformationModel? memberInformationModel = await LoginApiClient().mohemmSendActivationCodeByOTPNotificationType(
checkBiometricIsAvailable(BiometricType.fingerprint) ? 1 : 0, AppState().memberLoginList?.pMOBILENUMBER, _flag, AppState().getUserName);
Utils.hideLoading(context);
OtpDialog(
context,
_flag,
int.tryParse(AppState().memberLoginList?.pMOBILENUMBER ?? ""),
(value) async {
Utils.showLoading(context);
try {
GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().getUserName);
GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW(
AppState().memberLoginList?.pEMAILADDRESS ?? "",
genericResponseModel?.pSESSIONID ?? 0,
genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "",
_flag,
AppState().memberLoginList?.pMOBILENUMBER ?? "",
AppState().getUserName!,
mobileLoginInfoListModel!.deviceToken!,
Platform.isAndroid ? "android" : "ios");
if (genericResponseModel?.errorMessage != null) {
Utils.showToast(genericResponseModel?.errorMessage ?? "");
// Navigator.pop(context);
}
Utils.hideLoading(context);
Navigator.pop(context);
Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route<dynamic> route) => false); Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route<dynamic> route) => false);
} catch (ex) { return;
print(ex); } else {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, null); return;
} }
}, }
() => { await LoginApiClient().checkMobileAppVersion();
Navigator.pop(context), await LoginApiClient().memberLogin(AppState().getUserName!, AppState().password!);
}, BasicMemberInformationModel? memberInformationModel = await LoginApiClient().mohemmSendActivationCodeByOTPNotificationType(
).displayDialog(context); checkBiometricIsAvailable(BiometricType.fingerprint) ? 1 : 0, AppState().memberLoginList?.pMOBILENUMBER, _flag, AppState().getUserName);
Utils.hideLoading(context);
OtpDialog(
context,
_flag,
int.tryParse(AppState().memberLoginList?.pMOBILENUMBER ?? ""),
(value) async {
Utils.showLoading(context);
try {
GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().getUserName);
GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW(
AppState().memberLoginList?.pEMAILADDRESS ?? "",
genericResponseModel?.pSESSIONID ?? 0,
genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "",
_flag,
AppState().memberLoginList?.pMOBILENUMBER ?? "",
AppState().getUserName!,
mobileLoginInfoListModel!.deviceToken!,
Platform.isAndroid ? "android" : "ios");
if (genericResponseModel?.errorMessage != null) {
Utils.showToast(genericResponseModel?.errorMessage ?? "");
// Navigator.pop(context);
}
Utils.hideLoading(context);
Navigator.pop(context);
Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route<dynamic> route) => false);
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
},
() => {
Navigator.pop(context),
},
).displayDialog(context);
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
// authenticateUser(_flag, isActive: _loginIndex); // authenticateUser(_flag, isActive: _loginIndex);
} }

@ -0,0 +1,91 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_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/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/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
class AddWorkFromHomeScreen extends StatefulWidget {
AddWorkFromHomeScreen({Key? key}) : super(key: key);
@override
_AddWorkFromHomeScreenState createState() {
return _AddWorkFromHomeScreenState();
}
}
class _AddWorkFromHomeScreenState extends State<AddWorkFromHomeScreen> {
List<GetEITDFFStructureList>? getEitDffStructureList;
String? callingFunction;
@override
void initState() {
super.initState();
}
void getTransactionsStructure() async {
try {
Utils.showLoading(context);
getEitDffStructureList = await MyAttendanceApiClient().getEitDffStructure(callingFunction!);
getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG == "Y").toList();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
if (callingFunction == null) {
callingFunction = "HMG_OTL_WFH_EIT_SS"; // ModalRoute.of(context)!.settings.arguments as WorkListResponseModel;
getTransactionsStructure();
}
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.workFromHome.tr(),
),
body: Column(
children: [
(getEitDffStructureList == null
? const SizedBox()
: (getEitDffStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: EdgeInsets.all(21),
itemBuilder: (cxt, int parentIndex) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [],
).objectContainerView(),
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEitDffStructureList!.length)))
.expanded,
// 12.height,
DefaultButton(
LocaleKeys.next.tr(),
(getEitDffStructureList ?? []).isEmpty
? null
: () => {
//Navigator.of(context).pushNamed(LOGIN_TYPE)
},
).insideContainer,
],
),
);
}
}

@ -0,0 +1,63 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/classes/colors.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/widgets/app_bar_widget.dart';
class MyAttendanceScreen extends StatelessWidget {
MyAttendanceScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.myAttendance.tr(),
),
body: SizedBox(
width: double.infinity,
height: double.infinity,
child: ListView(
children: [
itemView(
"assets/images/pdf.svg",
LocaleKeys.missingSwipes.tr(),
).onPress(() {
}),
12.height,
itemView(
"assets/images/pdf.svg",
LocaleKeys.workFromHome.tr(),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.workFromHome);
}),
12.height,
itemView(
"assets/images/pdf.svg",
LocaleKeys.workOnBreak.tr(),
),
],
).paddingAll(21)),
);
}
Widget itemView(String icon, String title) {
return Row(
children: [
(title).toText16().expanded,
12.width,
SvgPicture.asset(
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor,
)
],
).objectContainerView();
}
}

@ -0,0 +1,98 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_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/get_eit_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 WorkFromHomeScreen extends StatefulWidget {
WorkFromHomeScreen({Key? key}) : super(key: key);
@override
_WorkFromHomeScreenState createState() {
return _WorkFromHomeScreenState();
}
}
class _WorkFromHomeScreenState extends State<WorkFromHomeScreen> {
List<GetEITTransactionList>? getEITTransactionList;
String? callingFunction;
@override
void initState() {
super.initState();
}
void getTransactions() async {
try {
Utils.showLoading(context);
getEITTransactionList = await MyAttendanceApiClient().getEitTransaction(callingFunction!);
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
if (callingFunction == null) {
callingFunction = "HMG_OTL_WFH_EIT_SS"; // ModalRoute.of(context)!.settings.arguments as WorkListResponseModel;
getTransactions();
}
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.workFromHome.tr(),
),
body: getEITTransactionList == null
? const SizedBox()
: (getEITTransactionList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: EdgeInsets.all(21),
itemBuilder: (cxt, int parentIndex) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
for (int t = 0; t < (getEITTransactionList![parentIndex].collectionTransaction ?? []).length; t++)
if (getEITTransactionList![parentIndex].collectionTransaction![t].dISPLAYFLAG == "Y")
ItemDetailView(
getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""),
],
).objectContainerView(),
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEITTransactionList!.length)),
floatingActionButton: Container(
height: 50,
width: 50,
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.addWorkFromHome);
}),
);
}
}

@ -0,0 +1,376 @@
import 'dart:convert';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/api/worklist/worklist_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/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/models/get_notification_buttons_list_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/allowed_actions_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart';
import 'package:mohem_flutter_app/ui/work_list/itg_fragments/approval_level_fragment.dart';
import 'package:mohem_flutter_app/ui/work_list/itg_fragments/request_detail_fragment.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dialogs/accept_reject_input_dialog.dart';
class ItgDetailScreen extends StatefulWidget {
ItgDetailScreen({Key? key}) : super(key: key);
@override
_ItgDetailScreenState createState() {
return _ItgDetailScreenState();
}
}
class _ItgDetailScreenState extends State<ItgDetailScreen> {
int tabIndex = 0;
PageController controller = PageController();
bool showFabOptions = false;
bool isCloseAvailable = false;
bool isApproveAvailable = false;
bool isRejectAvailable = false;
List<AllowedActions> allowedActionList = [];
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
RequestDetails? requestDetails;
ITGRequest? itgRequest;
void getItgData() async {
try {
Utils.showLoading(context);
itgRequest = await WorkListApiClient().getITGFormDetails(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, "");
allowedActionList = itgRequest?.allowedActions ?? [];
if (allowedActionList.isNotEmpty) {
isCloseAvailable = allowedActionList.any((element) => element.action == "CLOSE");
isApproveAvailable = itgRequest!.allowedActions!.any((element) => element.action == "Approve");
// isAnswerAvailable = itgRequest!.allowedActions!.any((element) => element.action == "Answer");
isRejectAvailable = itgRequest!.allowedActions!.any((element) => element.action == "Reject");
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getDataFromState() {
if (requestDetails == null) {
requestDetails = AppState().requestAllList![AppState().itgWorkListIndex!]; // ModalRoute.of(context)!.settings.arguments as WorkListResponseModel;
getItgData();
}
}
@override
Widget build(BuildContext context) {
getDataFromState();
return Scaffold(
appBar: AppBarWidget(context, title: LocaleKeys.details.tr()),
backgroundColor: Colors.white,
body: Stack(
children: [
Column(
children: [
Container(
padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16),
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(25),
bottomRight: Radius.circular(25),
),
gradient: LinearGradient(
transform: GradientRotation(.83),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
),
child: Row(
children: [
myTab(LocaleKeys.requestDetails.tr(), 0),
myTab(LocaleKeys.approvalLevel.tr(), 1),
myTab(LocaleKeys.requesterDetails.tr(), 2),
],
),
),
PageView(
controller: controller,
onPageChanged: (pageIndex) {
setState(() {
tabIndex = pageIndex;
});
},
children: [
RequestDetailFragment(fields: itgRequest?.fieldGoups?[1].fields ?? []),
ApprovalLevelfragment(
wFHistory: itgRequest?.wFHistory ?? [],
),
RequestDetailFragment(fields: itgRequest?.fieldGoups?[0].fields ?? []),
],
).expanded,
if (isApproveAvailable || isRejectAvailable || isCloseAvailable)
Container(
padding: const EdgeInsets.only(top: 14, bottom: 14, left: 21, right: 21),
decoration: const BoxDecoration(
color: Colors.white,
border: Border(
top: BorderSide(
color: MyColors.lightGreyEFColor,
width: 1.0,
),
),
),
child: Row(
children: [
if (isRejectAvailable)
DefaultButton(
LocaleKeys.reject.tr(),
() => performAction("REJECTED"),
colors: const [
Color(0xffE47A7E),
Color(0xffDE6D71),
],
).expanded,
if (isApproveAvailable && isRejectAvailable) 8.width,
if (isApproveAvailable)
DefaultButton(
LocaleKeys.approve.tr(),
() => performAction("APPROVED"),
colors: const [
Color(0xff28C884),
Color(0xff1BB271),
],
).expanded,
if (isCloseAvailable)
DefaultButton(
LocaleKeys.ok.tr(),
() => performAction("CLOSE"),
colors: const [
Color(0xff32D892),
Color(0xff1AB170),
],
).expanded,
8.width,
Container(
height: 43,
width: 43,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: MyColors.lightGreyE6Color,
),
child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor),
).onPress(() {
setState(() {
showFabOptions = true;
});
})
],
),
)
],
),
IgnorePointer(
ignoring: !showFabOptions,
child: AnimatedOpacity(
opacity: showFabOptions ? 1 : 0,
duration: const Duration(milliseconds: 250),
child: Container(
padding: const EdgeInsets.only(left: 21, right: 21, bottom: 75 - 12),
width: double.infinity,
height: double.infinity,
color: Colors.white.withOpacity(.67),
alignment: Alignment.bottomRight,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
myFab("Skip", "assets/images/skip.svg").onPress(() {
// if (AppState().workList!.length - 1 > AppState().workListIndex!) {
// AppState().setWorkListIndex = AppState().workListIndex! + 1;
// workListData = null;
// showFabOptions = false;
// getDataFromState();
// } else if (AppState().workList!.length - 1 == AppState().workListIndex!) {
// Navigator.pop(context);
// }
}),
12.height,
...viewApiButtonsList(allowedActionList),
],
),
),
).onPress(() {
setState(() {
showFabOptions = false;
});
}),
),
],
),
floatingActionButton: (!isApproveAvailable && !isRejectAvailable && !isCloseAvailable)
? Container(
height: 43,
width: 43,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: MyColors.lightGreyE6Color,
),
child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor),
).onPress(() {
setState(() {
showFabOptions = true;
});
})
: null,
);
}
List<Widget> viewApiButtonsList(List<AllowedActions> allowedActionList) {
List<Widget> fabs = [];
for (int i = 0; i < allowedActionList.length; i++) {
if (allowedActionList[i].action! == "Reject" || allowedActionList[i].action! == "Approve" || allowedActionList[i].action! == "CLOSE") {
continue;
}
fabs.add(myFab(allowedActionList[i].action!, "", isIconAsset: false).paddingOnly(bottom: 12).onPress(() => handleFabAction(allowedActionList[i])));
}
return fabs;
}
void handleFabAction(AllowedActions action) {
switch (action.action) {
case "DELEGATE":
// do something
break;
case "REQUEST_INFO":
// do something else
break;
case "RFC":
// do something else
break;
case "UPDATE_ACTION":
// do something else
break;
}
}
Widget myTab(String title, int index) {
bool isSelected = (index == tabIndex);
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
title.toText12(color: isSelected ? Colors.white : Colors.white.withOpacity(.74), isCenter: true),
4.height,
Container(
height: 8,
width: 8,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: isSelected ? Colors.white : Colors.transparent,
),
).onPress(() {
setState(() {
showFabOptions = true;
});
})
],
).onPress(() {
controller.jumpToPage(index);
}).expanded;
}
Widget myFab(String title, String icon, {bool isIconAsset = true}) {
return Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
title.toText16(),
14.width,
Container(
height: 43,
width: 43,
padding: const EdgeInsets.all(12),
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
),
child: isIconAsset
? SvgPicture.asset(icon)
: Image.memory(
base64Decode(icon),
fit: BoxFit.cover,
),
)
],
);
}
void performAction(String actionMode) {
showDialog(
context: context,
builder: (cxt) => AcceptRejectInputDialog(
message: LocaleKeys.requestedItems.tr(),
// notificationGetRespond: notificationNoteInput,
onTap: (note) {
Map<String, dynamic> payload = {
"P_ACTION_MODE": actionMode,
"P_APPROVER_INDEX": null,
"P_COMMENTS": "",
"P_FORWARD_TO_USER_NAME": "",
// "P_NOTIFICATION_ID": workListData!.nOTIFICATIONID!,
"RespondAttributeList": [
// if (notificationNoteInput != null) {notificationNoteInput!.attributeName: note}
],
};
performNotificationAction(payload);
},
),
);
}
void performNotificationAction(Map<String, dynamic> payload) async {
try {
Utils.showLoading(context);
GenericResponseModel model = await WorkListApiClient().postNotificationActions(payload);
Utils.hideLoading(context);
Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr());
Navigator.pop(context, true);
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
}

@ -0,0 +1,128 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.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/itg_forms_models/wf_history_model.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/request_more_info_sheet.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
class ApprovalLevelfragment extends StatelessWidget {
List<WFHistory> wFHistory;
ApprovalLevelfragment({Key? key, this.wFHistory = const <WFHistory>[]}) : super(key: key);
@override
Widget build(BuildContext context) {
if (wFHistory.isNotEmpty) wFHistory = wFHistory.reversed.toList();
return Container(
width: double.infinity,
height: double.infinity,
child: ListView.separated(
itemCount: wFHistory.length,
padding: const EdgeInsets.all(21),
itemBuilder: (context, index) {
return showItem(context, wFHistory[index]);
},
separatorBuilder: (BuildContext context, int index) {
return 12.height;
},
),
);
}
Widget showItem(BuildContext context, WFHistory history) {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
),
clipBehavior: Clip.antiAlias,
child: Stack(
clipBehavior: Clip.antiAlias,
children: [
Positioned(
left: -20,
top: -10,
child: Transform.rotate(
angle: 15,
child: Container(
width: 50,
height: 30,
color: getStatusColor(history.action!),
),
),
),
Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CircularAvatar(url: null, isImageBase64: false, height: 34, width: 34),
9.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
history.name!.toText16(),
if ((history.notes ?? "").isNotEmpty) history.notes!.toText12(color: MyColors.grey57Color),
4.height,
Row(
children: [
history.action!.toText10(
color: getStatusColor(history.action!),
),
8.width,
if (history.date!.isNotEmpty) history.date!.toText12(color: MyColors.lightTextColor),
],
)
],
),
)
],
).paddingOnly(top: 19, left: 16, right: 16, bottom: 12),
Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor),
Row(
children: [
LocaleKeys.request_info.tr().toText12(color: MyColors.grey67Color).center.paddingOnly(top: 6, bottom: 6).onPress(() {
showMyBottomSheet(context, child: RequestMoreInfoSheet());
}).expanded,
Container(width: 1, height: 30, color: MyColors.lightGreyEFColor),
LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() {
showMyBottomSheet(context, child: DelegateSheet());
}).expanded,
],
),
],
),
],
),
);
}
Color getStatusColor(String code) {
if (code == "SUBMIT") {
return const Color(0xff2E303A);
} else if (code == "REJECTED") {
return const Color(0xffD02127);
} else if (code == "APPROVED" || code == "Requested Information") {
return const Color(0xff1FA269);
} else if (code == "REQUEST_INFO") {
return const Color(0xff2E303A);
} else {
return const Color(0xff2E303A);
}
}
}

@ -0,0 +1,44 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.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/itg_forms_models/fields_model.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
class RequestDetailFragment extends StatelessWidget {
List<Fields> fields;
RequestDetailFragment({Key? key, this.fields = const <Fields>[]}) : super(key: key);
@override
Widget build(BuildContext context) {
List<Widget> uiList = [detailView()];
return Container(
width: double.infinity,
height: double.infinity,
child: fields.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: ListView(
padding: const EdgeInsets.all(21),
children: uiList,
),
);
}
Widget detailView() {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (cxt, index) {
if (fields[index].value == null) {
return ItemDetailView(fields[index].title!, fields[index].multipleValue?.join(", ") ?? "");
}
return ItemDetailView(fields[index].title!, fields[index].value ?? "");
},
separatorBuilder: (cxt, index) => 4.height,
itemCount: fields.length)
.objectContainerView();
}
}

@ -12,6 +12,8 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_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/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/request_type_model.dart';
import 'package:mohem_flutter_app/models/worklist_item_type_model.dart'; import 'package:mohem_flutter_app/models/worklist_item_type_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
@ -84,8 +86,12 @@ class _WorkListScreenState extends State<WorkListScreen> {
itgFormsModel = await WorkListApiClient().getITGTaskCountRequestType(); itgFormsModel = await WorkListApiClient().getITGTaskCountRequestType();
List<RequestDetails> requestAllList = []; List<RequestDetails> requestAllList = [];
for (int i = 0; i < (itgFormsModel?.requestType!.length ?? 0); i++) { for (int i = 0; i < (itgFormsModel?.requestType!.length ?? 0); i++) {
itgFormsModel?.requestType![i].requestDetails?.forEach((element) {
element.requestType = itgFormsModel?.requestType![i].requestTypeCode;
});
requestAllList = requestAllList + (itgFormsModel?.requestType![i].requestDetails ?? []); requestAllList = requestAllList + (itgFormsModel?.requestType![i].requestDetails ?? []);
} }
AppState().setRequestAllList = requestAllList;
itgFormsModel?.requestType!.insert(0, RequestType(requestDetails: requestAllList, requestTypeCode: "all", requestTypeName: "All")); itgFormsModel?.requestType!.insert(0, RequestType(requestDetails: requestAllList, requestTypeCode: "all", requestTypeName: "All"));
if ((itgFormsModel?.requestType?.length ?? 0) > 0) { if ((itgFormsModel?.requestType?.length ?? 0) > 0) {
itgRequestTypeIndex = 0; itgRequestTypeIndex = 0;
@ -190,7 +196,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
child: ListView.separated( child: ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return itgRowItem(workListItemTypes[workListItemIndex], itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails![index]); return itgRowItem(workListItemTypes[workListItemIndex], itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails![index], index);
}, },
separatorBuilder: (context, index) => 12.height, separatorBuilder: (context, index) => 12.height,
itemCount: itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails?.length ?? 0, itemCount: itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails?.length ?? 0,
@ -218,10 +224,29 @@ class _WorkListScreenState extends State<WorkListScreen> {
); );
} }
Widget itgRowItem(WorkListItemTypeModelData data, RequestDetails requestDetails) { Widget itgRowItem(WorkListItemTypeModelData data, RequestDetails requestDetails, int index) {
return InkWell( return InkWell(
onTap: () { onTap: () async {
Navigator.pushNamed(context, AppRoutes.missingSwipe); AppState().setItgWorkListIndex = index;
var shouldReloadData = await Navigator.pushNamed(context, AppRoutes.itgDetail);
// if (shouldReloadData != null) {
// workList!.remove(data);
// AppState().setWorkList = workList;
// if (data.iTEMTYPE == "ITG") {
//
//
// } else {
// providerData.getOpenNotificationsList?.forEach((element) {
// if (element.itemType == data.iTEMTYPE) {
// element.openNtfNumber = element.openNtfNumber! - 1;
// }
// });
// providerData.workListCounter = providerData.workListCounter - 1;
// providerData.notify();
// }
// calculateCounter();
// if (mounted) setState(() {});
// }
}, },
child: Container( child: Container(
width: double.infinity, width: double.infinity,
@ -282,7 +307,7 @@ class _WorkListScreenState extends State<WorkListScreen> {
onTap: () async { onTap: () async {
AppState().setWorkListIndex = index; AppState().setWorkListIndex = index;
var data = workList![index]; var data = workList![index];
var shouldReloadData = await Navigator.pushNamed(context, AppRoutes.missingSwipe, arguments: workData); var shouldReloadData = await Navigator.pushNamed(context, AppRoutes.workListDetail, arguments: workData);
if (shouldReloadData != null) { if (shouldReloadData != null) {
workList!.remove(data); workList!.remove(data);
AppState().setWorkList = workList; AppState().setWorkList = workList;

@ -24,25 +24,25 @@ import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_mod
import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/actions_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/actions_fragment.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/attachments_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/attachments_fragment.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/detail_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/detail_fragment.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/info_fragments.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/info_fragments.dart';
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/request_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/request_fragment.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dialogs/accept_reject_input_dialog.dart'; import 'package:mohem_flutter_app/widgets/dialogs/accept_reject_input_dialog.dart';
class MissingSwipeScreen extends StatefulWidget { class WorkListDetailScreen extends StatefulWidget {
MissingSwipeScreen({Key? key}) : super(key: key); WorkListDetailScreen({Key? key}) : super(key: key);
@override @override
_MissingSwipeScreenState createState() { _WorkListDetailScreenState createState() {
return _MissingSwipeScreenState(); return _WorkListDetailScreenState();
} }
} }
class _MissingSwipeScreenState extends State<MissingSwipeScreen> { class _WorkListDetailScreenState extends State<WorkListDetailScreen> {
int tabIndex = 0; int tabIndex = 0;
PageController controller = PageController(); PageController controller = PageController();
bool showFabOptions = false; bool showFabOptions = false;
Loading…
Cancel
Save