Merge branch 'master' into development_sikander

faiz_marathon_signalR_critical
Sikander Saleem 2 years ago
commit 60ed124873

@ -310,6 +310,11 @@
"requestType": "نوع الطلب",
"employeeDigitalID": "هويةالموظف الرقمية",
"businessCard": "بطاقة العمل",
"checkOut":"وقت الخروج",
"regular":"منتظم",
"mark" : "علامة",
"selectMethodOfAttendance":"اختر طريقة تسجيل الحضور",
"comeNearHMGWifi": "HMG wifi من فضلك اقترب من",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -320,8 +325,11 @@
"completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية",
"basicDetails": "تفاصيل أساسية",
"address": "تبوك",
"contactDetails": "بيانات التواصل",
"familyDetails": "تفاصيل عائلية"
"familyDetails": "تفاصيل عائلية",
"effectiveDate": "تاريخ النفاذ",
"country": "دولة"
},
"clicked": {
"zero": "You clicked {} times!",

@ -310,6 +310,11 @@
"wantToReject": "Are you sure want to reject?",
"employeeDigitalID": "Employee Digital ID",
"businessCard": "Business Card",
"checkOut":"Check Out",
"regular":"Regular",
"mark" : "Mark",
"selectMethodOfAttendance":"Select the method to mark the attendance",
"comeNearHMGWifi": "Please come near to HMG wifi",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -320,8 +325,11 @@
"completeProfile": "Complete Profile",
"personalInformation": "Personal Information",
"basicDetails": "Basic Details",
"address": "Address",
"contactDetails": "Contact Details",
"familyDetails": "Family Members"
"familyDetails": "Family Members",
"effectiveDate": "Effective Date",
"country": "Country"
},
"clicked": {
"zero": "You clicked {} times!",

@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
@ -140,6 +140,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
AAF25E5FC427CABFCDCC628C /* [CP] Embed Pods Frameworks */,
8E1FBB2EA6B3AEDD9488054A /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -156,7 +157,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@ -234,6 +235,23 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
8E1FBB2EA6B3AEDD9488054A /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -358,7 +376,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.mohemFlutterApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -482,7 +503,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.mohemFlutterApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -501,7 +525,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.mohemFlutterApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

@ -41,5 +41,7 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>

@ -10,10 +10,17 @@ import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
@ -91,7 +98,7 @@ class ProfileApiClient {
Future<GenericResponseModel> getDffStructure(String pFunctionName, String uRL, String requestType) async {
String url = ApiConsts.erpRest + uRL;
Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName, "P_REQUEST_TYPE": requestType};
Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_REQUEST_TYPE": pFunctionName, "P_COUNTRY_CODE": "SA"};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
@ -139,24 +146,30 @@ class ProfileApiClient {
}, url, postParams);
}
Future<SubmitContactTransactionList?> submetConatctTransaction(String pFunctionName,String actionType, int contactRelationId, String date,) async {
Future<SubmitContactTransactionList?> submetConatctTransaction(
String pFunctionName,
String actionType,
int contactRelationId,
String date,
) async {
String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_MENU_TYPE":"E",
"P_SELECTED_RESP_ID":-999,
"P_FUNCTION_NAME":pFunctionName,
"EITTransactionTBL":
[{
"TRANSACTION_NUMBER":1,
"NAME":"DATE_END",
"VARCHAR2_VALUE":null,
"NUMBER_VALUE":null,
"DATE_VALUE":date,
}],
"P_CONTACT_RELATIONSHIP_ID":contactRelationId,
"P_ACTION":actionType,
"PayrollCodeStr":"CS",
"LegislationCodeStr":"SA",
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME": pFunctionName,
"EITTransactionTBL": [
{
"TRANSACTION_NUMBER": 1,
"NAME": "DATE_END",
"VARCHAR2_VALUE": null,
"NUMBER_VALUE": null,
"DATE_VALUE": date,
}
],
"P_CONTACT_RELATIONSHIP_ID": contactRelationId,
"P_ACTION": actionType,
"PayrollCodeStr": "CS",
"LegislationCodeStr": "SA",
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
@ -165,7 +178,7 @@ class ProfileApiClient {
}, url, postParams);
}
Future<GetApprovesList?> getApproves(String action, String comments,int transactionId, String itemKey) async {
Future<GetApprovesList?> getApproves(String action, String comments, int transactionId, String itemKey) async {
String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST";
Map<String, dynamic> postParams = {
"P_AME_TRANSACTION_TYPE": "SSHRMS",
@ -178,7 +191,7 @@ class ProfileApiClient {
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
// return responseData.getApprovesList;
// return responseData.getApprovesList;
return (responseData.getApprovesList?.length ?? 0) > 0 ? responseData.getApprovesList!.first : null;
}, url, postParams);
}
@ -201,7 +214,7 @@ class ProfileApiClient {
}, url, postParams);
}
Future<StartEitApprovalProcess?> startPhoneApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
Future<StartPhoneApprovalProcess?> startPhoneApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_PHONES_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
@ -214,18 +227,106 @@ class ProfileApiClient {
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startEitApprovalProcess;
return responseData.startPhonesApprovalProcessList;
}, url, postParams);
}
Future<StartAddressApprovalProcess?> startAddressApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_ADDRESS_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
"P_ITEM_KEY": itemKey,
"P_TRANSACTION_ID": transactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startAddressApprovalProcessList;
}, url, postParams);
}
Future<SubmitBasicDetailsTransactionList> submitBasicDetailsTransaction(String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list, int correctOrNew) async {
String url = "${ApiConsts.erpRest}SUBMIT_BASIC_DET_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_FUNCTION_NAME": pFunctionName,
"P_ACTION_TYPE": correctOrNew == 1 ? 'CORRECT' : 'CHANGE',
//"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.submitBasicDetTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<StartAddressApprovalProcess?> startBasicDetailsApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_BASIC_DET_APPR_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
"P_ITEM_KEY": itemKey,
"P_TRANSACTION_ID": transactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startAddressApprovalProcessList;
}, url, postParams);
}
Future<SubmitAddressTransaction> submitAddressTransaction(
String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list, int correctOrNew, String countryCode, String effectiveDate) async {
String url = "${ApiConsts.erpRest}SUBMIT_ADDRESS_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_COUNTRY_CODE": countryCode, //"SA",
"P_DESC_FLEX_CONTEXT_CODE": "SA",
"P_FUNCTION_NAME": pFunctionName,
"P_ACTION": correctOrNew == 1 ? 'CORRECT' : 'NEW',
"P_EFFECTIVE_DATE": effectiveDate,
//"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.submitAddressTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<List<GetCountriesListModel>> getCountriesList() async {
String url = "${ApiConsts.erpRest}GET_COUNTRIES";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getCountriesList ?? [];
}, url, postParams);
}
// add & update family member
Future<List<GetBasicDetDffStructureList>> getBasicDetDffStructure() async {
String url = "${ApiConsts.erpRest}GET_BASIC_DET_DFF_STRUCTURE";
Map<String, dynamic> postParams = {
"P_FUNCTION_NAME": "HR_PERINFO_SS",
"P_MENU_TYPE": "E",
"P_REQUEST_TYPE": "CONTACT",
"P_SELECTED_RESP_ID": -999};
Map<String, dynamic> postParams = {"P_FUNCTION_NAME": "HR_PERINFO_SS", "P_MENU_TYPE": "E", "P_REQUEST_TYPE": "CONTACT", "P_SELECTED_RESP_ID": -999};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
@ -237,7 +338,7 @@ class ProfileApiClient {
Future<List<GetContactColsStructureList>> getContactColsStructureList(String actionType) async {
String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE";
Map<String, dynamic> postParams = {
"P_ACTION":actionType,
"P_ACTION": actionType,
"P_FUNCTION_NAME": "HR_PERINFO_SS",
};
postParams.addAll(AppState().postParamsJson);
@ -247,13 +348,13 @@ class ProfileApiClient {
}, url, postParams);
}
// update family member
// update family member
Future<List<GetContactDetailsList>> getContactDetailsList(int contactRelationId) async {
String url = "${ApiConsts.erpRest}GET_CONTACT_DETAILS";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_CONTACT_RELATIONSHIP_ID":contactRelationId,
"P_CONTACT_RELATIONSHIP_ID": contactRelationId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
@ -278,20 +379,20 @@ class ProfileApiClient {
}, url, postParams);
}
Future<SubmitContactTransactionList?> submetConatctTransactionAddAndUpdate(String actionType, int relationId ,List<Map<String, dynamic>> list) async {
Future<SubmitContactTransactionList?> submetConatctTransactionAddAndUpdate(String actionType, int relationId, List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME":"HR_PERINFO_SS",
"P_ACTION": actionType,
"P_CONTACT_RELATIONSHIP_ID": relationId,
};
postParams["EITTransactionTBL"] =list;
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.submitContactTransactionList;
}, url, postParams);
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME": "HR_PERINFO_SS",
"P_ACTION": actionType,
"P_CONTACT_RELATIONSHIP_ID": relationId,
};
postParams["EITTransactionTBL"] = list;
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.submitContactTransactionList;
}, url, postParams);
}
}

@ -18,13 +18,13 @@ import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart';
import 'package:mohem_flutter_app/ui/profile/add_update_family_member.dart';
import 'package:mohem_flutter_app/ui/profile/basic_details.dart';
import 'package:mohem_flutter_app/ui/profile/contact_details.dart';
import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart';
import 'package:mohem_flutter_app/ui/profile/family_members.dart';
import 'package:mohem_flutter_app/ui/profile/personal_info.dart';
import 'package:mohem_flutter_app/ui/screens/announcements/announcement_details.dart';
import 'package:mohem_flutter_app/ui/screens/announcements/announcements.dart';
import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart';
// import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart';
import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_home.dart';
@ -69,7 +69,7 @@ class AppRoutes {
//profile
static const String addDynamicInputProfile = 'addDynamicInputProfile';
static const String addDynamicAddressScreen = 'addDynamicAddressProfile';
//Attendance
static const String attendance = "/attendance";
static const String monthlyAttendance = "/monthlyAttendance";
@ -146,6 +146,8 @@ class AppRoutes {
dynamicScreen: (context) => DynamicListViewScreen(),
addDynamicInput: (context) => DynamicInputScreen(),
addDynamicInputProfile: (context) => DynamicInputScreenProfile(),
addDynamicAddressScreen: (context) => DynamicInputScreenAddress(),
deleteFamilyMember: (context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int),
requestSubmitScreen: (context) => RequestSubmitScreen(),
addUpdateFamilyMember: (context) => AddUpdateFamilyMember(),

@ -323,6 +323,11 @@ class CodegenLoader extends AssetLoader{
"requestType": "نوع الطلب",
"employeeDigitalID": "هويةالموظف الرقمية",
"businessCard": "بطاقة العمل",
"checkOut": "وقت الخروج",
"regular": "منتظم",
"mark": "علامة",
"selectMethodOfAttendance": "اختر طريقة تسجيل الحضور",
"comeNearHMGWifi": "HMG wifi من فضلك اقترب من",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -333,8 +338,11 @@ class CodegenLoader extends AssetLoader{
"completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية",
"basicDetails": "تفاصيل أساسية",
"address": "تبوك",
"contactDetails": "بيانات التواصل",
"familyDetails": "تفاصيل عائلية"
"familyDetails": "تفاصيل عائلية",
"effectiveDate": "تاريخ النفاذ",
"country": "دولة"
},
"clicked": {
"zero": "You clicked {} times!",
@ -663,6 +671,11 @@ static const Map<String,dynamic> en_US = {
"wantToReject": "Are you sure want to reject?",
"employeeDigitalID": "Employee Digital ID",
"businessCard": "Business Card",
"checkOut": "Check Out",
"regular": "Regular",
"mark": "Mark",
"selectMethodOfAttendance": "Select the method to mark the attendance",
"comeNearHMGWifi": "Please come near to HMG wifi",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -673,8 +686,11 @@ static const Map<String,dynamic> en_US = {
"completeProfile": "Complete Profile",
"personalInformation": "Personal Information",
"basicDetails": "Basic Details",
"address": "Address",
"contactDetails": "Contact Details",
"familyDetails": "Family Members"
"familyDetails": "Family Members",
"effectiveDate": "Effective Date",
"country": "Country"
},
"clicked": {
"zero": "You clicked {} times!",

@ -311,6 +311,11 @@ abstract class LocaleKeys {
static const requestType = 'requestType';
static const employeeDigitalID = 'employeeDigitalID';
static const businessCard = 'businessCard';
static const checkOut = 'checkOut';
static const regular = 'regular';
static const mark = 'mark';
static const selectMethodOfAttendance = 'selectMethodOfAttendance';
static const comeNearHMGWifi = 'comeNearHMGWifi';
static const profile_reset_password_label = 'profile.reset_password.label';
static const profile_reset_password_username = 'profile.reset_password.username';
static const profile_reset_password_password = 'profile.reset_password.password';
@ -319,8 +324,11 @@ abstract class LocaleKeys {
static const profile_completeProfile = 'profile.completeProfile';
static const profile_personalInformation = 'profile.personalInformation';
static const profile_basicDetails = 'profile.basicDetails';
static const profile_address = 'profile.address';
static const profile_contactDetails = 'profile.contactDetails';
static const profile_familyDetails = 'profile.familyDetails';
static const profile_effectiveDate = 'profile.effectiveDate';
static const profile_country = 'profile.country';
static const profile = 'profile';
static const clicked = 'clicked';
static const gender_with_arg = 'gender.with_arg';

@ -1,7 +1,7 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
@ -24,7 +24,6 @@ var logger = Logger(
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();
await Firebase.initializeApp();
AppState().setPostParamsModel(
PostParamsModel(channel: 31, versionID: 5.0, mobileType: Platform.isAndroid ? "android" : "ios"),
);

@ -54,11 +54,17 @@ import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_address_dff_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart';
@ -117,7 +123,7 @@ class GenericResponseModel {
String? companyImageDescription;
String? companyImageURL;
String? companyMainCompany;
String? countryList;
List<GetCountriesListModel>? countryList;
String? createVacationRuleList;
String? deleteAttachmentList;
String? deleteVacationRuleList;
@ -131,7 +137,7 @@ class GenericResponseModel {
List<String>? getAbsenceTransactionList;
List<GetAccrualBalancesList>? getAccrualBalancesList;
List<GetActionHistoryList>? getActionHistoryList;
List<String>? getAddressDffStructureList;
List<GetAddressDffStructureList>? getAddressDffStructureList;
List<String>? getAddressNotificationBodyList;
List<GetApprovesList>? getApprovesList;
List<GetAttachementList>? getAttachementList;
@ -151,7 +157,7 @@ class GenericResponseModel {
List<GetContactDetailsList>? getContactDetailsList;
List<GetContactDffStructureList>? getContactDffStructureList;
GetContactNotificationBodyList? getContactNotificationBodyList;
List<String>? getCountriesList;
List<GetCountriesListModel>? getCountriesList;
List<GetDayHoursTypeDetailsList>? getDayHoursTypeDetailsList;
List<GetDeductionsList>? getDeductionsList;
GetDefaultValueList? getDefaultValueList;
@ -295,17 +301,17 @@ class GenericResponseModel {
String? sFHGetPoNotificationBodyList;
String? sFHGetPrNotificationBodyList;
String? startAbsenceApprovalProccess;
String? startAddressApprovalProcessList;
StartAddressApprovalProcess? startAddressApprovalProcessList;
String? startBasicDetApprProcessList;
String? startCeiApprovalProcess;
String? startContactApprovalProcessList;
StartEitApprovalProcess? startEitApprovalProcess;
String? startHrApprovalProcessList;
String? startPhonesApprovalProcessList;
StartPhoneApprovalProcess? startPhonesApprovalProcessList;
String? startSitApprovalProcess;
String? startTermApprovalProcessList;
String? submitAddressTransactionList;
String? submitBasicDetTransactionList;
SubmitAddressTransaction? submitAddressTransactionList;
SubmitBasicDetailsTransactionList? submitBasicDetTransactionList;
String? submitCEITransactionList;
String? submitCcpTransactionList;
SubmitContactTransactionList? submitContactTransactionList;
@ -649,7 +655,13 @@ class GenericResponseModel {
companyImageDescription = json['CompanyImageDescription'];
companyImageURL = json['CompanyImageURL'];
companyMainCompany = json['CompanyMainCompany'];
countryList = json['CountryList'];
if (json['CountryList'] != null) {
countryList = <GetCountriesListModel>[];
json['CountryList'].forEach((v) {
countryList!.add(new GetCountriesListModel.fromJson(v));
});
}
createVacationRuleList = json['CreateVacationRuleList'];
deleteAttachmentList = json['DeleteAttachmentList'];
deleteVacationRuleList = json['DeleteVacationRuleList'];
@ -677,7 +689,12 @@ class GenericResponseModel {
});
}
getAddressDffStructureList = json['GetAddressDffStructureList'];
if (json['GetAddressDffStructureList'] != null) {
getAddressDffStructureList = <GetAddressDffStructureList>[];
json['GetAddressDffStructureList'].forEach((v) {
getAddressDffStructureList!.add(new GetAddressDffStructureList.fromJson(v));
});
}
getAddressNotificationBodyList = json['GetAddressNotificationBodyList'];
if (json['GetApprovesList'] != null) {
@ -742,7 +759,14 @@ class GenericResponseModel {
});
}
getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]);
getCountriesList = json['GetCountriesList'];
if (json['GetCountriesList'] != null) {
getCountriesList = <GetCountriesListModel>[];
json['GetCountriesList'].forEach((v) {
getCountriesList!.add(new GetCountriesListModel.fromJson(v));
});
}
if (json['GetDayHoursTypeDetailsList'] != null) {
getDayHoursTypeDetailsList = <GetDayHoursTypeDetailsList>[];
json['GetDayHoursTypeDetailsList'].forEach((v) {
@ -1146,18 +1170,21 @@ class GenericResponseModel {
sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList'];
sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList'];
startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'];
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'];
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? new StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null;
startBasicDetApprProcessList = json['StartBasicDetApprProcessList'];
startCeiApprovalProcess = json['StartCeiApprovalProcess'];
startContactApprovalProcessList = json['StartContactApprovalProcessList'];
startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null;
startHrApprovalProcessList = json['StartHrApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? new StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null;
startSitApprovalProcess = json['StartSitApprovalProcess'];
startTermApprovalProcessList = json['StartTermApprovalProcessList'];
submitAddressTransactionList = json['SubmitAddressTransactionList'];
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'];
submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? new SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null;
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? new SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null;
submitCEITransactionList = json['SubmitCEITransactionList'];
submitCcpTransactionList = json['SubmitCcpTransactionList'];
submitContactTransactionList = json['SubmitContactTransactionList'] != null ? new SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null;
@ -1264,7 +1291,9 @@ class GenericResponseModel {
data['CompanyImageDescription'] = this.companyImageDescription;
data['CompanyImageURL'] = this.companyImageURL;
data['CompanyMainCompany'] = this.companyMainCompany;
data['CountryList'] = this.countryList;
if (this.countryList != null) {
data['CountryList'] = this.countryList!.map((v) => v.toJson()).toList();
}
data['CreateVacationRuleList'] = this.createVacationRuleList;
data['DeleteAttachmentList'] = this.deleteAttachmentList;
data['DeleteVacationRuleList'] = this.deleteVacationRuleList;
@ -1564,8 +1593,14 @@ class GenericResponseModel {
data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList;
data['StartSitApprovalProcess'] = this.startSitApprovalProcess;
data['StartTermApprovalProcessList'] = this.startTermApprovalProcessList;
data['SubmitAddressTransactionList'] = this.submitAddressTransactionList;
data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList;
if (this.submitAddressTransactionList != null) {
data['SubmitAddressTransactionList'] = this.submitAddressTransactionList!.toJson();
}
if (this.submitBasicDetTransactionList != null) {
data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList!.toJson();
}
data['SubmitCEITransactionList'] = this.submitCEITransactionList;
data['SubmitCcpTransactionList'] = this.submitCcpTransactionList;
data['SubmitContactTransactionList'] = this.submitContactTransactionList;

@ -0,0 +1,189 @@
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
class GetAddressDffStructureList {
String? aLPHANUMERICALLOWEDFLAG;
String? aPPLICATIONCOLUMNNAME;
String? cHILDSEGMENTSVS;
Null? cHILDSEGMENTSVSSplited;
String? dEFAULTTYPE;
String? dEFAULTVALUE;
String? dESCFLEXCONTEXTCODE;
String? dESCFLEXCONTEXTNAME;
String? dESCFLEXNAME;
String? dISPLAYFLAG;
String? eNABLEDFLAG;
ESERVICESDV? eSERVICESDV;
List<ESERVICESVS>? eSERVICESVS;
String? fLEXVALUESETNAME;
String? fORMATTYPE;
String? fORMATTYPEDSP;
bool? isEmptyOption;
String? lONGLISTFLAG;
int? mAXIMUMSIZE;
String? mAXIMUMVALUE;
String? mINIMUMVALUE;
String? mOBILEENABLED;
String? nUMBERPRECISION;
String? nUMERICMODEENABLEDFLAG;
String? pARENTSEGMENTSDV;
List<Null>? pARENTSEGMENTSDVSplited;
String? pARENTSEGMENTSVS;
List<Null>? pARENTSEGMENTSVSSplitedVS;
String? rEADONLY;
String? rEQUIREDFLAG;
String? sEGMENTNAME;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? uPPERCASEONLYFLAG;
String? uSEDFLAG;
String? vALIDATIONTYPE;
String? vALIDATIONTYPEDSP;
GetEmployeeAddressList? getEmployeeAddressList;
GetAddressDffStructureList(
{this.aLPHANUMERICALLOWEDFLAG,
this.aPPLICATIONCOLUMNNAME,
this.cHILDSEGMENTSVS,
this.cHILDSEGMENTSVSSplited,
this.dEFAULTTYPE,
this.dEFAULTVALUE,
this.dESCFLEXCONTEXTCODE,
this.dESCFLEXCONTEXTNAME,
this.dESCFLEXNAME,
this.dISPLAYFLAG,
this.eNABLEDFLAG,
this.eSERVICESDV,
this.eSERVICESVS,
this.fLEXVALUESETNAME,
this.fORMATTYPE,
this.fORMATTYPEDSP,
this.isEmptyOption,
this.lONGLISTFLAG,
this.mAXIMUMSIZE,
this.mAXIMUMVALUE,
this.mINIMUMVALUE,
this.mOBILEENABLED,
this.nUMBERPRECISION,
this.nUMERICMODEENABLEDFLAG,
this.pARENTSEGMENTSDV,
this.pARENTSEGMENTSDVSplited,
this.pARENTSEGMENTSVS,
this.pARENTSEGMENTSVSSplitedVS,
this.rEADONLY,
this.rEQUIREDFLAG,
this.sEGMENTNAME,
this.sEGMENTPROMPT,
this.sEGMENTSEQNUM,
this.uPPERCASEONLYFLAG,
this.uSEDFLAG,
this.vALIDATIONTYPE,
this.vALIDATIONTYPEDSP,
this.getEmployeeAddressList});
GetAddressDffStructureList.fromJson(Map<String, dynamic> json) {
aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG'];
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS'];
cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited'];
dEFAULTTYPE = json['DEFAULT_TYPE'];
dEFAULTVALUE = json['DEFAULT_VALUE'];
dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE'];
dESCFLEXCONTEXTNAME = json['DESC_FLEX_CONTEXT_NAME'];
dESCFLEXNAME = json['DESC_FLEX_NAME'];
dISPLAYFLAG = json['DISPLAY_FLAG'];
eNABLEDFLAG = json['ENABLED_FLAG'];
eSERVICESDV = json['E_SERVICES_DV'] != null ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) : null;
if (json['E_SERVICES_VS'] != null) {
eSERVICESVS = <ESERVICESVS>[];
json['E_SERVICES_VS'].forEach((v) {
eSERVICESVS!.add(new ESERVICESVS.fromJson(v));
});
}
fLEXVALUESETNAME = json['FLEX_VALUE_SET_NAME'];
fORMATTYPE = json['FORMAT_TYPE'];
fORMATTYPEDSP = json['FORMAT_TYPE_DSP'];
isEmptyOption = json['IsEmptyOption'];
lONGLISTFLAG = json['LONGLIST_FLAG'];
mAXIMUMSIZE = json['MAXIMUM_SIZE'];
mAXIMUMVALUE = json['MAXIMUM_VALUE'];
mINIMUMVALUE = json['MINIMUM_VALUE'];
mOBILEENABLED = json['MOBILE_ENABLED'];
nUMBERPRECISION = json['NUMBER_PRECISION'];
nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG'];
pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV'];
if (json['PARENT_SEGMENTS_DV_Splited'] != null) {
pARENTSEGMENTSDVSplited = <Null>[];
json['PARENT_SEGMENTS_DV_Splited'].forEach((v) {
pARENTSEGMENTSDVSplited!.add(v);
});
}
pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS'];
if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) {
pARENTSEGMENTSVSSplitedVS = <Null>[];
json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) {
pARENTSEGMENTSVSSplitedVS!.add(v);
});
}
rEADONLY = json['READ_ONLY'];
rEQUIREDFLAG = json['REQUIRED_FLAG'];
sEGMENTNAME = json['SEGMENT_NAME'];
sEGMENTPROMPT = json['SEGMENT_PROMPT'];
sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM'];
uPPERCASEONLYFLAG = json['UPPERCASE_ONLY_FLAG'];
uSEDFLAG = json['USED_FLAG'];
vALIDATIONTYPE = json['VALIDATION_TYPE'];
vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP'];
getEmployeeAddressList = json['GetEmployeeAddressList'] != null ? new GetEmployeeAddressList.fromJson(json['GetEmployeeAddressList']) : GetEmployeeAddressList();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ALPHANUMERIC_ALLOWED_FLAG'] = this.aLPHANUMERICALLOWEDFLAG;
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['CHILD_SEGMENTS_VS'] = this.cHILDSEGMENTSVS;
data['CHILD_SEGMENTS_VS_Splited'] = this.cHILDSEGMENTSVSSplited;
data['DEFAULT_TYPE'] = this.dEFAULTTYPE;
data['DEFAULT_VALUE'] = this.dEFAULTVALUE;
data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE;
data['DESC_FLEX_CONTEXT_NAME'] = this.dESCFLEXCONTEXTNAME;
data['DESC_FLEX_NAME'] = this.dESCFLEXNAME;
data['DISPLAY_FLAG'] = this.dISPLAYFLAG;
data['ENABLED_FLAG'] = this.eNABLEDFLAG;
if (this.eSERVICESDV != null) {
data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson();
}
if (this.eSERVICESVS != null) {
data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList();
}
data['FLEX_VALUE_SET_NAME'] = this.fLEXVALUESETNAME;
data['FORMAT_TYPE'] = this.fORMATTYPE;
data['FORMAT_TYPE_DSP'] = this.fORMATTYPEDSP;
data['IsEmptyOption'] = this.isEmptyOption;
data['LONGLIST_FLAG'] = this.lONGLISTFLAG;
data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE;
data['MAXIMUM_VALUE'] = this.mAXIMUMVALUE;
data['MINIMUM_VALUE'] = this.mINIMUMVALUE;
data['MOBILE_ENABLED'] = this.mOBILEENABLED;
data['NUMBER_PRECISION'] = this.nUMBERPRECISION;
data['NUMERIC_MODE_ENABLED_FLAG'] = this.nUMERICMODEENABLEDFLAG;
data['PARENT_SEGMENTS_DV'] = this.pARENTSEGMENTSDV;
if (this.pARENTSEGMENTSDVSplited != null) {
data['PARENT_SEGMENTS_DV_Splited'] = this.pARENTSEGMENTSDVSplited!.map((v) => v).toList();
}
data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS;
if (this.pARENTSEGMENTSVSSplitedVS != null) {
data['PARENT_SEGMENTS_VS_SplitedVS'] = this.pARENTSEGMENTSVSSplitedVS!.map((v) => v).toList();
}
data['READ_ONLY'] = this.rEADONLY;
data['REQUIRED_FLAG'] = this.rEQUIREDFLAG;
data['SEGMENT_NAME'] = this.sEGMENTNAME;
data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT;
data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM;
data['UPPERCASE_ONLY_FLAG'] = this.uPPERCASEONLYFLAG;
data['USED_FLAG'] = this.uSEDFLAG;
data['VALIDATION_TYPE'] = this.vALIDATIONTYPE;
data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP;
data['GetEmployeeAddressList'] != null ? this.getEmployeeAddressList!.toJson() : GetEmployeeAddressList();
return data;
}
}

@ -0,0 +1,18 @@
class GetCountriesListModel {
String? cOUNTRYCODE;
String? cOUNTRYNAME;
GetCountriesListModel({this.cOUNTRYCODE, this.cOUNTRYNAME});
GetCountriesListModel.fromJson(Map<String, dynamic> json) {
cOUNTRYCODE = json['COUNTRY_CODE'];
cOUNTRYNAME = json['COUNTRY_NAME'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['COUNTRY_CODE'] = this.cOUNTRYCODE;
data['COUNTRY_NAME'] = this.cOUNTRYNAME;
return data;
}
}

@ -0,0 +1,18 @@
class StartAddressApprovalProcess {
String? pRETURNMSG;
String? pRETURNSTATUS;
StartAddressApprovalProcess({this.pRETURNMSG, this.pRETURNSTATUS});
StartAddressApprovalProcess.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -0,0 +1,24 @@
class SubmitAddressTransaction {
String? pITEMKEY;
String? pRETURNMSG;
String? pRETURNSTATUS;
int? pTRANSACTIONID;
SubmitAddressTransaction({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID});
SubmitAddressTransaction.fromJson(Map<String, dynamic> json) {
pITEMKEY = json['P_ITEM_KEY'];
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
pTRANSACTIONID = json['P_TRANSACTION_ID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['P_ITEM_KEY'] = this.pITEMKEY;
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
data['P_TRANSACTION_ID'] = this.pTRANSACTIONID;
return data;
}
}

@ -0,0 +1,24 @@
class SubmitBasicDetailsTransactionList {
String? pITEMKEY;
String? pRETURNMSG;
String? pRETURNSTATUS;
int? pTRANSACTIONID;
SubmitBasicDetailsTransactionList({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID});
SubmitBasicDetailsTransactionList.fromJson(Map<String, dynamic> json) {
pITEMKEY = json['P_ITEM_KEY'];
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
pTRANSACTIONID = json['P_TRANSACTION_ID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['P_ITEM_KEY'] = this.pITEMKEY;
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
data['P_TRANSACTION_ID'] = this.pTRANSACTIONID;
return data;
}
}

@ -1,5 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
class ProfileMenu {
final String name;
@ -8,5 +7,6 @@ class ProfileMenu {
final String dynamicUrl;
final String functionName;
final String requestID;
ProfileMenu({this.name = '', this.icon = '', this.route = '', this.dynamicUrl = '', this.functionName = '', this.requestID = ''});
final GetMenuEntriesList menuEntries;
ProfileMenu({this.name = '', this.icon = '', this.route = '', this.dynamicUrl = '', this.functionName = '', this.requestID = '', required this.menuEntries});
}

@ -0,0 +1,18 @@
class StartPhoneApprovalProcess {
String? pRETURNMSG;
String? pRETURNSTATUS;
StartPhoneApprovalProcess({this.pRETURNMSG, this.pRETURNSTATUS});
StartPhoneApprovalProcess.fromJson(Map<String, dynamic> json) {
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -139,13 +139,13 @@ class _MonthlyAttendanceScreenState extends State<MonthlyAttendanceScreen> {
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
optionUI(LocaleKeys.scheduleDays.tr(), "${getTimeCardSummaryList?.sCHEDULEDAYS}"),
optionUI(LocaleKeys.scheduleDays.tr(), "${getTimeCardSummaryList?.sCHEDULEDAYS != null ? getTimeCardSummaryList!.sCHEDULEDAYS : 0}"),
6.width,
optionUI(LocaleKeys.offDays.tr(), "${getTimeCardSummaryList?.oFFDAYS}"),
optionUI(LocaleKeys.offDays.tr(), "${getTimeCardSummaryList?.oFFDAYS != null ? getTimeCardSummaryList!.oFFDAYS : 0}"),
6.width,
optionUI(LocaleKeys.nonAnalyzed.tr(), "${getTimeCardSummaryList?.uNAUTHORIZEDLEAVE}"),
optionUI(LocaleKeys.nonAnalyzed.tr(), "${getTimeCardSummaryList?.uNAUTHORIZEDLEAVE != null ? getTimeCardSummaryList!.uNAUTHORIZEDLEAVE : 0}"),
6.width,
optionUI(LocaleKeys.shortageHour.tr(), "${getTimeCardSummaryList?.sHORTAGEHRS}"),
optionUI(LocaleKeys.shortageHour.tr(), "${getTimeCardSummaryList?.sHORTAGEHRS != null ? getTimeCardSummaryList!.sHORTAGEHRS : 0}"),
],
).paddingOnly(left: 21, right: 21),
35.height,
@ -320,81 +320,87 @@ class _MonthlyAttendanceScreenState extends State<MonthlyAttendanceScreen> {
if (details.date.month == formattedDate.month && details.date.year == formattedDate.year) {
int val = details.date.day;
//check day is off
if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].dAYTYPE == 'OFF') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.greyACColor.withOpacity(.12),
shape: BoxShape.circle,
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
),
),
);
}
//check day is Present
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
gradient: const LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
if(getDayHoursTypeDetailsList.isNotEmpty)
{
if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].dAYTYPE == 'OFF') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.greyACColor.withOpacity(.12),
shape: BoxShape.circle,
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
//check day is Absent
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].aBSENTFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.backgroundBlackColor,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
);
}
//check day is Present
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
gradient: const LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
//check day is Absent
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].aBSENTFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.backgroundBlackColor,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
}
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -324,7 +326,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
child: AppDrawer(),
),
bottomNavigationBar: SizedBox(
height: 70,
height: Platform.isAndroid ? 70 : 100,
child: BottomNavigationBar(
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(

@ -134,7 +134,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
textStyle: TextStyle(color: Colors.white, fontSize: 32, letterSpacing: -1.92, fontWeight: FontWeight.bold, height: 1),
),
19.height,
"Shift Time".tr().toText12(color: MyColors.greyACColor),
LocaleKeys.shiftTime.tr().tr().toText12(color: MyColors.greyACColor),
(model.attendanceTracking!.pShtName ?? "00:00:00").toString().toText22(color: Colors.white, isBold: true),
],
),
@ -162,15 +162,15 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
children: [
Row(
children: [
commonStatusView("Check In", (model.attendanceTracking!.pSwipeIn) ?? "- - : - -"),
commonStatusView("Check Out", (model.attendanceTracking!.pSwipeOut) ?? "- - : - -")
commonStatusView(LocaleKeys.checkIn.tr(), (model.attendanceTracking!.pSwipeIn) ?? "- - : - -"),
commonStatusView(LocaleKeys.checkOut.tr(), (model.attendanceTracking!.pSwipeOut) ?? "- - : - -")
],
),
21.height,
Row(
children: [
commonStatusView("Late In", (model.attendanceTracking!.pLateInHours) ?? "- - : - -"),
commonStatusView("Regular", (model.attendanceTracking!.pScheduledHours) ?? "- - : - -")
commonStatusView(LocaleKeys.lateIn.tr(), (model.attendanceTracking!.pLateInHours) ?? "- - : - -"),
commonStatusView(LocaleKeys.regular.tr(), (model.attendanceTracking!.pScheduledHours) ?? "- - : - -")
],
),
],
@ -185,9 +185,9 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
"Mark".tr().toText12(),
"Attendance".tr().toText24(),
"Select the method to mark the attendance".tr().toText12(color: Color(0xff535353)),
LocaleKeys.mark.tr().tr().toText12(),
LocaleKeys.attendance.tr().tr().toText24(),
LocaleKeys.selectMethodOfAttendance.tr().tr().toText12(color: Color(0xff535353)),
24.height,
GridView(
physics: const NeverScrollableScrollPhysics(),
@ -312,7 +312,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
});
}
} else {
Utils.confirmDialog(context, "Please come near to HMG wifi");
Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr());
}
}

@ -2,6 +2,7 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -23,7 +24,6 @@ import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/input_widget.dart';
import 'package:shared_preferences/shared_preferences.dart';
class LoginScreen extends StatefulWidget {
LoginScreen({Key? key}) : super(key: key);
@ -41,7 +41,7 @@ class _LoginScreenState extends State<LoginScreen> {
CheckMobileAppVersionModel? _checkMobileAppVersion;
MemberLoginListModel? _memberLoginList;
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
late final FirebaseMessaging _firebaseMessaging;
bool _autoLogin = false;
@ -75,6 +75,8 @@ class _LoginScreenState extends State<LoginScreen> {
Future<void> checkFirebaseToken() async {
try {
Utils.showLoading(context);
await Firebase.initializeApp();
_firebaseMessaging = FirebaseMessaging.instance;
firebaseToken = await _firebaseMessaging.getToken();
loginInfo = await LoginApiClient().getMobileLoginInfoNEW(firebaseToken ?? "", Platform.isAndroid ? "android" : "ios");
if (loginInfo == null) {
@ -88,7 +90,7 @@ class _LoginScreenState extends State<LoginScreen> {
}
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
Utils.handleException(ex, context, (errorMsg){});
}
}

@ -92,13 +92,27 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
params!.pItemId,
params!.transactionId,
);
} else if(params!.approvalFlag == 'family_member') {
} else if (params!.approvalFlag == 'address') {
await ProfileApiClient().startAddressApprovalProcess(
"SUBMIT",
comments.text,
params!.pItemId,
params!.transactionId,
);
} else if (params!.approvalFlag == 'family_member') {
await ProfileApiClient().getApproves(
LocaleKeys.submit.tr(),
comments.text,
params!.transactionId!.toInt(),
params!.pItemId.toString(),
);
} else if (params!.approvalFlag == 'basicDetails') {
await ProfileApiClient().startBasicDetailsApprovalProcess(
"SUBMIT",
comments.text,
params!.pItemId,
params!.transactionId,
);
} else {
await MyAttendanceApiClient().startEitApprovalProcess(
LocaleKeys.submit.tr(),

@ -176,7 +176,6 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
List<Map<String, dynamic>> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) {
try {
Utils.showLoading(context);
List<PARENTSEGMENTSVSSplitedVS> parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? [];
List<PARENTSEGMENTSDVSplited> parentsList = structureElement.pARENTSEGMENTSDVSplited ?? [];
@ -718,7 +717,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
Future<DateTime> _selectDate(BuildContext context) async {
DateTime time = selectedDate;
if (!Platform.isIOS) {
if (Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
@ -749,7 +748,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
Future<TimeOfDay> _selectTime(BuildContext context) async {
TimeOfDay time = TimeOfDay(hour: selectedDate.hour, minute: selectedDate.minute);
if (!Platform.isIOS) {
if (Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(

@ -36,7 +36,7 @@ class _AddUpdateFamilyMemberState extends State<AddUpdateFamilyMember> {
List<GetContactDetailsList?> getContactDetailsList = [];
SubmitContactTransactionList? submitContactTransactionList;
dynamic args;
String? date="MM/DD/YYYY";
String? date = "MM/DD/YYYY";
// String actionType = "UPDATE";
GetApprovesList? getApprovesList;
@ -47,40 +47,36 @@ class _AddUpdateFamilyMemberState extends State<AddUpdateFamilyMember> {
super.initState();
}
void callAddAndUpdateFamilyMember() async {
try {
Utils.showLoading(context);
getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure();
getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(args['actionType']);
getContactDffStructureList = await ProfileApiClient().getContactDffStructureList();
if(args['actionType']== "ADD"){
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
}
else if(args['actionType']== "UPDATE") {
getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']);
if (args['actionType'] == "ADD") {
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
} else if (args['actionType'] == "UPDATE") {
getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']);
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
}
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -89,13 +85,11 @@ else if(args['actionType']== "UPDATE") {
}
}
@override
Widget build(BuildContext context) {
if (args == null) {
args = ModalRoute.of(context)!.settings.arguments;
callAddAndUpdateFamilyMember();
}
return Scaffold(
appBar: AppBarWidget(
@ -125,7 +119,7 @@ else if(args['actionType']== "UPDATE") {
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getBasicDetDffStructureList!.length),
ListView.separated(
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
@ -134,9 +128,9 @@ else if(args['actionType']== "UPDATE") {
separatorBuilder: (cxt, index) => 0.height,
itemCount: getContactDffStructureList!.length),
]).expanded,
SizedBox(
height: 50,
),
SizedBox(
height: 50,
),
],
)
: args['flag'] == 2
@ -194,14 +188,13 @@ else if(args['actionType']== "UPDATE") {
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) =>
<PopupMenuItem<int>>[
for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++)
PopupMenuItem<int>(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i),
],
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++)
PopupMenuItem<int>(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString();
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString();
setState(() {});
});
} else {
@ -213,7 +206,7 @@ else if(args['actionType']== "UPDATE") {
},
).paddingOnly(bottom: 12);
}
}else if (model.dATATYPE == "DATE") {
} else if (model.dATATYPE == "DATE") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
@ -245,12 +238,12 @@ else if(args['actionType']== "UPDATE") {
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
setState(() {});
});
@ -263,7 +256,7 @@ else if(args['actionType']== "UPDATE") {
},
).paddingOnly(bottom: 12);
}
}else if (model.fORMATTYPE == "X") {
} else if (model.fORMATTYPE == "X") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
@ -294,13 +287,13 @@ else if(args['actionType']== "UPDATE") {
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
setState(() {});
});
} else {
@ -312,7 +305,7 @@ else if(args['actionType']== "UPDATE") {
},
).paddingOnly(bottom: 12);
}
}else if (model.fORMATTYPE == "X") {
} else if (model.fORMATTYPE == "X") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
@ -353,7 +346,7 @@ else if(args['actionType']== "UPDATE") {
);
} else {
final DateTime? picked =
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
if (picked != null && picked != selectedDate) {
time = picked;
}
@ -391,85 +384,83 @@ else if(args['actionType']== "UPDATE") {
}
void submitUpdateForm() async {
try {
List<Map<String, dynamic>> values1 = getBasicDetDffStructureList!.map((e) {
String? dateVal ='';
String? vatcherVal ='';
int? numberVal;
if(e!.fORMATTYPE =='N'){
dateVal= null;
vatcherVal= null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else if(e.fORMATTYPE =='X'){
dateVal= e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal= null;
numberVal = null;
}else{
dateVal= null;
vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString();
numberVal = null;
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values2 = getContactDffStructureList!.map((e) {
//String tempVar = e!.getContactDetailsList!.vARCHAR2VALUE ?? "";
String? dateVal ='';
String? vatcherVal ='';
int? numberVal;
if(e!.fORMATTYPE =='N'){
dateVal= null;
vatcherVal= null;
numberVal= e!.getContactDetailsList!.nUMBERVALUE;
} else if(e.fORMATTYPE =='X'){
dateVal= e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal= null;
numberVal= null;
}else{
dateVal= null;
numberVal= null;
vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString();
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values3 = getContactColsStructureList!.map((e) {
// String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? "";
String? dateVal ='';
String? vatcherVal ='';
int? numberVal;
if(e!.dATATYPE =='VARCHAR2'){
dateVal= null;
numberVal= null;
vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString();
} else if(e.dATATYPE =='DATE'){
dateVal= e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal= null;
numberVal= null;
}else if(e.dATATYPE =='NUMBER'){
dateVal= null;
vatcherVal= null;
numberVal= e!.getContactDetailsList!.nUMBERVALUE;
}else{
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> valuesFinal = [...values1, ...values2,...values3];
Utils.showLoading(context);
if(args['actionType']== "ADD") {
var relationID = null;
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], relationID, valuesFinal);
}else if(args['actionType']== "UPDATE"){
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], args['relationID'], valuesFinal);
}
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var itemKey = submitContactTransactionList!.pITEMKEY;
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
setState(() {}
);
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
try {
List<Map<String, dynamic>> values1 = getBasicDetDffStructureList!.map((e) {
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.fORMATTYPE == 'N') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else if (e.fORMATTYPE == 'X') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else {
dateVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
numberVal = null;
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values2 = getContactDffStructureList!.map((e) {
//String tempVar = e!.getContactDetailsList!.vARCHAR2VALUE ?? "";
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.fORMATTYPE == 'N') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else if (e.fORMATTYPE == 'X') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else {
dateVal = null;
numberVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values3 = getContactColsStructureList!.map((e) {
// String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? "";
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.dATATYPE == 'VARCHAR2') {
dateVal = null;
numberVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
} else if (e.dATATYPE == 'DATE') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else if (e.dATATYPE == 'NUMBER') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else {}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> valuesFinal = [...values1, ...values2, ...values3];
Utils.showLoading(context);
if (args['actionType'] == "ADD") {
var relationID = null;
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], relationID, valuesFinal);
} else if (args['actionType'] == "UPDATE") {
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], args['relationID'], valuesFinal);
}
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var itemKey = submitContactTransactionList!.pITEMKEY;
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
}

@ -1,15 +1,20 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/string_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/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:provider/provider.dart';
class BasicDetails extends StatefulWidget {
const BasicDetails({Key? key}) : super(key: key);
@ -26,12 +31,17 @@ class _BasicDetailsState extends State<BasicDetails> {
String? civilIdentityNumber = "";
String? emailAddress = "";
String? employeeNo = "";
int correctOrNew = 1;
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
late MemberInformationListModel memberInformationList;
GetMenuEntriesList menuEntries = GetMenuEntriesList();
@override
void initState() {
super.initState();
memberInformationList = AppState().memberInformationList!;
List<GetMenuEntriesList> menuData = Provider.of<DashboardProviderModel>(context, listen: false).getMenuEntriesList!;
menuEntries = menuData.where((e) => e.requestType == 'BASIC_DETAILS').toList()[0];
getEmployeeBasicDetails();
basicDetails();
}
@ -127,14 +137,18 @@ class _BasicDetailsState extends State<BasicDetails> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
showAlertDialog(context);
}).insideContainer,
child: DefaultButton(
LocaleKeys.update.tr(),
menuEntries.updateButton == 'Y'
? () async {
showAlertDialog(context);
}
: null)
.insideContainer,
);
}
void showAlertDialog(BuildContext context) {
dynamic changeOrNew = 1;
Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr()),
onPressed: () {
@ -168,10 +182,10 @@ class _BasicDetailsState extends State<BasicDetails> {
title: Text(LocaleKeys.correctCurrentDatails.tr()),
leading: Radio(
value: 1,
groupValue: changeOrNew,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
@ -181,10 +195,10 @@ class _BasicDetailsState extends State<BasicDetails> {
title: Text(LocaleKeys.enterNewInfo.tr()),
leading: Radio(
value: 2,
groupValue: changeOrNew,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
@ -212,6 +226,6 @@ class _BasicDetailsState extends State<BasicDetails> {
void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile,
arguments: DynamicProfileParams(LocaleKeys.profile_basicDetails.tr(), 'HR_PERINFO_SS',
uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList));
uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList, correctOrNew: correctOrNew));
}
}

@ -3,14 +3,20 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_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/string_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/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart';
import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:provider/provider.dart';
class ContactDetails extends StatefulWidget {
const ContactDetails({Key? key}) : super(key: key);
@ -26,14 +32,20 @@ class _ContactDetailsState extends State<ContactDetails> {
String? civilIdentityNumber = "";
String? emailAddress = "";
String? employeeNo = "";
int? correctOrNew = 1;
List<GetEmployeePhonesList> getEmployeePhonesList = [];
List<GetEmployeeAddressList> getEmployeeAddressList = [];
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
GetMenuEntriesList menuEntriesPhone = GetMenuEntriesList();
GetMenuEntriesList menuEntriesAddress = GetMenuEntriesList();
@override
void initState() {
super.initState();
List<GetMenuEntriesList> menuData = Provider.of<DashboardProviderModel>(context, listen: false).getMenuEntriesList!;
menuEntriesPhone = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList()[0];
menuEntriesAddress = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList()[0];
getEmployeePhones();
setState(() {});
@ -71,7 +83,7 @@ class _ContactDetailsState extends State<ContactDetails> {
title: LocaleKeys.profile_contactDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
// bottomSheet: footer(),
body: SingleChildScrollView(
child: Column(children: [
Container(
@ -100,15 +112,17 @@ class _ContactDetailsState extends State<ContactDetails> {
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
updatePhone();
},
)
menuEntriesPhone.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
updatePhone();
},
)
: Container()
],
),
Column(
@ -145,13 +159,17 @@ class _ContactDetailsState extends State<ContactDetails> {
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {},
)
menuEntriesAddress.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
addUpdateAddress();
},
)
: Container()
],
),
Column(
@ -180,7 +198,7 @@ class _ContactDetailsState extends State<ContactDetails> {
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
// context.setLocale(const Locale("en", "US")); // to change Loacle
Profile();
ProfileScreen();
}).insideContainer,
);
}
@ -191,4 +209,85 @@ class _ContactDetailsState extends State<ContactDetails> {
MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)),
);
}
void addUpdateAddress() {
Widget cancelButton = TextButton(
child: Text("Cancel"),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text("Next"),
onPressed: () {
continueDynamicForms();
},
);
StatefulBuilder alert = StatefulBuilder(builder: (context, setState) {
return AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))),
title: Text("Confirm"),
content: Builder(builder: (context) {
// Get available height and width of the build area of this widget. Make a choice depending on the size.
var height = MediaQuery.of(context).size.height * .5;
return Container(
height: height,
child: Column(children: [
Text(
"Select the type of change you want to make.",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(),
Column(
children: [
ListTile(
title: Text("Correct or amend this address"),
leading: Radio(
value: 1,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
ListTile(
title: Text("Enter a new address if you have moved"),
leading: Radio(
value: 2,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
],
)
]));
}),
actions: [
cancelButton,
continueButton,
],
);
});
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicAddressScreen,
arguments: DynamicProfileParams(LocaleKeys.profile_address.tr(), 'HR_PERINFO_SS',
uRL: 'GET_ADDRESS_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeAddressList: getEmployeeAddressList, correctOrNew: correctOrNew!));
}
}

@ -1,50 +0,0 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
class DeleteFamilyMember extends StatefulWidget {
const DeleteFamilyMember({Key? key}) : super(key: key);
@override
_DeleteFamilyMemberState createState() => _DeleteFamilyMemberState();
}
class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: "Dependents And Beneficiaries",
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: Column(
children: [],
));
}
Widget footer() {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
color: MyColors.gradiantEndColor,
// margin: EdgeInsets.only(left: 50,right: 20),
padding: EdgeInsets.only(left: 50, right: 50),
child: TextButton(
style: TextButton.styleFrom(
primary: MyColors.white,
onSurface: MyColors.white,
backgroundColor: MyColors.gradiantEndColor,
),
onPressed: () {},
child: Text(
'Next',
style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600),
),
)),
],
);
}
}

@ -26,9 +26,9 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
String pFunctionName = "HR_PERINFO_SS";
String actionType = "DELETE";
// int? contactRelationId;
String? date="MM/DD/YYYY";
String? date = "MM/DD/YYYY";
String? datePar;
// String? itemKey;
// String? itemKey;
SubmitContactTransactionList? submitContactTransactionList;
GetApprovesList? getApprovesList;
@ -44,11 +44,12 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
try {
Utils.showLoading(context);
submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString());
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var itemKey = submitContactTransactionList!.pITEMKEY;
Utils.hideLoading(context);
// getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt(), itemKey.toString() );
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
setState(() {});
} catch (ex) {
@ -74,9 +75,9 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
isEnable: false,
onTap: () async {
DateTime dateValue = await _selectDate(context);
// DateTime date1 = DateTime(dateValue.year, dateValue.month, dateValue.day);
date = DateFormat('yyyy/MM/dd').format(dateValue);
datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue);
// DateTime date1 = DateTime(dateValue.year, dateValue.month, dateValue.day);
date = DateFormat('yyyy/MM/dd').format(dateValue);
datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue);
setState(() {});
// if (date !=null) {
// print(datePar);
@ -96,7 +97,7 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
children: [
Container(
color: MyColors.gradiantEndColor,
margin: EdgeInsets.only(bottom: 20, top: 20),
margin: EdgeInsets.only(bottom: 20, top: 20),
padding: EdgeInsets.only(left: 50, right: 50),
child: TextButton(
style: TextButton.styleFrom(
@ -106,7 +107,6 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
),
onPressed: () {
deleteFamilyMember(datePar);
},
child: Text(
LocaleKeys.next.tr(),

@ -0,0 +1,336 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/api/profile_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';
import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_address_dff_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.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';
class DynamicProfileParams {
String title;
String dynamicId;
String uRL;
String requestID;
String colsURL;
int correctOrNew;
List<GetEmployeeAddressList>? getEmployeeAddressList;
DynamicProfileParams(this.title, this.dynamicId,
{this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeAddressList = const <GetEmployeeAddressList>[], this.correctOrNew = 2});
}
class DynamicInputScreenAddress extends StatefulWidget {
DynamicInputScreenAddress({Key? key}) : super(key: key);
@override
_DynamicInputScreenState createState() {
return _DynamicInputScreenState();
}
}
class _DynamicInputScreenState extends State<DynamicInputScreenAddress> {
GenericResponseModel? genericResponseModel;
List<GetAddressDffStructureList>? getAddressDffStructureList;
SubmitAddressTransaction submitPhoneNumbers = SubmitAddressTransaction();
DynamicProfileParams? dynamicParams;
List<GetCountriesListModel> countriesList = [];
String dESCFLEXCONTEXTCODE = "";
String countryCode = 'SA';
String effectiveDate = '';
@override
void initState() {
super.initState();
}
void getTransactionsStructure() async {
try {
Utils.showLoading(context);
genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID);
getAddressDffStructureList = genericResponseModel?.getAddressDffStructureList ?? [];
if (dynamicParams!.correctOrNew == 1) {
getAddressDffStructureList?.forEach((element) {
dynamicParams!.getEmployeeAddressList!.forEach((userDetail) {
if (userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME) {
element.getEmployeeAddressList = userDetail;
}
});
});
} else {
getAddressDffStructureList!.insert(0, GetAddressDffStructureList(fORMATTYPE: 'X', sEGMENTPROMPT: LocaleKeys.profile_effectiveDate.tr()));
countriesList = await ProfileApiClient().getCountriesList();
List<ESERVICESVS> eSerivceList = [];
countriesList.forEach((element) {
eSerivceList.add(ESERVICESVS(
dESCRIPTION: element.cOUNTRYCODE,
vALUECOLUMNNAME: element.cOUNTRYNAME,
));
});
getAddressDffStructureList!
.insert(1, GetAddressDffStructureList(fORMATTYPE: 'C', sEGMENTPROMPT: LocaleKeys.profile_country.tr(), eSERVICESVS: eSerivceList, getEmployeeAddressList: GetEmployeeAddressList()));
}
print(getAddressDffStructureList);
// genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID);
// getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? [];
// getBasicDetColsStructureList?.forEach((element) {
// element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
// });
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void calGetValueSetValues(GetAddressDffStructureList structureList) async {
try {
Utils.showLoading(context);
String segmentId = structureList.cHILDSEGMENTSVS!;
List<GetAddressDffStructureList> filteredList = getAddressDffStructureList?.where((element) => element.cHILDSEGMENTSVS == segmentId).toList() ?? [];
List<Map<String, dynamic>> values = filteredList
.map((e) => GetSetValuesRequestModel(
sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME)
.toJson())
.toList();
ESERVICESVS genericResponseModel = await MyAttendanceApiClient().getValueSetValues(structureList.cHILDSEGMENTSVS!, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values);
int index = getAddressDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS);
getAddressDffStructureList![index].eSERVICESVS!.add(genericResponseModel);
// getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? [];
//getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
if (dynamicParams == null) {
dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicProfileParams;
getTransactionsStructure();
}
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: dynamicParams!.title,
),
body: Column(
children: [
(getAddressDffStructureList == null
? const SizedBox()
: (getAddressDffStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: ListView(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
children: [
12.height,
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatType(getAddressDffStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getAddressDffStructureList!.length),
],
)))
.expanded,
// 12.height,
DefaultButton(
LocaleKeys.next.tr(),
(getAddressDffStructureList ?? []).isEmpty ? null : () => {validateTransaction()},
).insideContainer,
],
),
);
}
Widget parseDynamicFormatType(GetAddressDffStructureList model, int index) {
if (model.dISPLAYFLAG != "N") {
if (model.fORMATTYPE == "C") {
if (model.eSERVICESVS?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model?.getEmployeeAddressList!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popupIndex) {
model?.getEmployeeAddressList!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME;
model?.getEmployeeAddressList!.vARCHAR2VALUE = model.eSERVICESVS![popupIndex].dESCRIPTION;
setState(() {});
});
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.getEmployeeAddressList?.sEGMENTVALUEDSP ?? "",
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
model.getEmployeeAddressList?.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "N") {
if (model.eSERVICESVS?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget((model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model?.getEmployeeAddressList!.sEGMENTVALUEDSP ?? "",
isEnable: false, isPopup: true, isInputTypeNum: true)
.paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].dESCRIPTION!), value: i),
],
onSelected: (int popupIndex) {
model?.getEmployeeAddressList!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].dESCRIPTION;
model?.getEmployeeAddressList!.vARCHAR2VALUE = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME;
setState(() {});
});
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.getEmployeeAddressList?.sEGMENTVALUEDSP ?? "",
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
model.getEmployeeAddressList?.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "X") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pIDCOLUMNNAME ?? (getAddressDffStructureList![index].dESCFLEXCONTEXTNAME ?? ""),
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
getAddressDffStructureList![index].dESCFLEXCONTEXTNAME = date.toString();
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
pRETURNMSG: "null",
pRETURNSTATUS: getAddressDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
getAddressDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
}
},
).paddingOnly(bottom: 12);
}
return const SizedBox();
} else {
return const SizedBox();
}
}
void validateTransaction() async {
try {
Utils.showLoading(context);
List<Map<String, dynamic>> values = getAddressDffStructureList!.map((e) {
String tempVar = '';
if (e.fORMATTYPE == "X") {
// for date format type, date format is changed
tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? "";
if (tempVar.isNotEmpty) {
DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
tempVar = DateFormat('dd/MMM/yyy').format(date);
if (e.aPPLICATIONCOLUMNNAME == null) {
effectiveDate = tempVar;
}
}
} else if (e.eSERVICESVS?.isNotEmpty ?? false) {
tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE!;
if (e.aPPLICATIONCOLUMNNAME == null) {
countryCode = tempVar;
}
} else {
tempVar = e.getEmployeeAddressList!.sEGMENTVALUEDSP ?? "";
}
return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson();
}).toList();
submitPhoneNumbers = await ProfileApiClient().submitAddressTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, dynamicParams!.correctOrNew, countryCode, effectiveDate);
print(values);
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(dynamicParams!.title, submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'address'));
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
DateTime selectedDate = DateTime.now();
Future<DateTime> _selectDate(BuildContext context) async {
DateTime time = selectedDate;
if (!Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
height: 250,
color: Colors.white,
child: CupertinoDatePicker(
backgroundColor: Colors.white,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (value) {
if (value != null && value != selectedDate) {
time = value;
}
},
initialDateTime: selectedDate,
),
),
);
} else {
final DateTime? picked =
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
if (picked != null && picked != selectedDate) {
time = picked;
}
}
return time;
}
}

@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
@ -31,10 +32,11 @@ class DynamicProfileParams {
String uRL;
String requestID;
String colsURL;
int correctOrNew;
List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList;
DynamicProfileParams(this.title, this.dynamicId,
{this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const <GetEmployeeBasicDetailsList>[]});
{this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const <GetEmployeeBasicDetailsList>[], this.correctOrNew = 2});
}
class DynamicInputScreenProfile extends StatefulWidget {
@ -61,18 +63,27 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
void getTransactionsStructure() async {
try {
Utils.showLoading(context);
genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID);
genericResponseModel = await ProfileApiClient().getDffStructure("BASIC_DETAILS", dynamicParams!.uRL, dynamicParams!.requestID);
getBasicDetDffStructureList = genericResponseModel?.getBasicDetDffStructureList ?? [];
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID);
getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? [];
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
if (dynamicParams!.correctOrNew == 1) {
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
} else {
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = new GetEmployeeBasicDetailsList();
});
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = GetEmployeeBasicDetailsList();
});
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -155,7 +166,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
// 12.height,
DefaultButton(
LocaleKeys.next.tr(),
(getBasicDetDffStructureList ?? []).isEmpty ? null : () => {validateTransaction()},
() => {validateTransaction()},
).insideContainer,
],
),
@ -173,7 +184,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.userBasicDetail?.sEGMENTVALUEDSP ?? "",
model.userBasicDetail?.aPPLICATIONCOLUMNNAME ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
@ -182,6 +193,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
],
onSelected: (int popupIndex) {
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME;
getBasicDetDffStructureList![index].userBasicDetail!.aPPLICATIONCOLUMNNAME = model.eSERVICESVS![popupIndex].dESCRIPTION;
setState(() {});
});
}
@ -234,21 +246,30 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
if (model.dATATYPE == "VARCHAR2") {
if (model.objectValuesList?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.userBasicDetail?.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem<int>(child: Text(model.objectValuesList![i].mEANING!), value: i),
],
onSelected: (int popupIndex) {
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem<int>(child: Text(model.objectValuesList![i].mEANING!), value: i),
],
onSelected: (int popupIndex) {
if (model.objectValuesList![popupIndex].cODE != '') {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![index].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION;
setState(() {});
});
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].mEANING, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].mEANING;
getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].cODE;
} else {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION;
getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].mEANING;
}
setState(() {});
},
);
}
return DynamicTextFieldWidget(
@ -264,13 +285,13 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
} else if (model.dATATYPE == "DATE") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.aPPLICATIONCOLUMNNAME ?? (getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? ""),
(getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE ?? ""),
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP = date.toString();
getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE = date.toString();
// ESERVICESDV eservicesdv = ESERVICESDV(
// pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
// pRETURNMSG: "null",
@ -327,8 +348,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
void validateTransaction() async {
try {
Utils.showLoading(context);
int numberValue = 0;
List<Map<String, dynamic>> values = getBasicDetDffStructureList!.map((e) {
String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? "";
if (e.fORMATTYPE == "X") {
// for date format type, date format is changed
tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? "";
@ -342,25 +365,25 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
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.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson());
List<Map<String, dynamic>> valuesCols = getBasicDetColsStructureList!.map((e) {
String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? "";
if (e.dATATYPE == "DATE") {
// for date format type, date format is changed
tempVar = e.userBasicDetail!.dATEVALUE ?? "";
if (tempVar.isNotEmpty) {
DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date);
}
if (e.dATATYPE == 'NUMBER') {
numberValue = e.userBasicDetail!.nUMBERVALUE!;
}
return ValidateEitTransactionModel(dATEVALUE: tempVar, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson();
return ValidateEitTransactionModel(
dATEVALUE: e.userBasicDetail!.dATEVALUE ?? "", nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberValue, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: e.userBasicDetail!.vARCHAR2VALUE ?? "")
.toJson();
}).toList();
List<Map<String, dynamic>> transactionValues = new List.from(values)..addAll(valuesCols);
print(transactionValues);
//genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values);
// SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values);
SubmitBasicDetailsTransactionList submitBasicDetails =
await ProfileApiClient().submitBasicDetailsTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, transactionValues, dynamicParams!.correctOrNew);
print(submitBasicDetails);
Utils.hideLoading(context);
// Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit'));
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(dynamicParams!.title, submitBasicDetails.pTRANSACTIONID!, submitBasicDetails.pITEMKEY!, 'basicDetails'));
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);

@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -200,7 +200,7 @@ class _FamilyMembersState extends State<FamilyMembers> {
));
}
Widget footer() {
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -210,9 +210,9 @@ class _FamilyMembersState extends State<FamilyMembers> {
],
),
child: DefaultButton(LocaleKeys.addNewFamilyMember.tr(), () async {
Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1, "actionType":"ADD"});
Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"});
// context.setLocale(const Locale("en", "US")); // to change Loacle
// Profile();
ProfileScreen();
}).insideContainer,
);
}
@ -231,7 +231,11 @@ class _FamilyMembersState extends State<FamilyMembers> {
LocaleKeys.ok.tr(),
),
onPressed: () {
Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag, "actionType": "UPDATE"}, );
Navigator.pushNamed(
context,
AppRoutes.addUpdateFamilyMember,
arguments: {"relationID": relationId, "flag": flag, "actionType": "UPDATE"},
);
},
);
AlertDialog alert = AlertDialog(

@ -106,7 +106,10 @@ class _PesonalInfoState extends State<PesonalInfo> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {}).insideContainer,
child: DefaultButton(
LocaleKeys.update.tr(),
() async {},
).insideContainer,
);
}
}

@ -4,15 +4,12 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.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';

@ -1,271 +0,0 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
class Profile extends StatefulWidget {
const Profile({Key? key}) : super(key: key);
@override
_ProfileState createState() => _ProfileState();
}
// todo '@fatima' use extension methods for widgets,7 dont use hard code strings, make it localize
class _ProfileState extends State<Profile> {
String? fullName = "";
String? maritalStatus = "";
String? birthDate = "";
String? civilIdentityNumber = "";
String? emailAddress = "";
String? employeeNo = "";
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
@override
void initState() {
super.initState();
getEmployeeBasicDetails();
basicDetails();
}
void getEmployeeBasicDetails() async {
try {
Utils.showLoading(context);
getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
Utils.hideLoading(context);
basicDetails();
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void basicDetails() {
for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) {
if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') {
fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
} else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'MARITAL_STATUS') {
maritalStatus = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
} else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'DATE_OF_BIRTH') {
birthDate = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
} else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'NATIONAL_IDENTIFIER') {
civilIdentityNumber = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
} else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'EMAIL_ADDRESS') {
emailAddress = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
} else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'EMPLOYEE_NUMBER') {
employeeNo = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
}
}
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: MyColors.lightGreenColor,
leading: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
icon: const Icon(
Icons.arrow_back_ios,
color: MyColors.backgroundBlackColor,
),
onPressed: () => Navigator.pop(context),
),
],
),
),
backgroundColor: MyColors.lightGreenColor,
body: Stack(children: [
Align(
alignment: Alignment.topRight,
child: Container(
height: 30,
width: 80,
padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5, bottom: 5),
decoration: BoxDecoration(
border: Border.all(
color: MyColors.gradiantEndColor,
style: BorderStyle.solid,
),
color: MyColors.gradiantEndColor,
borderRadius: BorderRadius.circular(100.0)),
child: InkWell(
onTap: () {},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.image,
size: 20,
color: Colors.white,
),
),
TextSpan(
text: " Edit",
),
],
),
),
)),
),
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 48),
height: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(30.0), topRight: Radius.circular(30.0)),
),
child: Column(
children: [
"$fullName".toText20(isBold: true, color: MyColors.blackColor),
"$employeeNo".toText12(isBold: false, color: MyColors.lightGrayColor),
"$emailAddress".toText12(isBold: false, color: MyColors.black),
SizedBox(
height: 5,
),
Divider(
color: MyColors.lightGreyE6Color,
height: 20,
thickness: 8,
indent: 0,
endIndent: 0,
),
Container(
padding: EdgeInsets.only(left: 10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
InkWell(
onTap: () {},
child: Row(
children: <Widget>[
SizedBox(
width: 15,
),
"Personal Information".toText16(isBold: true, color: MyColors.grey3AColor),
],
),
),
SizedBox(
height: 5,
),
InkWell(
onTap: () {},
child: Row(
children: <Widget>[
SizedBox(
width: 15,
),
"Basic Details".toText16(isBold: true, color: MyColors.grey3AColor),
],
),
),
SizedBox(
height: 5,
),
InkWell(
onTap: () {},
child: Row(
children: <Widget>[
SizedBox(
width: 20,
),
"Contact Details".toText16(isBold: true, color: MyColors.grey3AColor),
],
),
),
SizedBox(
height: 5,
),
InkWell(
onTap: () {},
child: Row(
children: <Widget>[
SizedBox(
width: 20,
),
"Family Members".toText16(isBold: true, color: MyColors.grey3AColor),
],
),
),
SizedBox(
height: 5,
),
],
),
),
],
).paddingOnly(top: 35, bottom: 36),
),
Align(
alignment: Alignment.topCenter,
child: SizedBox(
child: CircleAvatar(
radius: 40.0,
backgroundColor: Colors.white,
child: CircleAvatar(
child: Align(
alignment: Alignment.bottomRight,
// child: CircleAvatar(
// backgroundColor: Colors.white,
// radius: 12.0,
// child: Icon(
// Icons.camera_alt,
// size: 15.0,
// color: Color(0xFF404040),
// ),
// ),
),
radius: 38.0,
// url:"",
),
),
)),
])
// Container(
// margin: const EdgeInsets.only(top:50),
// decoration: const BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(30.0),
// topRight: Radius.circular(30.0))
// ),
// // color: MyColors.white,
// child: Stack(
// children: [
// Container(
// height: 30,
// color: MyColors.lightGreenColor,
// margin: const EdgeInsets.only(bottom: 20,),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// CircleAvatar(
// backgroundColor: Colors.grey.shade800,
// ),
// ],
// ),
// ),
// ListView(
// scrollDirection: Axis.vertical,
// children: [
// Column(
// children: [
// // 20.height,
// ],
// )
// ],
// ),
// ]
// ),
// ),
);
}
}

@ -253,7 +253,7 @@ class _MowadhafhiHRRequestState extends State<MowadhafhiHRRequest> {
children: [
title.toText16().expanded,
6.width,
SimpleButton("Add", () async {
SimpleButton(LocaleKeys.add.tr(), () async {
FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true);
if (result != null) {
attachmentFiles = attachmentFiles + result.paths.map((path) => File(path!)).toList();
@ -377,7 +377,7 @@ class _MowadhafhiHRRequestState extends State<MowadhafhiHRRequest> {
}
int? messageStatus = await MowadhafhiApiClient().submitRequest(selectedDepartment?.projectDepartmentId, description, projectID, selectedSection?.departmentSectionId.toString(),
selectedTopic?.sectionTopicId.toString(), int.parse(selectedServiceType), list);
Utils.showToast("Request created successfully");
Utils.showToast(LocaleKeys.requestCreatedSuccessfully.tr());
Utils.hideLoading(context);
Navigator.pop(context);
} catch (ex) {

@ -3,31 +3,42 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/config/routes.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/member_information_list_model.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:mohem_flutter_app/models/profile_menu.model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:provider/provider.dart';
// todo '@sultan' kindly follow structure of code written. use extension methods for widgets, also format code
class ProfileInFo extends StatelessWidget {
class ProfileInFo extends StatefulWidget {
ProfileInFo(this.memberInfo);
MemberInformationListModel memberInfo;
@override
State<ProfileInFo> createState() => _ProfileInFoState();
}
class _ProfileInFoState extends State<ProfileInFo> {
static List<GetMenuEntriesList> menuData = [];
String data = '.';
double sliderValue = 75;
List<ProfileMenu> menu = [
ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: 'personal-info.svg', route: AppRoutes.personalInfo, dynamicUrl: ''),
ProfileMenu(
name: LocaleKeys.profile_basicDetails.tr(),
icon: 'basic-details.svg',
route: AppRoutes.basicDetails,
),
ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: 'contact-details.svg', route: AppRoutes.contactDetails, dynamicUrl: ''),
ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: 'family-members.svg', route: AppRoutes.familyMembers, dynamicUrl: ''),
ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: 'personal-info.svg', route: AppRoutes.personalInfo, dynamicUrl: '', menuEntries: getMenuEntries('')),
ProfileMenu(name: LocaleKeys.profile_basicDetails.tr(), icon: 'basic-details.svg', route: AppRoutes.basicDetails, menuEntries: getMenuEntries('BASIC_DETAILS')),
ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: 'contact-details.svg', route: AppRoutes.contactDetails, dynamicUrl: '', menuEntries: getMenuEntries('ADDRESS')),
ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: 'family-members.svg', route: AppRoutes.familyMembers, dynamicUrl: '', menuEntries: getMenuEntries('CONTACT')),
];
@override
void setState(VoidCallback fn) {
super.setState(fn);
}
@override
Widget build(BuildContext context) {
return Container(
@ -35,11 +46,11 @@ class ProfileInFo extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
/// card header
customLabel(memberInfo.eMPLOYEENAME.toString(), 22, Colors.black, true),
customLabel(widget.memberInfo.eMPLOYEENAME.toString(), 22, Colors.black, true),
customLabel(memberInfo.eMPLOYEENUMBER.toString() + ' | ' + memberInfo.jOBNAME.toString(), 14, Colors.grey, false),
customLabel(widget.memberInfo.eMPLOYEENUMBER.toString() + ' | ' + widget.memberInfo.jOBNAME.toString(), 14, Colors.grey, false),
customLabel(memberInfo.eMPLOYEEEMAILADDRESS.toString(), 13, Colors.black, true),
customLabel(widget.memberInfo.eMPLOYEEEMAILADDRESS.toString(), 13, Colors.black, true),
Divider(height: 40, thickness: 8, color: const Color(0xffefefef)),
@ -47,22 +58,17 @@ class ProfileInFo extends StatelessWidget {
SizedBox(height: 10),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
children: [customLabel(LocaleKeys.year.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEYEARS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
),
Column(
children: [customLabel(LocaleKeys.month.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEMONTHS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
),
Column(
children: [customLabel(LocaleKeys.day.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEDAYS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
)
],
child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.center, children: [
Column(
children: [customLabel(LocaleKeys.year.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEYEARS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
),
),
Column(
children: [customLabel(LocaleKeys.month.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEMONTHS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
),
Column(
children: [customLabel(LocaleKeys.day.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEDAYS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)],
)
])),
Divider(height: 40, thickness: 8, color: const Color(0xffefefef)),
Container(
@ -143,3 +149,12 @@ class ProfileInFo extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: [Text(label, style: TextStyle(color: color, fontSize: size, fontWeight: isBold ? FontWeight.bold : FontWeight.normal))]));
}
GetMenuEntriesList getMenuEntries(String type) {
List<GetMenuEntriesList> data = _ProfileInFoState.menuData.where((GetMenuEntriesList test) => test.functionName == type).toList();
if (data.isNotEmpty) {
return data[0];
} else {
return GetMenuEntriesList();
}
}

@ -1,4 +1,6 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -42,7 +44,7 @@ class _QrScannerDialogState extends State<QrScannerDialog> {
Padding(
padding: const EdgeInsets.all(12.0),
child: DefaultButton(
"Cancel",
LocaleKeys.cancel.tr(),
() {
Navigator.pop(context);
},

Loading…
Cancel
Save