diff --git a/assets/images/logos/main_mohemm_logo.png b/assets/images/logos/main_mohemm_logo.png new file mode 100644 index 0000000..5536c07 Binary files /dev/null and b/assets/images/logos/main_mohemm_logo.png differ diff --git a/assets/images/logos/mohemm_logo.svg b/assets/images/logos/mohemm_logo.svg index 1cb9a0b..2fc235f 100644 --- a/assets/images/logos/mohemm_logo.svg +++ b/assets/images/logos/mohemm_logo.svg @@ -1,7 +1,6 @@ - - - + + - + - - - - - - - - - - + + + - - - - - + + + + + - - - - - + C107.1,30.8,99.6,21.8,99.2,12.7z" /> + + + + - - - - - + C80.6,30.8,73.1,21.8,72.8,12.7z" /> + + + + - + C54.1,30.8,46.6,21.8,46.3,12.7z" /> diff --git a/lib/api/login_api_client.dart b/lib/api/login_api_client.dart index 8016ab9..cd6a948 100644 --- a/lib/api/login_api_client.dart +++ b/lib/api/login_api_client.dart @@ -1,5 +1,6 @@ import 'dart:async'; +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/basic_member_information_model.dart'; @@ -8,8 +9,6 @@ import 'package:mohem_flutter_app/models/generic_response_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 'package:mohem_flutter_app/api/api_client.dart'; - class LoginApiClient { static final LoginApiClient _instance = LoginApiClient._internal(); diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index b98aed4..9e58b9b 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -1,5 +1,6 @@ import 'dart:async'; +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'; @@ -9,8 +10,6 @@ import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart'; -import 'package:mohem_flutter_app/api/api_client.dart'; - class MyAttendanceApiClient { static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal(); @@ -83,12 +82,8 @@ class MyAttendanceApiClient { "P_MENU_TYPE": "E", "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, - // "EITTransactionTBL": list, + "EITTransactionTBL": list, }; - print(postParams); - postParams["EITTransactionTBL"] =list; - - postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); @@ -103,13 +98,10 @@ class MyAttendanceApiClient { "P_MENU_TYPE": "E", "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, - //"EITTransactionTBL": list, - // "EITTransactionTBLModel": list, + "EITTransactionTBL": list, + "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); - print("postParams:$postParams"); - postParams["EITTransactionTBL"] = list; - postParams["EITTransactionTBLModel"] = list; return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 36d523a..bbe50b4 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -11,6 +11,8 @@ extension WidgetExtensions on Widget { Widget get center => Center(child: this); + Widget circle(double _value) => ClipRRect(borderRadius: BorderRadius.circular(_value), child: this); + Widget paddingAll(double _value) => Padding(padding: EdgeInsets.all(_value), child: this); Widget paddingOnly({double left = 0.0, double right = 0.0, double top = 0.0, double bottom = 0.0}) => diff --git a/lib/models/post_params_model.dart b/lib/models/post_params_model.dart index 0bb48d0..7e62257 100644 --- a/lib/models/post_params_model.dart +++ b/lib/models/post_params_model.dart @@ -37,7 +37,7 @@ class PostParamsModel { languageID = json['LanguageID']; mobileType = json['MobileType']; logInTokenID = json['LogInTokenID']; - payrollCodeStr = json['payrollCodeStr']; + payrollCodeStr = json['PayrollCodeStr']; pLegislationCode = json['LegislationCodeStr']; tokenID = json['TokenID']; } @@ -49,7 +49,7 @@ class PostParamsModel { data['LanguageID'] = this.languageID; data['MobileType'] = this.mobileType; data['LogInTokenID'] = this.logInTokenID; - data['payrollCodeStr'] = this.payrollCodeStr; + data['PayrollCodeStr'] = this.payrollCodeStr; data['LegislationCodeStr'] = this.pLegislationCode; data['TokenID'] = this.tokenID; return data; @@ -67,7 +67,7 @@ class PostParamsModel { data['UserName'] = this.userName; data['P_EMAIL_ADDRESS'] = this.pEmailAddress; data['P_SESSION_ID'] = this.pSessionId; - data['payrollCodeStr'] = this.payrollCodeStr; + data['PayrollCodeStr'] = this.payrollCodeStr; data['LegislationCodeStr'] = this.pLegislationCode; data['P_SELECTED_EMPLOYEE_NUMBER'] = this.pSelectedEmployeeNumber; data['P_USER_NAME'] = this.pUserName; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index e957f29..6515b78 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -3,7 +3,9 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.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/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; @@ -13,7 +15,6 @@ import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; -import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -30,6 +31,8 @@ class _DashboardScreenState extends State { late DashboardProviderModel data; final GlobalKey _scaffoldState = GlobalKey(); + int currentIndex = 0; + @override void initState() { super.initState(); @@ -60,11 +63,19 @@ class _DashboardScreenState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - CircularAvatar( + Image.memory( + Utils.getPostBytes( + AppState().memberInformationList!.eMPLOYEEIMAGE ?? "", + ), width: 34, height: 34, - url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png", - ), + fit: BoxFit.cover, + ).circle(50), + // CircularAvatar( + // width: 34, + // height: 34, + // url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png", + // ), 8.width, SvgPicture.asset("assets/images/side_nav.svg"), ], @@ -72,18 +83,7 @@ class _DashboardScreenState extends State { _scaffoldState.currentState!.openDrawer(); }); }), - Expanded( - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - //AppLogo(), - 8.width, - LocaleKeys.mohemm.tr().toText14() - ], - ), - ), + Image.asset("assets/images/logos/main_mohemm_logo.png", width: 134, height: 28).expanded, SizedBox( width: 36, height: 36, @@ -104,7 +104,6 @@ class _DashboardScreenState extends State { ), ).onPress(() async { await Navigator.pushNamed(context, AppRoutes.announcements); - }) ], ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), @@ -116,7 +115,7 @@ class _DashboardScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), - "Mahmoud Shrouf".toText24(isBold: true), + (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), 16.height, Row( children: [ @@ -371,7 +370,7 @@ class _DashboardScreenState extends State { label: LocaleKeys.itemsForSale.tr(), ), ], - currentIndex: 0, + currentIndex: currentIndex, selectedLabelStyle: TextStyle( fontSize: 8, color: Color(0xff989898), @@ -385,7 +384,7 @@ class _DashboardScreenState extends State { type: BottomNavigationBarType.fixed, selectedItemColor: Colors.black, backgroundColor: Color(0xffF8F8F8), - onTap: (v) {}, + onTap: (index) {}, ), ); } diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index cc7c3aa..a88e041 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/api/my_attendance_api_client.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/dyanmic_forms/get_set_values_request_model.dart'; @@ -63,21 +62,33 @@ class _DynamicInputScreenState extends State { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; if (e.fORMATTYPE == "X") { // for date format type, date format is changed - tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? ""; + tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; if (tempVar.isNotEmpty) { - DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + if (!tempVar.contains("/")) { + DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + } } } + // else if (e.fORMATTYPE == "N") { + // // for date format type, date format is changed + // tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + // print("------------------------sEGMENTNAME:${e.sEGMENTNAME}"); + // print("------------------------tempVar:$tempVar"); + // if (tempVar.isNotEmpty) { + // if (!tempVar.contains("/")) { + // DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + // tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + // } + // } + // } return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); }).toList(); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - values.forEach((element) { - print(element); - }); + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); Utils.hideLoading(context); @@ -91,7 +102,7 @@ class _DynamicInputScreenState extends State { String dESCFLEXCONTEXTCODE = ""; String descFlexConTextTitle = ""; - void calGetValueSetValues(GetEITDFFStructureList structureList) async { + Future calGetValueSetValues(GetEITDFFStructureList structureList) async { try { Utils.showLoading(context); String segmentId = structureList.cHILDSEGMENTSVS!; @@ -119,39 +130,255 @@ class _DynamicInputScreenState extends State { } } - void getDefaultValues(GetEITDFFStructureList structureList) async { + Future getDefaultValues(GetEITDFFStructureList structureList) async { try { - Utils.showLoading(context); + Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; - print("segmentId:$segmentId"); - print("segmentName:${structureList.sEGMENTNAME}"); GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); - List parentRequired = parent.pARENTSEGMENTSDVSplited ?? []; + List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; + List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; List filteredList = - getEitDffStructureList!.where((outerElement) => parentRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); - + getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); List> values = filteredList .map((e) => GetSetValuesRequestModel( sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); - print("values:$values"); - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); - getEitDffStructureList![index].eSERVICESDV = defaultValue; + List> getSetList = getDefaultValuesIonicLogic(parent); + if (getSetList.isNotEmpty) { + ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList); + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + getEitDffStructureList![index].eSERVICESDV = defaultValue; + } } - Utils.hideLoading(context); - setState(() {}); + await Future.delayed(const Duration(seconds: 1)); + Utils.hideLoading(context); + setState(() {}); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); } } + // List> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) { + // let descFlexName: any = ""; + // let descFlexContextCode: any = ""; + // let parentValue: any = []; + // let ParentsList: any = []; + // let parentVal: any = null; + // let dependenciesList: any = []; + // let validationType: string = ""; + // } + + List> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) { + try { + Utils.showLoading(context); + List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; + List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; + + List> dependenciesList = []; + String? parentVal; + bool isStandardDate = false; + bool isStandardTimeDate = false; + bool isStandardTime = false; + bool isHidden = false; + bool isReadOnlyList = false; + bool isSelectElement = false; + + // isStandardDate = this.isStandardDate(obj); + // isStandardTimeDate = this.isStandardDateTime(obj); + // isStandardTime = this.isStandardTime(obj); + if (structureElement.dISPLAYFLAG == "N") isHidden = true; + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") { + isReadOnlyList = true; + } + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") { + isSelectElement = true; + } + + if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) { + List parValue = getDependenciesParams(parentValue); + + if (parValue.isNotEmpty) { + parentVal = parValue.first.ID_COLUMN_NAME; + } + + if (parentVal == null) { + return []; + } + } + if (parentsList.isNotEmpty) { + if (parentValue.isNotEmpty) { + parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList(); + // parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson()))); + // parentsList.concat(parentValue); + } + dependenciesList = getDependenciesParams(parentsList); + } + return dependenciesList; + // for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { + // String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; + // print("segmentId:$segmentId"); + // print("segmentName:${structureList.sEGMENTNAME}"); + // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); + // List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; + // List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; + // + // List filteredList = + // getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); + // + // List> values = filteredList + // .map((e) => GetSetValuesRequestModel( + // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + // .toJson()) + // .toList(); + // print("values:$values"); + // + // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + // getEitDffStructureList![index].eSERVICESDV = defaultValue; + // } + // Utils.hideLoading(context); + // setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + return []; + } + } + + List> getDependenciesParams(parentsList) { + List> parentArr = []; + + for (int i = 0; i < parentsList.length; i++) { + for (int j = 0; j < (getEitDffStructureList?.length ?? 0); j++) { + if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].name) { + if (getEitDffStructureList![j].dISPLAYFLAG != "N") { + if (getEitDffStructureList![j].vALIDATIONTYPE == "N") { + String? idColName; + String? val; + if (getEitDffStructureList![j].fORMATTYPE == "Y" || getEitDffStructureList![j].fORMATTYPE == "I") { + //standard date time or //time + val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME; + // val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME; + // var elem = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLDivElement; + + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { + //alert(parentsList[i].Name +" Is required"); + return []; + // return false; + } + idColName = val; + if (getEitDffStructureList![j].fORMATTYPE == "Y") { + // if (idColName!.contains("/")) { + // DateTime date = DateFormat('yyyy/MM/dd').parse(idColName); + // idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day)); + // } else { + // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName); + // idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day)); + // } + + idColName = formatStandardDate(idColName!); + } + } else { + val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME; + // val = (document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLInputElement).value; + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { + //alert(parentsList[i].Name +" Is required"); + return []; + } + idColName = val; + + if (getEitDffStructureList![j].fORMATTYPE == "X") { + idColName = formatDateNew(idColName!); + // commenting to test + // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!); + // idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date); + } + } + + parentArr.add(GetSetValuesRequestModel( + sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME, + vALUECOLUMNNAME: val, + dESCRIPTION: "", + iDCOLUMNNAME: idColName, + fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME, + ).toJson()); + break; + } else { + if (getEitDffStructureList![j].rEADONLY != "Y") { + var data = getEitDffStructureList![j].eSERVICESDV; + + // let x = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLSelectElement; + String? text = data?.pIDCOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].text : ""; + String? val = data?.pVALUECOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].value : null; + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { + //alert(parentsList[i].Name +" Is required"); + return []; + } else {} + + text ??= ""; + + parentArr.add(GetSetValuesRequestModel( + sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME, + vALUECOLUMNNAME: val, + dESCRIPTION: "", + iDCOLUMNNAME: text, + fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME, + ).toJson()); + break; + } else { + var data = getEitDffStructureList![j].eSERVICESDV; + + String? text = data?.pVALUECOLUMNNAME; + String? val = data?.pIDCOLUMNNAME; + if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + //alert(parentsList[i].Name +" Is required"); + return []; + } else {} + text ??= ""; + + parentArr.add(GetSetValuesRequestModel( + sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME, + vALUECOLUMNNAME: text, + dESCRIPTION: "", + iDCOLUMNNAME: val, + fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME, + ).toJson()); + + //break; + } + } + } else { + var data = getEitDffStructureList![j].eSERVICESDV; + + String? text = data?.pVALUECOLUMNNAME; + String? val = data?.pIDCOLUMNNAME; + if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + //alert(parentsList[i].Name +" Is required"); + return []; + } else {} + text ??= ""; + + parentArr.add(GetSetValuesRequestModel( + sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME, + vALUECOLUMNNAME: text, + dESCRIPTION: "", + iDCOLUMNNAME: val, + fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME, + ).toJson()); + // break; + } + } + } + } + return parentArr; + } + @override void dispose() { super.dispose(); @@ -249,41 +476,43 @@ class _DynamicInputScreenState extends State { } } DateTime date = await _selectDate(context); - DateTime date1 = DateTime(date.year, date.month, date.day); + String dateString = date.toString().split(' ').first; + // DateTime date1 = DateTime(date.year, date.month, date.day); // getEitDffStructureList![index].fieldAnswer = date.toString(); ESERVICESDV eservicesdv; if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy/MM/dd HH:MM:SS').format(date1), + pIDCOLUMNNAME: formatDate(dateString), pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy/MM/dd HH:MM:SS').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } else { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), + pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }, ).paddingOnly(bottom: 12); } else if (model.fORMATTYPE == "Y") { String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? ""); if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { - if (displayText.contains(" 00:00:00")) { - displayText = displayText.replaceAll(" 00:00:00", ""); - } - if (!displayText.contains("-")) { - displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); - } + displayText = reverseFormatDate(displayText); + // if (displayText.contains(" 00:00:00")) { + // displayText = displayText.replaceAll(" 00:00:00", ""); + // } + // if (!displayText.contains("-")) { + // displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); + // } } return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), @@ -297,41 +526,40 @@ class _DynamicInputScreenState extends State { if (tempDate.contains("00:00:00")) { tempDate = tempDate.replaceAll("00:00:00", '').trim(); } - if(tempDate.contains("/")) { + if (tempDate.contains("/")) { selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate); } else { selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate); } - } else { selectedDate = DateTime.parse(getEitDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); } } DateTime date = await _selectDate(context); - DateTime date1 = DateTime(date.year, date.month, date.day); + String dateString = date.toString().split(' ').first; // getEitDffStructureList![index].fieldAnswer = date.toString(); ESERVICESDV eservicesdv; if (getEitDffStructureList![index].isDefaultTypeIsCDPS) { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy/MM/dd HH:MM:SS').format(date1), + pIDCOLUMNNAME: formatDate(dateString), pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd HH:MM:SS').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } else { eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), + pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); } getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }, ).paddingOnly(bottom: 12); @@ -347,21 +575,22 @@ class _DynamicInputScreenState extends State { isReadOnly: model.rEADONLY == "Y", ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + if (model.rEADONLY != "Y") + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], - onSelected: (int popipIndex) { + onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", - pRETURNSTATUS: getEitDffStructureList![popipIndex].dEFAULTVALUE, + pRETURNSTATUS: "null", //getEitDffStructureList![popipIndex].dEFAULTVALUE, pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }); } @@ -380,21 +609,19 @@ class _DynamicInputScreenState extends State { isReadOnly: model.rEADONLY == "Y", ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + if (model.rEADONLY != "Y") + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(value: i, child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!)), ], - onSelected: (int popipIndex) { - ESERVICESDV eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, - pRETURNMSG: "null", - pRETURNSTATUS: getEitDffStructureList![popipIndex].dEFAULTVALUE, - pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); + onSelected: (int popipIndex) async { + ESERVICESDV eservicesdv = + ESERVICESDV(pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", pRETURNSTATUS: "null", pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }); } @@ -431,20 +658,20 @@ class _DynamicInputScreenState extends State { } } DateTime date = await _selectDate(context); - DateTime date1 = DateTime(date.year, date.month, date.day); + String dateString = date.toString().split(' ').first; getEitDffStructureList![index].fieldAnswer = date.toString(); ESERVICESDV eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), + pIDCOLUMNNAME: dateString, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }, ).paddingOnly(bottom: 12); @@ -471,10 +698,10 @@ class _DynamicInputScreenState extends State { getEitDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { - calGetValueSetValues(model); + await calGetValueSetValues(model); } if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - getDefaultValues(model); + await getDefaultValues(model); } }, ).paddingOnly(bottom: 12); @@ -487,7 +714,7 @@ class _DynamicInputScreenState extends State { ).objectContainerView(); } - DateTime selectedDate = DateTime.now(); + DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); Future _selectDate(BuildContext context) async { DateTime time = selectedDate; @@ -516,6 +743,7 @@ class _DynamicInputScreenState extends State { time = picked; } } + time = DateTime(time.year, time.month, time.day); return time; } @@ -559,4 +787,59 @@ class _DynamicInputScreenState extends State { } return time; } + + String reverseFormatDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('/', '-'); + formattedDate = formattedDate.replaceAll(' 00:00:00', ''); + } else { + formattedDate = date; + } + return formattedDate; + } + + String formatStandardDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('-', '/'); + } else { + formattedDate = date; + } + return formattedDate; + } + + String reverseFormatStandardDate(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.replaceAll('/', '-'); + } else { + formattedDate = date; + } + return formattedDate; + } + + String formatDate(String date) { + String formattedDate; + + if (date.isNotEmpty) { + date = date.substring(0, 10); + formattedDate = date.replaceAll('-', '/'); + formattedDate = formattedDate + ' 00:00:00'; + } else { + formattedDate = date; + } + return formattedDate; + } + + String formatDateNew(String date) { + String formattedDate; + if (date.isNotEmpty) { + formattedDate = date.split('T')[0]; + formattedDate = formattedDate + ' 00:00:00'; + } else { + formattedDate = date; + } + return formattedDate; + } } diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index 35126ec..7b98b33 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -17,6 +17,7 @@ class BasicDetails extends StatefulWidget { @override _BasicDetailsState createState() => _BasicDetailsState(); } +// TODO(Sultan): kindly follow structure of code written. use extension methods for widgets, use localization and format code class _BasicDetailsState extends State { String? fullName = ""; diff --git a/lib/widgets/app_logo.dart b/lib/widgets/app_logo.dart index 1c0bc37..3140c29 100644 --- a/lib/widgets/app_logo.dart +++ b/lib/widgets/app_logo.dart @@ -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() + ], + ); } }