my attendance working cont-1
parent
9b5147b565
commit
25d020441c
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue