updated menus
							parent
							
								
									029f03f2bc
								
							
						
					
					
						commit
						0974861463
					
				| @ -0,0 +1,31 @@ | ||||
| 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/dashboard/get_attendance_tracking_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/generic_response_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/member_login_list_model.dart'; | ||||
| 
 | ||||
| import 'api_client.dart'; | ||||
| 
 | ||||
| class EITApiClient { | ||||
|   static final EITApiClient _instance = EITApiClient._internal(); | ||||
| 
 | ||||
|   EITApiClient._internal(); | ||||
| 
 | ||||
|   factory EITApiClient() => _instance; | ||||
| 
 | ||||
|   Future<List<CollectionTransaction>?> getEITTransactions(String functionName) async { | ||||
|     String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS"; | ||||
|     Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1}; | ||||
|     postParams.addAll(AppState().postParamsJson); | ||||
|     return await ApiClient().postJsonForObject((json) { | ||||
|       List<CollectionTransaction>? responseData = GET_EIT_Transactions_Model.fromJson(json['GetEITTransactionList'][0]).collectionTransaction; | ||||
|       return responseData; | ||||
|     }, url, postParams); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,103 @@ | ||||
| class GET_EIT_Transactions_Model { | ||||
|   List<CollectionTransaction>? collectionTransaction; | ||||
| 
 | ||||
|   GET_EIT_Transactions_Model({this.collectionTransaction}); | ||||
| 
 | ||||
|   GET_EIT_Transactions_Model.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; | ||||
|   dynamic? 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,35 @@ | ||||
| import 'dart:convert'; | ||||
| 
 | ||||
| import 'package:flutter/foundation.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; | ||||
| import 'package:mohem_flutter_app/api/eit_api_client.dart'; | ||||
| import 'package:mohem_flutter_app/classes/utils.dart'; | ||||
| import 'package:mohem_flutter_app/main.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/menus.dart'; | ||||
| import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/generic_response_model.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/Updater.dart'; | ||||
| 
 | ||||
| /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool | ||||
| // ignore: prefer_mixin | ||||
| class EITProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | ||||
|   List<CollectionTransaction>? eitTransactionList; | ||||
|   late bool isEitLoaded = false; | ||||
|   void getEITList(String functionName) async { | ||||
|     try { | ||||
|       eitTransactionList = await EITApiClient().getEITTransactions(functionName); | ||||
|       isEitLoaded = true; | ||||
| 
 | ||||
|       notifyListeners(); | ||||
|     } catch (ex) { | ||||
|       isEitLoaded = false; | ||||
|       logger.wtf(ex); | ||||
|       notifyListeners(); | ||||
|       Utils.handleException(ex, null); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,110 @@ | ||||
| import 'package:easy_localization/src/public_ext.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_svg/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/models/dashboard/menu_entries.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/menus.dart'; | ||||
| import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart'; | ||||
| import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; | ||||
| import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; | ||||
| import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; | ||||
| import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| class MissingSwipe extends StatelessWidget { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<EITProviderModel>( | ||||
|       builder: (context, data, child) { | ||||
|         return !data.isEitLoaded | ||||
|             ? LoadingDialog() | ||||
|             : SizedBox( | ||||
|                 width: double.infinity, | ||||
|                 height: double.infinity, | ||||
|                 child: ListView.separated( | ||||
|                   itemBuilder: (context, index) { | ||||
|                     return rowItem(data.eitTransactionList![index]); | ||||
|                   }, | ||||
|                   separatorBuilder: (context, index) { | ||||
|                     return 12.height; | ||||
|                   }, | ||||
|                   itemCount: data.eitTransactionList?.length ?? 0, | ||||
|                   padding: EdgeInsets.only(left: 21, right: 21), | ||||
|                 )); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Widget rowItem(CollectionTransaction types) { | ||||
|     return InkWell( | ||||
|       onTap: () { | ||||
|         // Navigator.pushNamed(context, AppRoutes.missingSwipe); | ||||
|       }, | ||||
|       child: Container( | ||||
|         width: double.infinity, | ||||
|         padding: EdgeInsets.all(12), | ||||
|         decoration: BoxDecoration( | ||||
|           color: Colors.white, | ||||
|           borderRadius: BorderRadius.circular(10), | ||||
|           boxShadow: [ | ||||
|             BoxShadow( | ||||
|               color: const Color(0xff000000).withOpacity(.05), | ||||
|               blurRadius: 26, | ||||
|               offset: const Offset(0, -3), | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|         child: Row( | ||||
|           crossAxisAlignment: CrossAxisAlignment.start, | ||||
|           mainAxisAlignment: MainAxisAlignment.start, | ||||
|           children: [ | ||||
|             Container( | ||||
|               decoration: BoxDecoration( | ||||
|                 borderRadius: BorderRadius.circular(4), | ||||
|                 gradient: LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomRight, colors: [Colors.red, Colors.blue]), | ||||
|               ), | ||||
|               child: Column( | ||||
|                 crossAxisAlignment: CrossAxisAlignment.center, | ||||
|                 children: [ | ||||
|                   SvgPicture.asset( | ||||
|                     "assets/images/miss_swipe.svg", | ||||
|                     color: Colors.white, | ||||
|                   ), | ||||
|                   2.height, | ||||
|                   Text(types.aPPLICATIONCOLUMNNAME.toString()) | ||||
|                 ], | ||||
|               ).paddingAll(6), | ||||
|             ), | ||||
|             12.width, | ||||
|             Expanded( | ||||
|               child: Column( | ||||
|                 crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                 mainAxisAlignment: MainAxisAlignment.start, | ||||
|                 children: [ | ||||
|                   "Missing Swipe Request".toText16(), | ||||
|                   "Missing Swipe Request for Hussain, Mohammad has been approved".toText10(), | ||||
|                   12.height, | ||||
|                   Row( | ||||
|                     children: [ | ||||
|                       Expanded(child: "07 Jan 2021".toText10(color: MyColors.lightTextColor)), | ||||
|                       SvgPicture.asset( | ||||
|                         "assets/images/arrow_next.svg", | ||||
|                         color: MyColors.darkIconColor, | ||||
|                       ) | ||||
|                     ], | ||||
|                   ), | ||||
|                 ], | ||||
|               ), | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,63 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:mohem_flutter_app/classes/colors.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; | ||||
| import 'package:mohem_flutter_app/models/dashboard/menus.dart'; | ||||
| import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; | ||||
| import 'package:mohem_flutter_app/ui/app_bar.dart'; | ||||
| import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; | ||||
| import 'package:mohem_flutter_app/ui/landing/widget/missing_swipe.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| class AddEITScreen extends StatelessWidget { | ||||
|   late GetMenuEntriesList getMenu; | ||||
|   late EITProviderModel data; | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     getMenu = ModalRoute.of(context)!.settings.arguments as GetMenuEntriesList; | ||||
| 
 | ||||
|     data = Provider.of<EITProviderModel>(context, listen: false); | ||||
|     data.getEITList(getMenu.functionName.toString()); | ||||
|     return DefaultTabController( | ||||
|         length: 2, | ||||
|         child: Scaffold( | ||||
|           backgroundColor: Colors.white, | ||||
|           appBar: appBar( | ||||
|             context, | ||||
|             title: getMenu.prompt.toString(), | ||||
|           ), | ||||
|           body: Container( | ||||
|               width: double.infinity, | ||||
|               height: double.infinity, | ||||
|               child: Column(children: [ | ||||
|                 Container( | ||||
|                   decoration: BoxDecoration( | ||||
|                     borderRadius: BorderRadius.only(bottomLeft: Radius.circular(20), bottomRight: Radius.circular(20)), | ||||
|                     gradient: LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomRight, colors: [ | ||||
|                       MyColors.gradiantEndColor, | ||||
|                       MyColors.gradiantStartColor, | ||||
|                     ]), | ||||
|                   ), | ||||
|                   clipBehavior: Clip.antiAlias, | ||||
|                   child: TabBar( | ||||
|                     indicatorColor: Colors.white, | ||||
|                     labelColor: Colors.white, | ||||
|                     tabs: [ | ||||
|                       Tab( | ||||
|                         text: "Missing Swipe", | ||||
|                       ), | ||||
|                       Tab( | ||||
|                         text: "Swipe Request", | ||||
|                       ), | ||||
|                     ], | ||||
|                   ), | ||||
|                 ), | ||||
|                 Expanded( | ||||
|                   child: TabBarView( | ||||
|                     children: [MissingSwipe(), Container()], | ||||
|                   ), | ||||
|                 ) | ||||
|               ])), | ||||
|         )); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue