Merge branch 'master' of https://gitlab.com/mirza.shafique/mohem_flutter_app into development_sultan
						commit
						ff4a546e5f
					
				
											
												Binary file not shown.
											
										
									
								| After Width: | Height: | Size: 32 KiB | 
| @ -0,0 +1,113 @@ | ||||
| <?xml version="1.0" encoding="iso-8859-1"?> | ||||
| <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve"> | ||||
| <g> | ||||
| 	<rect x="38" y="23" width="2" height="5"/> | ||||
| 	<rect x="42" y="23" width="2" height="5"/> | ||||
| 	<rect x="38" y="30" width="2" height="2"/> | ||||
| 	<rect x="42" y="30" width="2" height="2"/> | ||||
| 	<rect x="31" y="34" width="2" height="2"/> | ||||
| 	<rect x="26" y="54" width="2" height="2"/> | ||||
| 	<rect x="42" y="34" width="2" height="2"/> | ||||
| 	<rect x="38" y="38" width="2" height="2"/> | ||||
| 	<rect x="42" y="38" width="2" height="2"/> | ||||
| 	<path d="M2,2h3V0H1C0.448,0,0,0.448,0,1v4h2V2z"/> | ||||
| 	<path d="M63,0h-4v2h3v3h2V1C64,0.448,63.552,0,63,0z"/> | ||||
| 	<path d="M2,59H0v4c0,0.552,0.448,1,1,1h4v-2H2V59z"/> | ||||
| 	<path d="M62,62h-3v2h4c0.552,0,1-0.448,1-1v-4h-2V62z"/> | ||||
| 	<path d="M4,5v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H5C4.448,4,4,4.448,4,5z M6,6h10v10H6V6z"/> | ||||
| 	<path d="M13,8H9C8.448,8,8,8.448,8,9v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C14,8.448,13.552,8,13,8z M12,12h-2v-2h2V12z" | ||||
| 		/> | ||||
| 	<path d="M47,18h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H47c-0.552,0-1,0.448-1,1v12C46,17.552,46.448,18,47,18z M48,6h10v10 | ||||
| 		H48V6z"/> | ||||
| 	<path d="M55,8h-4c-0.552,0-1,0.448-1,1v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C56,8.448,55.552,8,55,8z M54,12h-2v-2h2V12z | ||||
| 		"/> | ||||
| 	<path d="M17,46H5c-0.552,0-1,0.448-1,1v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V47C18,46.448,17.552,46,17,46z M16,58H6V48 | ||||
| 		h10V58z"/> | ||||
| 	<path d="M9,56h4c0.552,0,1-0.448,1-1v-4c0-0.552-0.448-1-1-1H9c-0.552,0-1,0.448-1,1v4C8,55.552,8.448,56,9,56z M10,52h2v2h-2V52z" | ||||
| 		/> | ||||
| 	<path d="M44,19h-7V7h-2v13c0,0.552,0.448,1,1,1h8V19z"/> | ||||
| 	<rect x="22" y="12" width="7" height="2"/> | ||||
| 	<rect x="26" y="8" width="7" height="2"/> | ||||
| 	<rect x="4" y="19" width="2" height="9"/> | ||||
| 	<path d="M18,25H8v2h9v4h2v-5C19,25.448,18.552,25,18,25z"/> | ||||
| 	<rect x="9" y="20" width="2" height="2"/> | ||||
| 	<rect x="21" y="18" width="2" height="8"/> | ||||
| 	<rect x="21" y="28" width="9" height="2"/> | ||||
| 	<path d="M61,29h-2v10h-3v2h4c0.552,0,1-0.448,1-1V29z"/> | ||||
| 	<rect x="26" y="18" width="2" height="2"/> | ||||
| 	<rect x="4" y="33" width="2" height="8"/> | ||||
| 	<rect x="4" y="42" width="9" height="2"/> | ||||
| 	<path d="M50,28h2v-4c0-0.552-0.448-1-1-1h-5v2h4V28z"/> | ||||
| 	<rect x="9" y="33" width="2" height="2"/> | ||||
| 	<rect x="20" y="32" width="2" height="8"/> | ||||
| 	<rect x="20" y="42" width="9" height="2"/> | ||||
| 	<rect x="8" y="38" width="9" height="2"/> | ||||
| 	<rect x="21" y="52" width="2" height="4"/> | ||||
| 	<rect x="20" y="48" width="9" height="2"/> | ||||
| 	<path d="M36,44v-5c0-0.552-0.448-1-1-1H25v2h9v4H36z"/> | ||||
| 	<rect x="26" y="32" width="2" height="2"/> | ||||
| 	<rect x="15" y="34" width="2" height="2"/> | ||||
| 	<rect x="59" y="53" width="2" height="7"/> | ||||
| 	<rect x="54" y="58" width="3" height="2"/> | ||||
| 	<rect x="54" y="52" width="2" height="4"/> | ||||
| 	<path d="M61,44c0-0.552-0.448-1-1-1H49v2h10v6h2V44z"/> | ||||
| 	<path d="M48,56v-5c0-0.552-0.448-1-1-1H36v2h10v4H48z"/> | ||||
| 	<rect x="50" y="47" width="7" height="2"/> | ||||
| 	<rect x="20" y="58" width="7" height="2"/> | ||||
| 	<rect x="30" y="51" width="2" height="9"/> | ||||
| 	<rect x="32" y="46" width="4" height="2"/> | ||||
| 	<path d="M47,36h5v-2h-4v-6h-2v7C46,35.552,46.448,36,47,36z"/> | ||||
| 	<rect x="50" y="30" width="5" height="2"/> | ||||
| 	<rect x="54" y="20" width="3" height="2"/> | ||||
| 	<rect x="59" y="20" width="2" height="5"/> | ||||
| 	<rect x="54" y="25" width="2" height="2"/> | ||||
| 	<path d="M39,17h4c0.552,0,1-0.448,1-1V3h-2v12h-3V17z"/> | ||||
| 	<path d="M24,5h15V3H23c-0.552,0-1,0.448-1,1v5h2V5z"/> | ||||
| 	<path d="M25,24h7c0.552,0,1-0.448,1-1v-8h-2v7h-6V24z"/> | ||||
| 	<rect x="34" y="23" width="2" height="4"/> | ||||
| 	<rect x="36" y="54" width="7" height="2"/> | ||||
| 	<rect x="36" y="58" width="9" height="2"/> | ||||
| 	<path d="M50,58h-2v2h3c0.552,0,1-0.448,1-1v-8h-2V58z"/> | ||||
| 	<rect x="16" y="42" width="2" height="2"/> | ||||
| 	<rect x="39" y="42" width="4" height="2"/> | ||||
| 	<rect x="46" y="38" width="2" height="3"/> | ||||
| 	<rect x="45" y="43" width="2" height="2"/> | ||||
| 	<rect x="39" y="46" width="3" height="2"/> | ||||
| 	<rect x="50" y="38" width="2" height="2"/> | ||||
| 	<rect x="54" y="34" width="3" height="2"/> | ||||
| 	<rect x="35" y="34" width="5" height="2"/> | ||||
| 	<rect x="34" y="29" width="2" height="3"/> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 4.3 KiB | 
											
												Binary file not shown.
											
										
									
								| After Width: | Height: | Size: 634 KiB | 
											
												Binary file not shown.
											
										
									
								| After Width: | Height: | Size: 7.3 KiB | 
| Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.4 KiB | 
| @ -0,0 +1,78 @@ | ||||
| import 'package:mohem_flutter_app/api/api_client.dart'; | ||||
| import 'package:mohem_flutter_app/app_state/app_state.dart'; | ||||
| import 'package:mohem_flutter_app/classes/consts.dart'; | ||||
| import 'package:mohem_flutter_app/models/generic_response_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart'; | ||||
| 
 | ||||
| class VacationRuleApiClient { | ||||
|   static final VacationRuleApiClient _instance = VacationRuleApiClient._internal(); | ||||
| 
 | ||||
|   VacationRuleApiClient._internal(); | ||||
| 
 | ||||
|   factory VacationRuleApiClient() => _instance; | ||||
| 
 | ||||
|   Future<List<GetVacationRulesList>> getVacationRules() async { | ||||
|     String url = "${ApiConsts.erpRest}GET_VACATION_RULES"; | ||||
|     Map<String, dynamic> postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.getVacationRulesList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| 
 | ||||
|   Future<List<VrItemTypesList>> getVrItemTypes() async { | ||||
|     String url = "${ApiConsts.erpRest}GET_VR_ITEM_TYPES"; | ||||
|     Map<String, dynamic> postParams = {}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.vrItemTypesList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| 
 | ||||
|   Future<List<GetItemTypeNotificationsList>> getItemTypeNotifications(String pItemType) async { | ||||
|     String url = "${ApiConsts.erpRest}GET_ITEM_TYPE_NOTIFICATIONS"; | ||||
|     Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.getItemTypeNotificationsList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| 
 | ||||
|   Future<List<GetNotificationReassignModeList>> getNotificationReassignMode() async { | ||||
|     String url = "${ApiConsts.erpRest}GET_NOTIFICATION_REASSIGN_MODE"; | ||||
|     Map<String, dynamic> postParams = {}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.getNotificationReassignModeList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| 
 | ||||
|   Future<List<RespondAttributesList>> getRespondAttributes(String pItemType, String pNotificationName) async { | ||||
|     String url = "${ApiConsts.erpRest}GET_RESPOND_ATTRIBUTES"; | ||||
|     Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType, "P_NOTIFICATION_NAME": pNotificationName}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.respondAttributesList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| 
 | ||||
|   Future<List<WFLookUpList>> getWfLookup(String pLookupType) async { | ||||
|     String url = "${ApiConsts.erpRest}GET_WF_LOOKUP"; | ||||
|     Map<String, dynamic> postParams = {"P_LOOKUP_TYPE": pLookupType}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       GenericResponseModel? responseData = GenericResponseModel.fromJson(json); | ||||
|       return responseData.wFLookUpList ?? []; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,36 @@ | ||||
| class GetDeductionsList { | ||||
|   int? aMOUNT; | ||||
|   String? eLEMENTNAME; | ||||
|   int? fROMROWNUM; | ||||
|   int? nOOFROWS; | ||||
|   int? rOWNUM; | ||||
|   int? tOROWNUM; | ||||
| 
 | ||||
|   GetDeductionsList( | ||||
|       {this.aMOUNT, | ||||
|         this.eLEMENTNAME, | ||||
|         this.fROMROWNUM, | ||||
|         this.nOOFROWS, | ||||
|         this.rOWNUM, | ||||
|         this.tOROWNUM}); | ||||
| 
 | ||||
|   GetDeductionsList.fromJson(Map<String, dynamic> json) { | ||||
|     aMOUNT = json['AMOUNT']; | ||||
|     eLEMENTNAME = json['ELEMENT_NAME']; | ||||
|     fROMROWNUM = json['FROM_ROW_NUM']; | ||||
|     nOOFROWS = json['NO_OF_ROWS']; | ||||
|     rOWNUM = json['ROW_NUM']; | ||||
|     tOROWNUM = json['TO_ROW_NUM']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['AMOUNT'] = this.aMOUNT; | ||||
|     data['ELEMENT_NAME'] = this.eLEMENTNAME; | ||||
|     data['FROM_ROW_NUM'] = this.fROMROWNUM; | ||||
|     data['NO_OF_ROWS'] = this.nOOFROWS; | ||||
|     data['ROW_NUM'] = this.rOWNUM; | ||||
|     data['TO_ROW_NUM'] = this.tOROWNUM; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,37 @@ | ||||
| 
 | ||||
| class GetEarningsList { | ||||
|   int? aMOUNT; | ||||
|   String? eLEMENTNAME; | ||||
|   int? fROMROWNUM; | ||||
|   int? nOOFROWS; | ||||
|   int? rOWNUM; | ||||
|   int? tOROWNUM; | ||||
| 
 | ||||
|   GetEarningsList( | ||||
|       {this.aMOUNT, | ||||
|         this.eLEMENTNAME, | ||||
|         this.fROMROWNUM, | ||||
|         this.nOOFROWS, | ||||
|         this.rOWNUM, | ||||
|         this.tOROWNUM}); | ||||
| 
 | ||||
|   GetEarningsList.fromJson(Map<String, dynamic> json) { | ||||
|     aMOUNT = json['AMOUNT']; | ||||
|     eLEMENTNAME = json['ELEMENT_NAME']; | ||||
|     fROMROWNUM = json['FROM_ROW_NUM']; | ||||
|     nOOFROWS = json['NO_OF_ROWS']; | ||||
|     rOWNUM = json['ROW_NUM']; | ||||
|     tOROWNUM = json['TO_ROW_NUM']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['AMOUNT'] = this.aMOUNT; | ||||
|     data['ELEMENT_NAME'] = this.eLEMENTNAME; | ||||
|     data['FROM_ROW_NUM'] = this.fROMROWNUM; | ||||
|     data['NO_OF_ROWS'] = this.nOOFROWS; | ||||
|     data['ROW_NUM'] = this.rOWNUM; | ||||
|     data['TO_ROW_NUM'] = this.tOROWNUM; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,33 @@ | ||||
| 
 | ||||
| class GetPaymentInformationList { | ||||
|   String? aCCOUNTNUMBER; | ||||
|   String? aMOUNT; | ||||
|   String? bANKNAME; | ||||
|   String? bRANCHNAME; | ||||
|   String? pAYMENTMETHODNAME; | ||||
| 
 | ||||
|   GetPaymentInformationList( | ||||
|       {this.aCCOUNTNUMBER, | ||||
|         this.aMOUNT, | ||||
|         this.bANKNAME, | ||||
|         this.bRANCHNAME, | ||||
|         this.pAYMENTMETHODNAME}); | ||||
| 
 | ||||
|   GetPaymentInformationList.fromJson(Map<String, dynamic> json) { | ||||
|     aCCOUNTNUMBER = json['ACCOUNT_NUMBER']; | ||||
|     aMOUNT = json['AMOUNT']; | ||||
|     bANKNAME = json['BANK_NAME']; | ||||
|     bRANCHNAME = json['BRANCH_NAME']; | ||||
|     pAYMENTMETHODNAME = json['PAYMENT_METHOD_NAME']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ACCOUNT_NUMBER'] = this.aCCOUNTNUMBER; | ||||
|     data['AMOUNT'] = this.aMOUNT; | ||||
|     data['BANK_NAME'] = this.bANKNAME; | ||||
|     data['BRANCH_NAME'] = this.bRANCHNAME; | ||||
|     data['PAYMENT_METHOD_NAME'] = this.pAYMENTMETHODNAME; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,38 @@ | ||||
| 
 | ||||
| 
 | ||||
| class GetPayslipList { | ||||
|   int? aCTIONCONTEXTID; | ||||
|   String? pAYMENTDATE; | ||||
|   String? pAYSLIPCHOICE; | ||||
|   String? pERIODENDDATE; | ||||
|   String? pERIODNAME; | ||||
|   String? pERIODSTARTDATE; | ||||
| 
 | ||||
|   GetPayslipList( | ||||
|       {this.aCTIONCONTEXTID, | ||||
|         this.pAYMENTDATE, | ||||
|         this.pAYSLIPCHOICE, | ||||
|         this.pERIODENDDATE, | ||||
|         this.pERIODNAME, | ||||
|         this.pERIODSTARTDATE}); | ||||
| 
 | ||||
|   GetPayslipList.fromJson(Map<String, dynamic> json) { | ||||
|     aCTIONCONTEXTID = json['ACTION_CONTEXT_ID']; | ||||
|     pAYMENTDATE = json['PAYMENT_DATE']; | ||||
|     pAYSLIPCHOICE = json['PAYSLIP_CHOICE']; | ||||
|     pERIODENDDATE = json['PERIOD_END_DATE']; | ||||
|     pERIODNAME = json['PERIOD_NAME']; | ||||
|     pERIODSTARTDATE = json['PERIOD_START_DATE']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ACTION_CONTEXT_ID'] = this.aCTIONCONTEXTID; | ||||
|     data['PAYMENT_DATE'] = this.pAYMENTDATE; | ||||
|     data['PAYSLIP_CHOICE'] = this.pAYSLIPCHOICE; | ||||
|     data['PERIOD_END_DATE'] = this.pERIODENDDATE; | ||||
|     data['PERIOD_NAME'] = this.pERIODNAME; | ||||
|     data['PERIOD_START_DATE'] = this.pERIODSTARTDATE; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,38 @@ | ||||
| 
 | ||||
| 
 | ||||
| class GetSummaryOfPaymentList { | ||||
|   int? tOTALDEDUCTIONSAMOUNT; | ||||
|   int? tOTALDEDUCTIONSPERCENTAGE; | ||||
|   int? tOTALEARNINGSAMOUNT; | ||||
|   int? tOTALEARNINGSPERCENTAGE; | ||||
|   int? tOTALPAYAMOUNT; | ||||
|   int? tOTALPAYPERCENTAGE; | ||||
| 
 | ||||
|   GetSummaryOfPaymentList( | ||||
|       {this.tOTALDEDUCTIONSAMOUNT, | ||||
|         this.tOTALDEDUCTIONSPERCENTAGE, | ||||
|         this.tOTALEARNINGSAMOUNT, | ||||
|         this.tOTALEARNINGSPERCENTAGE, | ||||
|         this.tOTALPAYAMOUNT, | ||||
|         this.tOTALPAYPERCENTAGE}); | ||||
| 
 | ||||
|   GetSummaryOfPaymentList.fromJson(Map<String, dynamic> json) { | ||||
|     tOTALDEDUCTIONSAMOUNT = json['TOTAL_DEDUCTIONS_AMOUNT']; | ||||
|     tOTALDEDUCTIONSPERCENTAGE = json['TOTAL_DEDUCTIONS_PERCENTAGE']; | ||||
|     tOTALEARNINGSAMOUNT = json['TOTAL_EARNINGS_AMOUNT']; | ||||
|     tOTALEARNINGSPERCENTAGE = json['TOTAL_EARNINGS_PERCENTAGE']; | ||||
|     tOTALPAYAMOUNT = json['TOTAL_PAY_AMOUNT']; | ||||
|     tOTALPAYPERCENTAGE = json['TOTAL_PAY_PERCENTAGE']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['TOTAL_DEDUCTIONS_AMOUNT'] = this.tOTALDEDUCTIONSAMOUNT; | ||||
|     data['TOTAL_DEDUCTIONS_PERCENTAGE'] = this.tOTALDEDUCTIONSPERCENTAGE; | ||||
|     data['TOTAL_EARNINGS_AMOUNT'] = this.tOTALEARNINGSAMOUNT; | ||||
|     data['TOTAL_EARNINGS_PERCENTAGE'] = this.tOTALEARNINGSPERCENTAGE; | ||||
|     data['TOTAL_PAY_AMOUNT'] = this.tOTALPAYAMOUNT; | ||||
|     data['TOTAL_PAY_PERCENTAGE'] = this.tOTALPAYPERCENTAGE; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| class GetItemTypeNotificationsList { | ||||
|   String? fYIFLAG; | ||||
|   String? nOTIFICATIONDISPLAYNAME; | ||||
|   String? nOTIFICATIONNAME; | ||||
|   String? nOTIFICATIONSUBJECT; | ||||
| 
 | ||||
|   GetItemTypeNotificationsList( | ||||
|       {this.fYIFLAG, | ||||
|         this.nOTIFICATIONDISPLAYNAME, | ||||
|         this.nOTIFICATIONNAME, | ||||
|         this.nOTIFICATIONSUBJECT}); | ||||
| 
 | ||||
|   GetItemTypeNotificationsList.fromJson(Map<String, dynamic> json) { | ||||
|     fYIFLAG = json['FYI_FLAG']; | ||||
|     nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME']; | ||||
|     nOTIFICATIONNAME = json['NOTIFICATION_NAME']; | ||||
|     nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['FYI_FLAG'] = this.fYIFLAG; | ||||
|     data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME; | ||||
|     data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME; | ||||
|     data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| class GetNotificationReassignModeList { | ||||
|   String? rADIOBUTTONACTION; | ||||
|   String? rADIOBUTTONLABEL; | ||||
|   int? rADIOBUTTONSEQ; | ||||
| 
 | ||||
|   GetNotificationReassignModeList( | ||||
|       {this.rADIOBUTTONACTION, this.rADIOBUTTONLABEL, this.rADIOBUTTONSEQ}); | ||||
| 
 | ||||
|   GetNotificationReassignModeList.fromJson(Map<String, dynamic> json) { | ||||
|     rADIOBUTTONACTION = json['RADIO_BUTTON_ACTION']; | ||||
|     rADIOBUTTONLABEL = json['RADIO_BUTTON_LABEL']; | ||||
|     rADIOBUTTONSEQ = json['RADIO_BUTTON_SEQ']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['RADIO_BUTTON_ACTION'] = this.rADIOBUTTONACTION; | ||||
|     data['RADIO_BUTTON_LABEL'] = this.rADIOBUTTONLABEL; | ||||
|     data['RADIO_BUTTON_SEQ'] = this.rADIOBUTTONSEQ; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,92 @@ | ||||
| class GetVacationRulesList { | ||||
|   String? aCTION; | ||||
|   String? aCTIONDISPLAY; | ||||
|   String? bEGINDATE; | ||||
|   String? eNDDATE; | ||||
|   int? fROMROWNUM; | ||||
|   String? fYIFLAG; | ||||
|   String? iTEMTYPE; | ||||
|   String? iTEMTYPEDISPLAYNAME; | ||||
|   String? mESSAGE; | ||||
|   String? nOTIFICATIONDISPLAYNAME; | ||||
|   String? nOTIFICATIONNAME; | ||||
|   String? nOTIFICATIONSUBJECT; | ||||
|   int? nOOFROWS; | ||||
|   String? rEPLACEMENTUSERNAME; | ||||
|   int? rOWNUM; | ||||
|   int? rULEID; | ||||
|   String? rULENAME; | ||||
|   String? rULESTATUS; | ||||
|   String? rULETIPMESSAGE; | ||||
|   int? tOROWNUM; | ||||
| 
 | ||||
|   GetVacationRulesList( | ||||
|       {this.aCTION, | ||||
|         this.aCTIONDISPLAY, | ||||
|         this.bEGINDATE, | ||||
|         this.eNDDATE, | ||||
|         this.fROMROWNUM, | ||||
|         this.fYIFLAG, | ||||
|         this.iTEMTYPE, | ||||
|         this.iTEMTYPEDISPLAYNAME, | ||||
|         this.mESSAGE, | ||||
|         this.nOTIFICATIONDISPLAYNAME, | ||||
|         this.nOTIFICATIONNAME, | ||||
|         this.nOTIFICATIONSUBJECT, | ||||
|         this.nOOFROWS, | ||||
|         this.rEPLACEMENTUSERNAME, | ||||
|         this.rOWNUM, | ||||
|         this.rULEID, | ||||
|         this.rULENAME, | ||||
|         this.rULESTATUS, | ||||
|         this.rULETIPMESSAGE, | ||||
|         this.tOROWNUM}); | ||||
| 
 | ||||
|   GetVacationRulesList.fromJson(Map<String, dynamic> json) { | ||||
|     aCTION = json['ACTION']; | ||||
|     aCTIONDISPLAY = json['ACTION_DISPLAY']; | ||||
|     bEGINDATE = json['BEGIN_DATE']; | ||||
|     eNDDATE = json['END_DATE']; | ||||
|     fROMROWNUM = json['FROM_ROW_NUM']; | ||||
|     fYIFLAG = json['FYI_FLAG']; | ||||
|     iTEMTYPE = json['ITEM_TYPE']; | ||||
|     iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME']; | ||||
|     mESSAGE = json['MESSAGE']; | ||||
|     nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME']; | ||||
|     nOTIFICATIONNAME = json['NOTIFICATION_NAME']; | ||||
|     nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT']; | ||||
|     nOOFROWS = json['NO_OF_ROWS']; | ||||
|     rEPLACEMENTUSERNAME = json['REPLACEMENT_USER_NAME']; | ||||
|     rOWNUM = json['ROW_NUM']; | ||||
|     rULEID = json['RULE_ID']; | ||||
|     rULENAME = json['RULE_NAME']; | ||||
|     rULESTATUS = json['RULE_STATUS']; | ||||
|     rULETIPMESSAGE = json['RULE_TIP_MESSAGE']; | ||||
|     tOROWNUM = json['TO_ROW_NUM']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ACTION'] = this.aCTION; | ||||
|     data['ACTION_DISPLAY'] = this.aCTIONDISPLAY; | ||||
|     data['BEGIN_DATE'] = this.bEGINDATE; | ||||
|     data['END_DATE'] = this.eNDDATE; | ||||
|     data['FROM_ROW_NUM'] = this.fROMROWNUM; | ||||
|     data['FYI_FLAG'] = this.fYIFLAG; | ||||
|     data['ITEM_TYPE'] = this.iTEMTYPE; | ||||
|     data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME; | ||||
|     data['MESSAGE'] = this.mESSAGE; | ||||
|     data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME; | ||||
|     data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME; | ||||
|     data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT; | ||||
|     data['NO_OF_ROWS'] = this.nOOFROWS; | ||||
|     data['REPLACEMENT_USER_NAME'] = this.rEPLACEMENTUSERNAME; | ||||
|     data['ROW_NUM'] = this.rOWNUM; | ||||
|     data['RULE_ID'] = this.rULEID; | ||||
|     data['RULE_NAME'] = this.rULENAME; | ||||
|     data['RULE_STATUS'] = this.rULESTATUS; | ||||
|     data['RULE_TIP_MESSAGE'] = this.rULETIPMESSAGE; | ||||
|     data['TO_ROW_NUM'] = this.tOROWNUM; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| class RespondAttributesList { | ||||
|   String? aTTRIBUTEDISPLAYNAME; | ||||
|   String? aTTRIBUTEFORMAT; | ||||
|   String? aTTRIBUTENAME; | ||||
|   String? aTTRIBUTETYPE; | ||||
| 
 | ||||
|   RespondAttributesList( | ||||
|       {this.aTTRIBUTEDISPLAYNAME, | ||||
|         this.aTTRIBUTEFORMAT, | ||||
|         this.aTTRIBUTENAME, | ||||
|         this.aTTRIBUTETYPE}); | ||||
| 
 | ||||
|   RespondAttributesList.fromJson(Map<String, dynamic> json) { | ||||
|     aTTRIBUTEDISPLAYNAME = json['ATTRIBUTE_DISPLAY_NAME']; | ||||
|     aTTRIBUTEFORMAT = json['ATTRIBUTE_FORMAT']; | ||||
|     aTTRIBUTENAME = json['ATTRIBUTE_NAME']; | ||||
|     aTTRIBUTETYPE = json['ATTRIBUTE_TYPE']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ATTRIBUTE_DISPLAY_NAME'] = this.aTTRIBUTEDISPLAYNAME; | ||||
|     data['ATTRIBUTE_FORMAT'] = this.aTTRIBUTEFORMAT; | ||||
|     data['ATTRIBUTE_NAME'] = this.aTTRIBUTENAME; | ||||
|     data['ATTRIBUTE_TYPE'] = this.aTTRIBUTETYPE; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| class VrItemTypesList { | ||||
|   String? iTEMTYPE; | ||||
|   String? iTEMTYPEDISPLAYNAME; | ||||
| 
 | ||||
|   VrItemTypesList({this.iTEMTYPE, this.iTEMTYPEDISPLAYNAME}); | ||||
| 
 | ||||
|   VrItemTypesList.fromJson(Map<String, dynamic> json) { | ||||
|     iTEMTYPE = json['ITEM_TYPE']; | ||||
|     iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ITEM_TYPE'] = this.iTEMTYPE; | ||||
|     data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| class WFLookUpList { | ||||
|   String? lOOKUPCODE; | ||||
|   String? lOOKUPDESCRIPTION; | ||||
|   String? lOOKUPMEANING; | ||||
| 
 | ||||
|   WFLookUpList({this.lOOKUPCODE, this.lOOKUPDESCRIPTION, this.lOOKUPMEANING}); | ||||
| 
 | ||||
|   WFLookUpList.fromJson(Map<String, dynamic> json) { | ||||
|     lOOKUPCODE = json['LOOKUP_CODE']; | ||||
|     lOOKUPDESCRIPTION = json['LOOKUP_DESCRIPTION']; | ||||
|     lOOKUPMEANING = json['LOOKUP_MEANING']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['LOOKUP_CODE'] = this.lOOKUPCODE; | ||||
|     data['LOOKUP_DESCRIPTION'] = this.lOOKUPDESCRIPTION; | ||||
|     data['LOOKUP_MEANING'] = this.lOOKUPMEANING; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,124 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:mohem_flutter_app/api/vacation_rule_api_client.dart'; | ||||
| import 'package:mohem_flutter_app/classes/utils.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/vacation_rule/get_item_type_notifications_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/button/default_button.dart'; | ||||
| 
 | ||||
| class AddVacationRuleScreen extends StatefulWidget { | ||||
|   AddVacationRuleScreen({Key? key}) : super(key: key); | ||||
| 
 | ||||
|   @override | ||||
|   _AddVacationRuleScreenState createState() { | ||||
|     return _AddVacationRuleScreenState(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| class _AddVacationRuleScreenState extends State<AddVacationRuleScreen> { | ||||
|   List<VrItemTypesList>? vrItemTypesList; | ||||
|   List<GetItemTypeNotificationsList>? itemTypeNotificationsList; | ||||
| 
 | ||||
|   List<GetNotificationReassignModeList>? notificationReassignModeList; | ||||
|   List<RespondAttributesList>? respondAttributesList; | ||||
|   List<WFLookUpList>? wfLookupList; | ||||
| 
 | ||||
|   int currentStage = 0; | ||||
| 
 | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     getVacationRulesList(); | ||||
|   } | ||||
| 
 | ||||
|   void getVacationRulesList() async { | ||||
|     try { | ||||
|       Utils.showLoading(context); | ||||
|       vrItemTypesList = await VacationRuleApiClient().getVrItemTypes(); | ||||
|       Utils.hideLoading(context); | ||||
|       currentStage = 1; | ||||
|       setState(() {}); | ||||
|     } catch (ex) { | ||||
|       Utils.hideLoading(context); | ||||
|       Utils.handleException(ex, context, null); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   void getItemTypeNotificationsList() async { | ||||
|     try { | ||||
|       Utils.showLoading(context); | ||||
|       //itemTypeNotificationsList = await VacationRuleApiClient().getItemTypeNotifications(); | ||||
|       Utils.hideLoading(context); | ||||
|       currentStage = 2; | ||||
|       setState(() {}); | ||||
|     } catch (ex) { | ||||
|       Utils.hideLoading(context); | ||||
|       Utils.handleException(ex, context, null); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   void callCombineApis() async { | ||||
|     try { | ||||
|       Utils.showLoading(context); | ||||
|       List results = await Future.wait([ | ||||
|         // VacationRuleApiClient().getNotificationReassignMode(), | ||||
|         // VacationRuleApiClient().getRespondAttributes("", ""), | ||||
|         // VacationRuleApiClient().getWfLookup(P_LOOKUP_TYPE), | ||||
|       ]); | ||||
|       notificationReassignModeList = results[0]; | ||||
|       respondAttributesList = results[1]; | ||||
|       wfLookupList = results[2]; | ||||
|       Utils.hideLoading(context); | ||||
|       currentStage = 3; | ||||
|       setState(() {}); | ||||
|     } catch (ex) { | ||||
|       Utils.hideLoading(context); | ||||
|       Utils.handleException(ex, context, null); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       backgroundColor: Colors.white, | ||||
|       appBar: AppBarWidget( | ||||
|         context, | ||||
|         title: LocaleKeys.vacationRule.tr(), | ||||
|       ), | ||||
|       body: vrItemTypesList == null | ||||
|           ? const SizedBox() | ||||
|           : (vrItemTypesList!.isEmpty | ||||
|               ? Utils.getNoDataWidget(context) | ||||
|               : Column( | ||||
|                   children: [ | ||||
|                     ListView( | ||||
|                       padding: const EdgeInsets.all(21), | ||||
|                       physics: const BouncingScrollPhysics(), | ||||
|                       children: [], | ||||
|                     ).expanded, | ||||
|                     DefaultButton( | ||||
|                       currentStage == 3 ? LocaleKeys.apply.tr() : LocaleKeys.next.tr(), | ||||
|                       () { | ||||
|                         if (currentStage == 1) { | ||||
|                           getItemTypeNotificationsList(); | ||||
|                         } else if (currentStage == 2) { | ||||
|                           callCombineApis(); | ||||
|                         } | ||||
|                       }, | ||||
|                     ).insideContainer, | ||||
|                   ], | ||||
|                 )), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,146 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:mohem_flutter_app/api/vacation_rule_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/vacation_rule/get_vacation_rules_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 VacationRuleScreen extends StatefulWidget { | ||||
|   VacationRuleScreen({Key? key}) : super(key: key); | ||||
| 
 | ||||
|   @override | ||||
|   _VacationRuleScreenState createState() { | ||||
|     return _VacationRuleScreenState(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| class _VacationRuleScreenState extends State<VacationRuleScreen> { | ||||
|   List<GetVacationRulesList>? vacationRuleList; | ||||
| 
 | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     getVacationRulesList(); | ||||
|   } | ||||
| 
 | ||||
|   void getVacationRulesList() async { | ||||
|     try { | ||||
|       Utils.showLoading(context); | ||||
|       vacationRuleList = await VacationRuleApiClient().getVacationRules(); | ||||
|       Utils.hideLoading(context); | ||||
|       setState(() {}); | ||||
|     } catch (ex) { | ||||
|       Utils.hideLoading(context); | ||||
|       Utils.handleException(ex, context, null); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       backgroundColor: Colors.white, | ||||
|       appBar: AppBarWidget( | ||||
|         context, | ||||
|         title: LocaleKeys.vacationRule.tr(), | ||||
|       ), | ||||
|       body: vacationRuleList == null | ||||
|           ? const SizedBox() | ||||
|           : (vacationRuleList!.isEmpty | ||||
|               ? Utils.getNoDataWidget(context) | ||||
|               : ListView.separated( | ||||
|                   physics: const BouncingScrollPhysics(), | ||||
|                   padding: const EdgeInsets.all(21), | ||||
|                   itemBuilder: (cxt, int parentIndex) => 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(vacationRuleList![parentIndex].rULESTATUS!), | ||||
|                                 ), | ||||
|                               ), | ||||
|                             ), | ||||
|                             Column( | ||||
|                               crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                               mainAxisSize: MainAxisSize.min, | ||||
|                               children: [ | ||||
|                                 ("${vacationRuleList![parentIndex].rULENAME!} | ${vacationRuleList![parentIndex].iTEMTYPEDISPLAYNAME!}").toText16(), | ||||
|                                 4.height, | ||||
|                                 ItemDetailView(LocaleKeys.startDateT.tr(), getParsedTime(vacationRuleList![parentIndex].bEGINDATE!)), | ||||
|                                 ItemDetailView(LocaleKeys.endDateT.tr(), getParsedTime(vacationRuleList![parentIndex].eNDDATE!)), | ||||
|                                 4.height, | ||||
|                                 vacationRuleList![parentIndex].rULESTATUS!.toText12(color: getStatusColor(vacationRuleList![parentIndex].rULESTATUS!)), | ||||
|                               ], | ||||
|                             ).paddingOnly(top: 16, left: 16, right: 16, bottom: 16), | ||||
|                           ], | ||||
|                         ), | ||||
|                       ), | ||||
|                   separatorBuilder: (cxt, index) => 12.height, | ||||
|                   itemCount: vacationRuleList!.length)), | ||||
|       floatingActionButton: Container( | ||||
|         height: 54, | ||||
|         width: 54, | ||||
|         decoration: const BoxDecoration( | ||||
|           shape: BoxShape.circle, | ||||
|           gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ | ||||
|             MyColors.gradiantEndColor, | ||||
|             MyColors.gradiantStartColor, | ||||
|           ]), | ||||
|         ), | ||||
|         child: const Icon(Icons.add, color: Colors.white, size: 30), | ||||
|       ).onPress(() { | ||||
|         Navigator.pushNamed(context, AppRoutes.addVacationRule); | ||||
|       }), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Color getStatusColor(String code) { | ||||
|     if (code == "SUBMIT") { | ||||
|       return const Color(0xff2E303A); | ||||
|     } else if (code == "Inactive") { | ||||
|       return const Color(0xffD02127); | ||||
|     } else if (code == "active") { | ||||
|       return const Color(0xff1FA269); | ||||
|     } else if (code == "REQUEST_INFO") { | ||||
|       return const Color(0xff2E303A); | ||||
|     } else { | ||||
|       return const Color(0xff2E303A); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   String getParsedTime(String time) { | ||||
|     DateTime date = DateFormat("mm/dd/yyyy").parse(time); | ||||
|     return DateFormat("d MMM yyyy").format(date); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,67 @@ | ||||
| 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/app_state/app_state.dart'; | ||||
| import 'package:mohem_flutter_app/classes/utils.dart'; | ||||
| 
 | ||||
| class BusinessCardDialog extends StatelessWidget { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return RotatedBox( | ||||
|       quarterTurns: 1, | ||||
|       child: Container( | ||||
|         width: MediaQuery.of(context).size.height / 2, | ||||
|         color: Colors.white, | ||||
|         margin: EdgeInsets.all(20), | ||||
|         child: Column( | ||||
|           mainAxisSize: MainAxisSize.min, | ||||
|           crossAxisAlignment: CrossAxisAlignment.start, | ||||
|           mainAxisAlignment: MainAxisAlignment.start, | ||||
|           children: [ | ||||
|             Row( | ||||
|               crossAxisAlignment: CrossAxisAlignment.start, | ||||
|               mainAxisAlignment: MainAxisAlignment.start, | ||||
|               children: [ | ||||
|                 Expanded( | ||||
|                   child: Column( | ||||
|                     crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                     mainAxisAlignment: MainAxisAlignment.start, | ||||
|                     children: [ | ||||
|                       Image.asset( | ||||
|                         "assets/images/logos/bn_cloud_soloution.jpg", | ||||
|                         width: 80, | ||||
|                         height: 80, | ||||
|                       ), | ||||
|                       12.height, | ||||
|                       (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText20(), | ||||
|                     ], | ||||
|                   ), | ||||
|                 ), | ||||
|                 Image.memory( | ||||
|                   Utils.getPostBytes(AppState().memberInformationList!.businessCardQR ?? ""), | ||||
|                   width: 100, | ||||
|                   height: 100, | ||||
|                 ), | ||||
|               ], | ||||
|             ), | ||||
|             Column( | ||||
|               crossAxisAlignment: CrossAxisAlignment.start, | ||||
|               mainAxisAlignment: MainAxisAlignment.start, | ||||
|               children: [ | ||||
|                 1.height, | ||||
|                 (AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false), | ||||
|                 12.height, | ||||
|                 (AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText12(isBold: false), | ||||
|                 1.height, | ||||
|                 (AppState().memberInformationList!.eMPLOYEEEMAILADDRESS ?? "").toText12(isBold: false), | ||||
|                 1.height, | ||||
|                 (AppState().memberInformationList!.jOBNAME ?? "").toText12(isBold: false), | ||||
|               ], | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,77 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:mohem_flutter_app/app_state/app_state.dart'; | ||||
| import 'package:mohem_flutter_app/extensions/int_extensions.dart'; | ||||
| import 'package:mohem_flutter_app/extensions/string_extensions.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/button/default_button.dart'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| 
 | ||||
| import 'package:mohem_flutter_app/classes/utils.dart'; | ||||
| import 'package:mohem_flutter_app/main.dart'; | ||||
| 
 | ||||
| class EmployeeDigitialIdDialog extends StatelessWidget { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Container( | ||||
|       width: double.infinity, | ||||
|       child: Column( | ||||
|         mainAxisSize: MainAxisSize.min, | ||||
|         children: [ | ||||
|           Image.asset("assets/images/bn_logo.png"), | ||||
|           Padding( | ||||
|             padding: const EdgeInsets.all(20.0), | ||||
|             child: Column( | ||||
|               mainAxisSize: MainAxisSize.min, | ||||
|               mainAxisAlignment: MainAxisAlignment.center, | ||||
|               crossAxisAlignment: CrossAxisAlignment.center, | ||||
|               children: [ | ||||
|                 Row( | ||||
|                   children: [ | ||||
|                     Container( | ||||
|                       width: 80, | ||||
|                       height: 80, | ||||
|                       decoration: BoxDecoration( | ||||
|                         color: Colors.white, | ||||
|                         borderRadius: const BorderRadius.all(Radius.circular(12)), | ||||
|                         boxShadow: [BoxShadow(color: Colors.white60, blurRadius: 10, spreadRadius: 10)], | ||||
|                       ), | ||||
|                       clipBehavior: Clip.antiAlias, | ||||
|                       child: Image.memory( | ||||
|                         Utils.getPostBytes( | ||||
|                           AppState().memberInformationList!.eMPLOYEEIMAGE ?? "", | ||||
|                         ), | ||||
|                         fit: BoxFit.cover, | ||||
|                       ), | ||||
|                     ), | ||||
|                     16.width, | ||||
|                     (AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText20(), | ||||
|                   ], | ||||
|                 ), | ||||
|                 Container( | ||||
|                   width: double.infinity, | ||||
|                   child: Column( | ||||
|                     mainAxisAlignment: MainAxisAlignment.start, | ||||
|                     crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                     children: [ | ||||
|                       12.height, | ||||
|                       (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText16(), | ||||
|                       4.height, | ||||
|                       (AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false), | ||||
|                     ], | ||||
|                   ), | ||||
|                 ), | ||||
|                 Image.memory( | ||||
|                   Utils.getPostBytes(AppState().memberInformationList!.employeeQR ?? ""), | ||||
|                   width: 160, | ||||
|                   height: 160, | ||||
|                 ), | ||||
|                 DefaultButton("Cancel", () { | ||||
|                   Navigator.pop(context); | ||||
|                 }) | ||||
|               ], | ||||
|             ), | ||||
|           ), | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -1,19 +1,26 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_svg/svg.dart'; | ||||
| import 'package:mohem_flutter_app/extensions/int_extensions.dart'; | ||||
| import 'package:mohem_flutter_app/extensions/string_extensions.dart'; | ||||
| import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; | ||||
| 
 | ||||
| class AppLogo extends StatelessWidget { | ||||
|   AppLogo({Key? key}) : super(key: key); | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     // TODO: implement build | ||||
|     return Row(children: [ | ||||
|       SvgPicture.asset( | ||||
|                       "assets/mohemm_logo.svg", | ||||
|                       height: 100, | ||||
|                       width: 100, | ||||
|                       alignment: Alignment.centerRight, | ||||
|                     ), | ||||
|     ],); | ||||
|     return Row( | ||||
|       children: [ | ||||
|         SvgPicture.asset( | ||||
|           "assets/mohemm_logo.svg", | ||||
|           height: 48, | ||||
|           width: 48, | ||||
|           alignment: Alignment.centerRight, | ||||
|         ), | ||||
|         8.width, | ||||
|         LocaleKeys.mohemm.tr().toText14() | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,16 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| 
 | ||||
| void showMDialog( | ||||
|   context, { | ||||
|   Widget? child, | ||||
| }) async { | ||||
|   return showDialog( | ||||
|     context: context, | ||||
|     barrierDismissible: true, | ||||
|     builder: (context) { | ||||
|       return Dialog( | ||||
|         child: child, | ||||
|       ); | ||||
|     }, | ||||
|   ); | ||||
| } | ||||
| @ -0,0 +1,76 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:qr_code_scanner/qr_code_scanner.dart'; | ||||
| 
 | ||||
| import 'package:mohem_flutter_app/widgets/button/default_button.dart'; | ||||
| 
 | ||||
| class QrScannerDialog extends StatefulWidget { | ||||
|   @override | ||||
|   State<QrScannerDialog> createState() => _QrScannerDialogState(); | ||||
| } | ||||
| 
 | ||||
| class _QrScannerDialogState extends State<QrScannerDialog> { | ||||
|   final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); | ||||
|   Barcode? result; | ||||
|   QRViewController? controller; | ||||
|   bool isPicked = false; | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       body: Container( | ||||
|         width: double.infinity, | ||||
|         height: double.infinity, | ||||
|         color: Colors.white, | ||||
|         child: Column( | ||||
|           children: [ | ||||
|             Expanded( | ||||
|               flex: 1, | ||||
|               child: QRView( | ||||
|                 key: qrKey, | ||||
|                 onQRViewCreated: _onQRViewCreated, | ||||
|               ), | ||||
|             ), | ||||
|             // Expanded( | ||||
|             //   flex: 1, | ||||
|             //   child: Center( | ||||
|             //     child: (result != null) | ||||
|             //         ? Text( | ||||
|             //         'Barcode Type: ${result!.format}   Data: ${result!.code}') | ||||
|             //         : Text('Scan a code'), | ||||
|             //   ), | ||||
|             // ), | ||||
|             Padding( | ||||
|               padding: const EdgeInsets.all(12.0), | ||||
|               child: DefaultButton( | ||||
|                 "Cancel", | ||||
|                 () { | ||||
|                   Navigator.pop(context); | ||||
|                 }, | ||||
|               ), | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   void _onQRViewCreated(QRViewController controller) { | ||||
|     this.controller = controller; | ||||
| 
 | ||||
|     controller.scannedDataStream.listen((scanData) { | ||||
|       setState(() { | ||||
|         result = scanData; | ||||
|         if (!isPicked) { | ||||
|           isPicked = true; | ||||
|           Navigator.pop(context, result!.code); | ||||
|         } | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   void dispose() { | ||||
|     controller?.dispose(); | ||||
|     super.dispose(); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue