diff --git a/lib/api/my_requests_api_client.dart b/lib/api/my_requests_api_client.dart index c5a32b7..96c3b54 100644 --- a/lib/api/my_requests_api_client.dart +++ b/lib/api/my_requests_api_client.dart @@ -60,13 +60,12 @@ class MyRequestsApiClient { }, url, postParams); } - Future getSubmitNewRequest(List> list) async - { + Future getSubmitNewRequest(List> list, {String? functionName}) async { String url = "${ApiConsts.erpRest}SUBMIT_CCP_TRANSACTION"; Map postParams = { "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, - "P_DESC_FLEX_NAME": "HMG_EMP_BUS_TRIP_SET_SS", + "P_DESC_FLEX_NAME": functionName ?? "HMG_EMP_BUS_TRIP_SET_SS", }; postParams.addAll(AppState().postParamsJson); @@ -77,13 +76,12 @@ class MyRequestsApiClient { }, url, postParams); } - Future> getCcpTransactions(List> list) async - { + Future> getCcpTransactions(List> list, {String? functionName}) async { String url = "${ApiConsts.erpRest}GET_CCP_TRANSACTIONS"; Map postParams = { "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, - "P_DESC_FLEX_NAME": "HMG_EMP_BUS_TRIP_SET_SS", + "P_DESC_FLEX_NAME": functionName ?? "HMG_EMP_BUS_TRIP_SET_SS", }; postParams.addAll(AppState().postParamsJson); @@ -93,5 +91,4 @@ class MyRequestsApiClient { return responseData.getCCPTransactionsModel ?? []; }, url, postParams); } - } diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 32d713c..525bda1 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -10,6 +10,9 @@ import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; + + + class AppState { static final AppState _instance = AppState._internal(); @@ -88,7 +91,7 @@ class AppState { String get getHuaweiPushToken => _huaweiPushToken; - final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 4.1, mobileType: Platform.isAndroid ? "android" : "ios"); + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 6.1, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { isAuthenticated = false; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 807e373..aaa515f 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -652,3 +652,5 @@ class _DashboardScreenState extends State with WidgetsBindingOb Navigator.pushNamed(context, AppRoutes.offersAndDiscountsDetails, arguments: getOffersDetailList); } } + + diff --git a/lib/ui/landing/widget/menus_widget.dart b/lib/ui/landing/widget/menus_widget.dart index b9447b9..abcddf2 100644 --- a/lib/ui/landing/widget/menus_widget.dart +++ b/lib/ui/landing/widget/menus_widget.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; +import 'package:mohem_flutter_app/ui/screens/my_requests/new_request.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -192,7 +193,7 @@ class MenusWidget extends StatelessWidget { ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), ).onPress( () { - Navigator.pushNamed(context, AppRoutes.myRequests,arguments: data.myRequest!.requestGroupId); + Navigator.pushNamed(context, AppRoutes.myRequests, arguments: NewRequestModel(groupID: data.myRequest!.requestGroupId)); }, ) ], diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index b93035f..926d87b 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -13,6 +13,7 @@ import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; +import 'package:mohem_flutter_app/ui/screens/my_requests/new_request.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -72,7 +73,7 @@ class ServicesWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Image.memory( - Base64Decoder().convert(data.homeMenus![parentIndex].menuEntiesList[index].icon ?? ""), + const Base64Decoder().convert(data.homeMenus![parentIndex].menuEntiesList[index].icon ?? ""), scale: 1.25, ), Row( @@ -91,13 +92,13 @@ class ServicesWidget extends StatelessWidget { }), ); }, - separatorBuilder: (cxt, index) => 9.width, + separatorBuilder: (BuildContext cxt, int index) => 9.width, itemCount: data.homeMenus![parentIndex].menuEntiesList.length), ), ], ); }, - separatorBuilder: (context, index) { + separatorBuilder: (BuildContext context, int index) { return 12.height; }, shrinkWrap: true, @@ -194,8 +195,25 @@ class ServicesWidget extends StatelessWidget { } void handleOnPress(context, GetMenuEntriesList menuEntry) { + print(menuEntry.requestType); var pro = Provider.of(context, listen: false); - if (menuEntry.requestType == "MONTHLY_ATTENDANCE") { + // if (menuEntry.requestType == "PMS") { + // Navigator.pushNamed(context, AppRoutes.newRequest, arguments: NewRequestModel(functionName: menuEntry.functionName, prompt: menuEntry.prompt)); + // } else + if (menuEntry.requestType == "CCP") { + Navigator.pushNamed(context, AppRoutes.newRequest, arguments: NewRequestModel(functionName: menuEntry.functionName, prompt: menuEntry.prompt)); + } else if (menuEntry.requestType == "PAR") { + Navigator.pushNamed(context, AppRoutes.performanceEvaluation); + } else if (menuEntry.requestType == "BASIC_DETAILS") { + Navigator.pushNamed(context, AppRoutes.basicDetails); + return; + } else if (menuEntry.requestType == "PHONE_NUMBERS") { + Navigator.pushNamed(context, AppRoutes.contactDetails); + return; + } else if (menuEntry.requestType == "ADDRESS") { + Navigator.pushNamed(context, AppRoutes.contactDetails); + return; + } else if (menuEntry.requestType == "MONTHLY_ATTENDANCE") { Navigator.pushNamed(context, AppRoutes.monthlyAttendance); return; } else if (menuEntry.requestType == "VACATION_RULE") { @@ -246,13 +264,13 @@ class ServicesWidget extends StatelessWidget { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13), scrollDirection: Axis.horizontal, - itemBuilder: (cxt, index) { + itemBuilder: (BuildContext cxt, int index) { return AspectRatio( aspectRatio: 105 / 105, child: ServicesMenuShimmer(), ); }, - separatorBuilder: (cxt, index) => 9.width, + separatorBuilder: (BuildContext cxt, int index) => 9.width, itemCount: 4, ), ), @@ -260,3 +278,5 @@ class ServicesWidget extends StatelessWidget { ); } } + + diff --git a/lib/ui/screens/my_requests/my_requests.dart b/lib/ui/screens/my_requests/my_requests.dart index a9166b4..93302b8 100644 --- a/lib/ui/screens/my_requests/my_requests.dart +++ b/lib/ui/screens/my_requests/my_requests.dart @@ -16,6 +16,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_output_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_transactions_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_concurrent_programs_model.dart'; +import 'package:mohem_flutter_app/ui/screens/my_requests/new_request.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/dynamic_forms/dynamic_textfield_widget.dart'; @@ -33,7 +34,7 @@ class _MyRequestsState extends State { List getCCPTransactionsList = []; - int? groupId; + NewRequestModel? requestModel; bool isNewRequest = false; @override @@ -43,9 +44,13 @@ class _MyRequestsState extends State { @override Widget build(BuildContext context) { - if (groupId == null) { - groupId = ModalRoute.of(context)!.settings.arguments as int; - getConcurrentPrograms(); + if (requestModel == null) { + requestModel = ModalRoute.of(context)!.settings.arguments as NewRequestModel; + if (requestModel!.groupID != null) { + getConcurrentPrograms(); + } else { + getCCPTransactions(requestModel!.functionName); + } } return Scaffold( @@ -65,17 +70,17 @@ class _MyRequestsState extends State { child: PopupMenuButton( child: DynamicTextFieldWidget( LocaleKeys.templateName.tr(), - selectedConcurrentProgramList?.uSERCONCURRENTPROGRAMNAME ?? LocaleKeys.selectTemplate.tr(), + selectedConcurrentProgramList?.uSERCONCURRENTPROGRAMNAME ?? requestModel?.prompt ?? LocaleKeys.selectTemplate.tr(), isEnable: false, isPopup: true, isInputTypeNum: true, - isReadOnly: false, + isReadOnly: getConcurrentProgramsList.isEmpty ? true : false, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ - for (int i = 0; i < getConcurrentProgramsList!.length; i++) PopupMenuItem(child: Text(getConcurrentProgramsList![i].uSERCONCURRENTPROGRAMNAME!), value: i), + for (int i = 0; i < getConcurrentProgramsList.length; i++) PopupMenuItem(child: Text(getConcurrentProgramsList![i].uSERCONCURRENTPROGRAMNAME!), value: i), ], onSelected: (int popupIndex) { - selectedConcurrentProgramList = getConcurrentProgramsList![popupIndex]; + selectedConcurrentProgramList = getConcurrentProgramsList[popupIndex]; getCCPTransactions(selectedConcurrentProgramList?.cONCURRENTPROGRAMNAME); setState(() {}); }), @@ -159,7 +164,7 @@ class _MyRequestsState extends State { } void openNewRequest() async { - await Navigator.pushNamed(context, AppRoutes.newRequest).then((value) { + await Navigator.pushNamed(context, AppRoutes.newRequest, arguments: NewRequestModel(groupID: requestModel!.groupID)).then((value) { // getOpenTickets(); }); } @@ -167,7 +172,7 @@ class _MyRequestsState extends State { void getConcurrentPrograms() async { try { Utils.showLoading(context); - getConcurrentProgramsList = await MyRequestsApiClient().getConcurrentPrograms(groupId!); + getConcurrentProgramsList = await MyRequestsApiClient().getConcurrentPrograms(requestModel!.groupID!); Utils.hideLoading(context); setState(() {}); } catch (ex) { diff --git a/lib/ui/screens/my_requests/new_request.dart b/lib/ui/screens/my_requests/new_request.dart index 27cd29d..cba00c4 100644 --- a/lib/ui/screens/my_requests/new_request.dart +++ b/lib/ui/screens/my_requests/new_request.dart @@ -19,6 +19,14 @@ 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/dynamic_forms/dynamic_textfield_widget.dart'; +class NewRequestModel { + int? groupID; + String? functionName; + String? prompt; + + NewRequestModel({this.groupID, this.functionName, this.prompt}); +} + class NewRequest extends StatefulWidget { const NewRequest({Key? key}) : super(key: key); @@ -34,7 +42,7 @@ class _NewRequestState extends State { List? getCCPDFFStructureModelList; DateTime selectedDate = DateTime.now(); - int? groupId; + NewRequestModel? requestModel; @override void initState() { @@ -43,9 +51,13 @@ class _NewRequestState extends State { @override Widget build(BuildContext context) { - if (groupId == null) { - groupId = ModalRoute.of(context)!.settings.arguments as int; - getConcurrentPrograms(); + if (requestModel == null) { + requestModel = ModalRoute.of(context)!.settings.arguments as NewRequestModel; + if (requestModel!.groupID != null) { + getConcurrentPrograms(); + } else { + getCCPDFFStructure(requestModel!.functionName); + } } return Scaffold( @@ -63,17 +75,17 @@ class _NewRequestState extends State { PopupMenuButton( child: DynamicTextFieldWidget( LocaleKeys.templateName.tr(), - selectedConcurrentProgramList?.uSERCONCURRENTPROGRAMNAME ?? LocaleKeys.selectTemplate.tr(), + selectedConcurrentProgramList?.uSERCONCURRENTPROGRAMNAME ?? requestModel?.prompt ?? LocaleKeys.selectTemplate.tr(), isEnable: false, isPopup: true, isInputTypeNum: true, - isReadOnly: false, + isReadOnly:getConcurrentProgramsList.isEmpty? true:false, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ - for (int i = 0; i < getConcurrentProgramsList!.length; i++) PopupMenuItem(child: Text(getConcurrentProgramsList![i].uSERCONCURRENTPROGRAMNAME!), value: i), + for (int i = 0; i < getConcurrentProgramsList.length; i++) PopupMenuItem(child: Text(getConcurrentProgramsList[i].uSERCONCURRENTPROGRAMNAME!), value: i), ], onSelected: (int popupIndex) { - selectedConcurrentProgramList = getConcurrentProgramsList![popupIndex]; + selectedConcurrentProgramList = getConcurrentProgramsList[popupIndex]; getCCPDFFStructure(selectedConcurrentProgramList?.cONCURRENTPROGRAMNAME); setState(() {}); }), @@ -106,8 +118,11 @@ class _NewRequestState extends State { List> values = getCCPDFFStructureModelList!.map((e) { String? dateVal = ''; String? vatcherVal = ''; + print(e.aPPLICATIONCOLUMNNAME); + print(e.fORMATTYPE); + print(e.eSERVICESDV!.pIDCOLUMNNAME); int? numberVal; - if (e!.fORMATTYPE == 'N') { + if (e.fORMATTYPE == 'N') { dateVal = null; vatcherVal = e.eSERVICESDV!.pIDCOLUMNNAME; numberVal = null; @@ -115,6 +130,10 @@ class _NewRequestState extends State { dateVal = null; vatcherVal = e.eSERVICESDV!.pIDCOLUMNNAME; numberVal = null; + } else if (e.fORMATTYPE == 'C') { + dateVal = null; + numberVal = null; + vatcherVal = e.eSERVICESDV!.pIDCOLUMNNAME; } else { dateVal = null; numberVal = null; @@ -123,13 +142,10 @@ class _NewRequestState extends State { return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); }).toList(); Utils.showLoading(context); - submitCcpTransactionList = await MyRequestsApiClient().getSubmitNewRequest(values); - getCCPTransactionsList = await MyRequestsApiClient().getCcpTransactions(values); + submitCcpTransactionList = await MyRequestsApiClient().getSubmitNewRequest(values, functionName: requestModel?.functionName ?? "HMG_EMP_BUS_TRIP_SET_SS"); + getCCPTransactionsList = await MyRequestsApiClient().getCcpTransactions(values, functionName: requestModel?.functionName ?? "HMG_EMP_BUS_TRIP_SET_SS"); Utils.hideLoading(context); - Navigator.pushNamed( - context, - AppRoutes.myRequests, - ); + Navigator.pushNamed(context, AppRoutes.myRequests, arguments: requestModel); setState(() {}); } catch (ex) { Utils.hideLoading(context); @@ -140,7 +156,7 @@ class _NewRequestState extends State { void getConcurrentPrograms() async { try { Utils.showLoading(context); - getConcurrentProgramsList = await MyRequestsApiClient().getConcurrentPrograms(groupId!); + getConcurrentProgramsList = await MyRequestsApiClient().getConcurrentPrograms(requestModel!.groupID!); Utils.hideLoading(context); setState(() {}); } catch (ex) {