Merge branch 'master' into Fatima

# Conflicts:
#	lib/models/get_user_item_type_list.dart
#	lib/models/my_team/get_attendance_tracking_list_model.dart
#	lib/models/my_team/get_employee_subordinates_list.dart
#	lib/models/update_item_type_success_list.dart
#	lib/models/update_user_item_type_list.dart
#	lib/models/worklist/update_user_type_list.dart
#	lib/ui/my_team/view_attendance.dart
#	lib/ui/profile/contact_details.dart
merge-requests/1/merge
Fatimah Alshammari 3 years ago
commit bee1aef03e

@ -350,6 +350,12 @@
"itemType": "نوع العنصر",
"TurnNotificationsFor": "تفعيل الاشعارات",
"worklistSettings": "اعدادات الاشعارات",
"absenceType": "نوع الغياب",
"absenceCategory": "فئة الغياب",
"days": "أيام",
"hours": "ساعات",
"approvalStatus": "حالة القبول",
"absenceStatus": "حالة الغياب",
"profile": {
"reset_password": {
"label": "Reset Password",

@ -350,6 +350,12 @@
"itemType": "Item Type",
"TurnNotificationsFor": "Turn on notifications for",
"worklistSettings": "Worklist Settings",
"absenceType": "Absence Type",
"absenceCategory": "Absence Category",
"days": "Days",
"hours": "Hours",
"approvalStatus": "Approval Status",
"absenceStatus": "Absence Status",
"profile": {
"reset_password": {
"label": "Reset Password",

@ -0,0 +1,118 @@
import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart';
class LeaveBalanceApiClient {
static final LeaveBalanceApiClient _instance = LeaveBalanceApiClient._internal();
LeaveBalanceApiClient._internal();
factory LeaveBalanceApiClient() => _instance;
Future<List<GetAbsenceTransactionList>> getAbsenceTransactions(int pSelectedResopID) async {
String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS";
Map<String, dynamic> postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getAbsenceTransactionList ?? [];
}, url, postParams);
}
Future<List<GetAbsenceAttendanceTypesList>> getAbsenceAttendanceTypes() async {
String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES";
Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getAbsenceAttendanceTypesList ?? [];
}, url, postParams);
}
Future<CalculateAbsenceDuration> calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async {
String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION";
Map<String, dynamic> postParams = {
"P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID,
"P_DATE_END": pDateStart, //"29-Sep-2022",
"P_DATE_START": pDateEnd,
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
"P_TIME_START": null,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.calculateAbsenceDuration!;
}, url, postParams);
}
Future<List<GetAbsenceDffStructureList>> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async {
String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE";
Map<String, dynamic> postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getAbsenceDffStructureList ?? [];
}, url, postParams);
}
Future<GenericResponseModel> validateAbsenceTransaction(
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String> data,
{String comments = ""}) async {
String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION";
Map<String, dynamic> postParams = {
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
"P_REPLACEMENT_USER_NAME": pReplacementUserName,
"P_ABSENCE_ACTION": "CREATE",
"P_ABSENCE_COMMENTS": comments,
"P_ABSENCE_ATTENDANCE_ID": pAbsenceAttendanceTypeID,
"P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID,
"P_DATE_END": pDateStart, //"29-Sep-2022",
"P_DATE_START": pDateEnd,
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
"P_TIME_START": null,
};
postParams.addAll(data);
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData;
}, url, postParams);
}
Future<GenericResponseModel> submitAbsenceTransaction(
String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map<String, String> data,
{String comments = ""}) async {
String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION";
Map<String, dynamic> postParams = {
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
"P_REPLACEMENT_USER_NAME": pReplacementUserName,
"P_ABSENCE_ACTION": "CREATE",
"P_ABSENCE_COMMENTS": comments,
"P_ABSENCE_ATTENDANCE_ID": pAbsenceAttendanceTypeID,
"P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID,
"P_DATE_END": pDateStart, //"29-Sep-2022",
"P_DATE_START": pDateEnd,
"P_SELECTED_RESP_ID": pSelectedResopID,
"P_MENU_TYPE": "E",
"P_TIME_END": null,
"P_TIME_START": null,
};
postParams.addAll(data);
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData;
}, url, postParams);
}
}

@ -192,4 +192,66 @@ class Utils {
],
);
}
/// EIT Forms date formats
static String getMonthNamedFormat(DateTime date) {
/// it will return like "29-Sep-2022"
return DateFormat('dd-MMM-yyyy').format(date);
}
static String reverseFormatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
formattedDate = formattedDate.replaceAll(' 00:00:00', '');
} else {
formattedDate = date;
}
return formattedDate;
}
static String formatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('-', '/');
} else {
formattedDate = date;
}
return formattedDate;
}
static String reverseFormatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
} else {
formattedDate = date;
}
return formattedDate;
}
static String formatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
date = date.substring(0, 10);
formattedDate = date.replaceAll('-', '/');
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
static String formatDateNew(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.split('T')[0];
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
}

@ -5,6 +5,8 @@ import 'package:mohem_flutter_app/ui/attendance/vacation_rule_screen.dart';
import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart';
import 'package:mohem_flutter_app/ui/leave_balance/add_leave_balance_screen.dart';
import 'package:mohem_flutter_app/ui/leave_balance/leave_balance_screen.dart';
import 'package:mohem_flutter_app/ui/login/forgot_password_screen.dart';
import 'package:mohem_flutter_app/ui/login/login_screen.dart';
import 'package:mohem_flutter_app/ui/login/new_password_screen.dart';
@ -74,6 +76,10 @@ class AppRoutes {
static const String itemHistory = "/itemHistory";
static const String worklistSettings = "/worklistSettings";
// Leave Balance
static const String leaveBalance = "/leaveBalance";
static const String addLeaveBalance = "/addLeaveBalance";
static const String servicesMenuListScreen = "/servicesMenuListScreen";
static const String dynamicScreen = "/dynamicScreen";
static const String addDynamicInput = "/addDynamicInput";
@ -149,6 +155,11 @@ class AppRoutes {
itemHistory: (context) => ItemHistoryScreen(),
worklistSettings: (context) => WorklistSettings(),
// Leave Balance
leaveBalance: (context) => LeaveBalance(),
addLeaveBalance: (context) => AddLeaveBalanceScreen(),
servicesMenuListScreen: (context) => ServicesMenuListScreen(),
// workFromHome: (context) => WorkFromHomeScreen(),
// addWorkFromHome: (context) => AddWorkFromHomeScreen(),

@ -365,6 +365,12 @@ class CodegenLoader extends AssetLoader{
"save": "حفظ",
"TurnNotificationsFor": "تفعيل الاشعارات",
"worklistSettings": "اعدادات الاشعارات",
"absenceType": "نوع الغياب",
"absenceCategory": "فئة الغياب",
"days": "أيام",
"hours": "ساعات",
"approvalStatus": "حالة القبول",
"absenceStatus": "حالة الغياب",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -750,6 +756,12 @@ static const Map<String,dynamic> en_US = {
"save": "Save",
"TurnNotificationsFor": "Turn on notifications for",
"worklistSettings": "Worklist Settings",
"absenceType": "Absence Type",
"absenceCategory": "Absence Category",
"days": "Days",
"hours": "Hours",
"approvalStatus": "Approval Status",
"absenceStatus": "Absence Status",
"profile": {
"reset_password": {
"label": "Reset Password",

@ -350,6 +350,12 @@ abstract class LocaleKeys {
static const save = 'save';
static const TurnNotificationsFor = 'TurnNotificationsFor';
static const worklistSettings = 'worklistSettings';
static const absenceType = 'absenceType';
static const absenceCategory = 'absenceCategory';
static const days = 'days';
static const hours = 'hours';
static const approvalStatus = 'approvalStatus';
static const absenceStatus = 'absenceStatus';
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';

@ -1,7 +1,6 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
@ -61,7 +60,6 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return Sizer(
builder: (context, orientation, deviceType) {
print(AppState().postParamsObject?.toJson());
var obj = AppState().postParamsObject;
obj?.languageID = EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2;
AppState().setPostParamsModel(obj!);

@ -33,6 +33,10 @@ import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_mod
import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/models/get_user_item_type_list.dart';
import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_deductions_List_model.dart';
@ -70,9 +74,9 @@ 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/create_vacation_rule_list_model.dart';
import 'package:mohem_flutter_app/models/update_item_type_success_list.dart';
import 'package:mohem_flutter_app/models/update_user_item_type_list.dart';
import 'package:mohem_flutter_app/models/vacation_rule/create_vacation_rule_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart';
@ -121,7 +125,7 @@ class GenericResponseModel {
String? bCLogo;
BasicMemberInformationModel? basicMemberInformation;
bool? businessCardPrivilege;
String? calculateAbsenceDuration;
CalculateAbsenceDuration? calculateAbsenceDuration;
String? cancelHRTransactionLIst;
String? chatEmployeeLoginList;
String? companyBadge;
@ -137,10 +141,10 @@ class GenericResponseModel {
String? employeeQR;
String? forgetPasswordTokenID;
List<String>? getAbsenceAttachmentsList;
List<String>? getAbsenceAttendanceTypesList;
List<GetAbsenceAttendanceTypesList>? getAbsenceAttendanceTypesList;
List<GetAbsenceCollectionNotificationBodyList>? getAbsenceCollectionNotificationBodyList;
List<String>? getAbsenceDffStructureList;
List<String>? getAbsenceTransactionList;
List<GetAbsenceDffStructureList>? getAbsenceDffStructureList;
List<GetAbsenceTransactionList>? getAbsenceTransactionList;
List<GetAccrualBalancesList>? getAccrualBalancesList;
List<GetActionHistoryList>? getActionHistoryList;
List<GetAddressDffStructureList>? getAddressDffStructureList;
@ -645,15 +649,15 @@ class GenericResponseModel {
if (json['AddAttSuccessList'] != null) {
addAttSuccessList = <AddAttSuccessList>[];
json['AddAttSuccessList'].forEach((v) {
addAttSuccessList!.add(new AddAttSuccessList.fromJson(v));
addAttSuccessList!.add(AddAttSuccessList.fromJson(v));
});
}
addAttachmentList = json['AddAttachment_List'] != null ? new AddAttachmentList.fromJson(json['AddAttachment_List']) : null;
addAttachmentList = json['AddAttachment_List'] != null ? AddAttachmentList.fromJson(json['AddAttachment_List']) : null;
bCDomain = json['BC_Domain'];
bCLogo = json['BC_Logo'];
basicMemberInformation = json['BasicMemberInformation'] != null ? new BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null;
basicMemberInformation = json['BasicMemberInformation'] != null ? BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null;
businessCardPrivilege = json['BusinessCardPrivilege'];
calculateAbsenceDuration = json['CalculateAbsenceDuration'];
calculateAbsenceDuration = json['CalculateAbsenceDuration'] != null ? new CalculateAbsenceDuration.fromJson(json['CalculateAbsenceDuration']) : null;
cancelHRTransactionLIst = json['CancelHRTransactionLIst'];
chatEmployeeLoginList = json['Chat_EmployeeLoginList'];
companyBadge = json['CompanyBadge'];
@ -665,28 +669,46 @@ class GenericResponseModel {
if (json['CountryList'] != null) {
countryList = <GetCountriesListModel>[];
json['CountryList'].forEach((v) {
countryList!.add(new GetCountriesListModel.fromJson(v));
countryList!.add(GetCountriesListModel.fromJson(v));
});
}
createVacationRuleList = json['CreateVacationRuleList'] != null ? new CreateVacationRuleList.fromJson(json['CreateVacationRuleList']) : null;
createVacationRuleList = json['CreateVacationRuleList'] != null ? CreateVacationRuleList.fromJson(json['CreateVacationRuleList']) : null;
deleteAttachmentList = json['DeleteAttachmentList'];
deleteVacationRuleList = json['DeleteVacationRuleList'];
disableSessionList = json['DisableSessionList'];
employeeQR = json['EmployeeQR'];
forgetPasswordTokenID = json['ForgetPasswordTokenID'];
getAbsenceAttachmentsList = json['GetAbsenceAttachmentsList'];
getAbsenceAttendanceTypesList = json['GetAbsenceAttendanceTypesList'];
if (json['GetAbsenceAttendanceTypesList'] != null) {
getAbsenceAttendanceTypesList = <GetAbsenceAttendanceTypesList>[];
json['GetAbsenceAttendanceTypesList'].forEach((v) {
getAbsenceAttendanceTypesList!.add(GetAbsenceAttendanceTypesList.fromJson(v));
});
}
if (json['GetAbsenceCollectionNotificationBodyList'] != null) {
getAbsenceCollectionNotificationBodyList = <GetAbsenceCollectionNotificationBodyList>[];
json['GetAbsenceCollectionNotificationBodyList'].forEach((v) {
getAbsenceCollectionNotificationBodyList!.add(new GetAbsenceCollectionNotificationBodyList.fromJson(v));
getAbsenceCollectionNotificationBodyList!.add(GetAbsenceCollectionNotificationBodyList.fromJson(v));
});
}
if (json['GetAbsenceDffStructureList'] != null) {
getAbsenceDffStructureList = <GetAbsenceDffStructureList>[];
json['GetAbsenceDffStructureList'].forEach((v) {
getAbsenceDffStructureList!.add(GetAbsenceDffStructureList.fromJson(v));
});
}
if (json['GetAbsenceTransactionList'] != null) {
getAbsenceTransactionList = <GetAbsenceTransactionList>[];
json['GetAbsenceTransactionList'].forEach((v) {
getAbsenceTransactionList!.add(GetAbsenceTransactionList.fromJson(v));
});
}
getAbsenceDffStructureList = json['GetAbsenceDffStructureList'];
getAbsenceTransactionList = json['GetAbsenceTransactionList'];
getAccrualBalancesList = json["GetAccrualBalancesList"] == null ? null : List<GetAccrualBalancesList>.from(json["GetAccrualBalancesList"].map((x) => GetAccrualBalancesList.fromJson(x)));
if (json['GetActionHistoryList'] != null) {
@ -699,7 +721,7 @@ class GenericResponseModel {
if (json['GetAddressDffStructureList'] != null) {
getAddressDffStructureList = <GetAddressDffStructureList>[];
json['GetAddressDffStructureList'].forEach((v) {
getAddressDffStructureList!.add(new GetAddressDffStructureList.fromJson(v));
getAddressDffStructureList!.add(GetAddressDffStructureList.fromJson(v));
});
}
getAddressNotificationBodyList = json['GetAddressNotificationBodyList'];
@ -707,41 +729,41 @@ class GenericResponseModel {
if (json['GetApprovesList'] != null) {
getApprovesList = <GetApprovesList>[];
json['GetApprovesList'].forEach((v) {
getApprovesList!.add(new GetApprovesList.fromJson(v));
getApprovesList!.add(GetApprovesList.fromJson(v));
});
}
if (json['GetAttachementList'] != null) {
getAttachementList = <GetAttachementList>[];
json['GetAttachementList'].forEach((v) {
getAttachementList!.add(new GetAttachementList.fromJson(v));
getAttachementList!.add(GetAttachementList.fromJson(v));
});
}
getAttendanceTrackingList = json["GetAttendanceTrackingList"] == null ? null : GetAttendanceTracking.fromMap(json["GetAttendanceTrackingList"]);
if (json['GetBasicDetColsStructureList'] != null) {
getBasicDetColsStructureList = <GetBasicDetColsStructureList>[];
json['GetBasicDetColsStructureList'].forEach((v) {
getBasicDetColsStructureList!.add(new GetBasicDetColsStructureList.fromJson(v));
getBasicDetColsStructureList!.add(GetBasicDetColsStructureList.fromJson(v));
});
}
// getBasicDetDffStructureList = json['GetBasicDetDffStructureList'];
if (json['GetBasicDetDffStructureList'] != null) {
getBasicDetDffStructureList = <GetBasicDetDffStructureList>[];
json['GetBasicDetDffStructureList'].forEach((v) {
getBasicDetDffStructureList!.add(new GetBasicDetDffStructureList.fromJson(v));
getBasicDetDffStructureList!.add(GetBasicDetDffStructureList.fromJson(v));
});
}
if (json['GetContactDffStructureList'] != null) {
getContactDffStructureList = <GetContactDffStructureList>[];
json['GetContactDffStructureList'].forEach((v) {
getContactDffStructureList!.add(new GetContactDffStructureList.fromJson(v));
getContactDffStructureList!.add(GetContactDffStructureList.fromJson(v));
});
}
if (json['GetBasicDetNtfBodyList'] != null) {
getBasicDetNtfBodyList = <GetBasicDetNtfBodyList>[];
json['GetBasicDetNtfBodyList'].forEach((v) {
getBasicDetNtfBodyList!.add(new GetBasicDetNtfBodyList.fromJson(v));
getBasicDetNtfBodyList!.add(GetBasicDetNtfBodyList.fromJson(v));
});
}
@ -756,13 +778,13 @@ class GenericResponseModel {
if (json['GetContactDetailsList'] != null) {
getContactDetailsList = <GetContactDetailsList>[];
json['GetContactDetailsList'].forEach((v) {
getContactDetailsList!.add(new GetContactDetailsList.fromJson(v));
getContactDetailsList!.add(GetContactDetailsList.fromJson(v));
});
}
if (json['GetContactColsStructureList'] != null) {
getContactColsStructureList = <GetContactColsStructureList>[];
json['GetContactColsStructureList'].forEach((v) {
getContactColsStructureList!.add(new GetContactColsStructureList.fromJson(v));
getContactColsStructureList!.add(GetContactColsStructureList.fromJson(v));
});
}
getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]);
@ -770,21 +792,21 @@ class GenericResponseModel {
if (json['GetCountriesList'] != null) {
getCountriesList = <GetCountriesListModel>[];
json['GetCountriesList'].forEach((v) {
getCountriesList!.add(new GetCountriesListModel.fromJson(v));
getCountriesList!.add(GetCountriesListModel.fromJson(v));
});
}
if (json['GetDayHoursTypeDetailsList'] != null) {
getDayHoursTypeDetailsList = <GetDayHoursTypeDetailsList>[];
json['GetDayHoursTypeDetailsList'].forEach((v) {
getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v));
getDayHoursTypeDetailsList!.add(GetDayHoursTypeDetailsList.fromJson(v));
});
}
if (json['GetDeductionsList'] != null) {
getDeductionsList = <GetDeductionsList>[];
json['GetDeductionsList'].forEach((v) {
getDeductionsList!.add(new GetDeductionsList.fromJson(v));
getDeductionsList!.add(GetDeductionsList.fromJson(v));
});
}
getDefaultValueList = json['GetDefaultValueList'] != null ? GetDefaultValueList.fromJson(json['GetDefaultValueList']) : null;
@ -794,63 +816,62 @@ class GenericResponseModel {
if (json['GetEITDFFStructureList'] != null) {
getEITDFFStructureList = <GetEITDFFStructureList>[];
json['GetEITDFFStructureList'].forEach((v) {
getEITDFFStructureList!.add(new GetEITDFFStructureList.fromJson(v));
getEITDFFStructureList!.add(GetEITDFFStructureList.fromJson(v));
});
}
if (json['GetEITTransactionList'] != null) {
getEITTransactionList = <GetEITTransactionList>[];
json['GetEITTransactionList'].forEach((v) {
getEITTransactionList!.add(new GetEITTransactionList.fromJson(v));
getEITTransactionList!.add(GetEITTransactionList.fromJson(v));
});
}
if (json['GetEarningsList'] != null) {
getEarningsList = <GetEarningsList>[];
json['GetEarningsList'].forEach((v) {
getEarningsList!.add(new GetEarningsList.fromJson(v));
getEarningsList!.add(GetEarningsList.fromJson(v));
});
}
if (json['GetEmployeeAddressList'] != null) {
getEmployeeAddressList = <GetEmployeeAddressList>[];
json['GetEmployeeAddressList'].forEach((v) {
getEmployeeAddressList!.add(new GetEmployeeAddressList.fromJson(v));
getEmployeeAddressList!.add(GetEmployeeAddressList.fromJson(v));
});
}
if (json['GetEmployeeBasicDetailsList'] != null) {
getEmployeeBasicDetailsList = <GetEmployeeBasicDetailsList>[];
json['GetEmployeeBasicDetailsList'].forEach((v) {
getEmployeeBasicDetailsList!.add(new GetEmployeeBasicDetailsList.fromJson(v));
getEmployeeBasicDetailsList!.add(GetEmployeeBasicDetailsList.fromJson(v));
});
}
if (json['GetEmployeeContactsList'] != null) {
getEmployeeContactsList = <GetEmployeeContactsList>[];
json['GetEmployeeContactsList'].forEach((v) {
getEmployeeContactsList!.add(new GetEmployeeContactsList.fromJson(v));
getEmployeeContactsList!.add(GetEmployeeContactsList.fromJson(v));
});
}
if (json['GetEmployeePhonesList'] != null) {
getEmployeePhonesList = <GetEmployeePhonesList>[];
json['GetEmployeePhonesList'].forEach((v) {
getEmployeePhonesList!.add(new GetEmployeePhonesList.fromJson(v));
getEmployeePhonesList!.add(GetEmployeePhonesList.fromJson(v));
});
}
if (json['GetEmployeeSubordinatesList'] != null) {
getEmployeeSubordinatesList = <GetEmployeeSubordinatesList>[];
json['GetEmployeeSubordinatesList'].forEach((v) {
getEmployeeSubordinatesList!
.add(new GetEmployeeSubordinatesList.fromJson(v));
getEmployeeSubordinatesList!.add(new GetEmployeeSubordinatesList.fromJson(v));
});
}
getFliexfieldStructureList = json['GetFliexfieldStructureList'];
getHrCollectionNotificationBodyList = json['GetHrCollectionNotificationBodyList'];
getHrTransactionList = json['GetHrTransactionList'];
getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList'] != null ? new GetItemCreationNtfBodyList.fromJson(json['GetItemCreationNtfBodyList']) : null;
getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList'] != null ? GetItemCreationNtfBodyList.fromJson(json['GetItemCreationNtfBodyList']) : null;
if (json['GetItemTypeNotificationsList'] != null) {
getItemTypeNotificationsList = <GetItemTypeNotificationsList>[];
json['GetItemTypeNotificationsList'].forEach((v) {
getItemTypeNotificationsList!.add(new GetItemTypeNotificationsList.fromJson(v));
getItemTypeNotificationsList!.add(GetItemTypeNotificationsList.fromJson(v));
});
}
@ -860,14 +881,14 @@ class GenericResponseModel {
if (json['GetMoItemHistoryList'] != null) {
getMoItemHistoryList = <GetMoItemHistoryList>[];
json['GetMoItemHistoryList'].forEach((v) {
getMoItemHistoryList!.add(new GetMoItemHistoryList.fromJson(v));
getMoItemHistoryList!.add(GetMoItemHistoryList.fromJson(v));
});
}
if (json['GetMoNotificationBodyList'] != null) {
getMoNotificationBodyList = <GetMoNotificationBodyList>[];
json['GetMoNotificationBodyList'].forEach((v) {
getMoNotificationBodyList!.add(new GetMoNotificationBodyList.fromJson(v));
getMoNotificationBodyList!.add(GetMoNotificationBodyList.fromJson(v));
});
}
@ -901,14 +922,14 @@ class GenericResponseModel {
if (json['GetPaymentInformationList'] != null) {
getPaymentInformationList = <GetPaymentInformationList>[];
json['GetPaymentInformationList'].forEach((v) {
getPaymentInformationList!.add(new GetPaymentInformationList.fromJson(v));
getPaymentInformationList!.add(GetPaymentInformationList.fromJson(v));
});
}
if (json['GetPayslipList'] != null) {
getPayslipList = <GetPayslipList>[];
json['GetPayslipList'].forEach((v) {
getPayslipList!.add(new GetPayslipList.fromJson(v));
getPayslipList!.add(GetPayslipList.fromJson(v));
});
}
// getPendingReqDetailsList = json['GetPendingReqDetailsList'];
@ -919,15 +940,15 @@ class GenericResponseModel {
if (json['GetPoItemHistoryList'] != null) {
getPoItemHistoryList = <GetPoItemHistoryList>[];
json['GetPoItemHistoryList'].forEach((v) {
getPoItemHistoryList!.add(new GetPoItemHistoryList.fromJson(v));
getPoItemHistoryList!.add(GetPoItemHistoryList.fromJson(v));
});
}
getPoNotificationBodyList = json['GetPoNotificationBodyList'] != null ? new GetPoNotificationBodyList.fromJson(json['GetPoNotificationBodyList']) : null;
getPoNotificationBodyList = json['GetPoNotificationBodyList'] != null ? GetPoNotificationBodyList.fromJson(json['GetPoNotificationBodyList']) : null;
getPrNotificationBodyList = json['GetPrNotificationBodyList'];
if (json['GetQuotationAnalysisList'] != null) {
getQuotationAnalysisList = <GetQuotationAnalysisList>[];
json['GetQuotationAnalysisList'].forEach((v) {
getQuotationAnalysisList!.add(new GetQuotationAnalysisList.fromJson(v));
getQuotationAnalysisList!.add(GetQuotationAnalysisList.fromJson(v));
});
}
getRFCEmployeeListList = json['GetRFCEmployeeListList'];
@ -938,7 +959,7 @@ class GenericResponseModel {
if (json['GetScheduleShiftsDetailsList'] != null) {
getScheduleShiftsDetailsList = <GetScheduleShiftsDetailsList>[];
json['GetScheduleShiftsDetailsList'].forEach((v) {
getScheduleShiftsDetailsList!.add(new GetScheduleShiftsDetailsList.fromJson(v));
getScheduleShiftsDetailsList!.add(GetScheduleShiftsDetailsList.fromJson(v));
});
}
getShiftTypesList = json['GetShiftTypesList'];
@ -946,13 +967,13 @@ class GenericResponseModel {
if (json['GetStampMsNotificationBodyList'] != null) {
getStampMsNotificationBodyList = <GetStampMsNotificationBodyList>[];
json['GetStampMsNotificationBodyList'].forEach((v) {
getStampMsNotificationBodyList!.add(new GetStampMsNotificationBodyList.fromJson(v));
getStampMsNotificationBodyList!.add(GetStampMsNotificationBodyList.fromJson(v));
});
}
if (json['GetStampNsNotificationBodyList'] != null) {
getStampNsNotificationBodyList = <GetStampNsNotificationBodyList>[];
json['GetStampNsNotificationBodyList'].forEach((v) {
getStampNsNotificationBodyList!.add(new GetStampNsNotificationBodyList.fromJson(v));
getStampNsNotificationBodyList!.add(GetStampNsNotificationBodyList.fromJson(v));
});
}
@ -976,7 +997,7 @@ class GenericResponseModel {
if (json['GetSummaryOfPaymentList'] != null) {
getSummaryOfPaymentList = <GetSummaryOfPaymentList>[];
json['GetSummaryOfPaymentList'].forEach((v) {
getSummaryOfPaymentList!.add(new GetSummaryOfPaymentList.fromJson(v));
getSummaryOfPaymentList!.add(GetSummaryOfPaymentList.fromJson(v));
});
}
getSwipesList = json['GetSwipesList'];
@ -987,77 +1008,77 @@ class GenericResponseModel {
if (json['GetTimeCardSummaryList'] != null) {
getTimeCardSummaryList = <GetTimeCardSummaryList>[];
json['GetTimeCardSummaryList'].forEach((v) {
getTimeCardSummaryList!.add(new GetTimeCardSummaryList.fromJson(v));
getTimeCardSummaryList!.add(GetTimeCardSummaryList.fromJson(v));
});
}
if (json['Mohemm_ITG_TicketsByEmployeeList'] != null) {
getTicketsByEmployeeList = <GetTicketsByEmployeeList>[];
json['Mohemm_ITG_TicketsByEmployeeList'].forEach((v) {
getTicketsByEmployeeList!.add(new GetTicketsByEmployeeList.fromJson(v));
getTicketsByEmployeeList!.add(GetTicketsByEmployeeList.fromJson(v));
});
}
if (json['Mohemm_ITG_TicketDetailsList'] != null) {
getTicketDetailsByEmployee = <GetTicketDetailsByEmployee>[];
json['Mohemm_ITG_TicketDetailsList'].forEach((v) {
getTicketDetailsByEmployee!.add(new GetTicketDetailsByEmployee.fromJson(v));
getTicketDetailsByEmployee!.add(GetTicketDetailsByEmployee.fromJson(v));
});
}
if (json['Mohemm_ITG_TicketTransactionsList'] != null) {
getTicketTransactions = <GetTicketTransactions>[];
json['Mohemm_ITG_TicketTransactionsList'].forEach((v) {
getTicketTransactions!.add(new GetTicketTransactions.fromJson(v));
getTicketTransactions!.add(GetTicketTransactions.fromJson(v));
});
}
if (json['Mohemm_Itg_TicketTypesList'] != null) {
getTicketTypes = <GetTicketTypes>[];
json['Mohemm_Itg_TicketTypesList'].forEach((v) {
getTicketTypes!.add(new GetTicketTypes.fromJson(v));
getTicketTypes!.add(GetTicketTypes.fromJson(v));
});
}
if (json['Mohemm_Itg_ProjectsList'] != null) {
getMowadhafhiProjects = <GetMowadhafhiProjects>[];
json['Mohemm_Itg_ProjectsList'].forEach((v) {
getMowadhafhiProjects!.add(new GetMowadhafhiProjects.fromJson(v));
getMowadhafhiProjects!.add(GetMowadhafhiProjects.fromJson(v));
});
}
if (json['Mohemm_ITG_ProjectDepartmentsList'] != null) {
getProjectDepartments = <GetProjectDepartments>[];
json['Mohemm_ITG_ProjectDepartmentsList'].forEach((v) {
getProjectDepartments!.add(new GetProjectDepartments.fromJson(v));
getProjectDepartments!.add(GetProjectDepartments.fromJson(v));
});
}
if (json['Mohemm_ITG_DepartmentSectionsList'] != null) {
getDepartmentSections = <GetDepartmentSections>[];
json['Mohemm_ITG_DepartmentSectionsList'].forEach((v) {
getDepartmentSections!.add(new GetDepartmentSections.fromJson(v));
getDepartmentSections!.add(GetDepartmentSections.fromJson(v));
});
}
if (json['Mohemm_ITG_SectionTopicsList'] != null) {
getSectionTopics = <GetSectionTopics>[];
json['Mohemm_ITG_SectionTopicsList'].forEach((v) {
getSectionTopics!.add(new GetSectionTopics.fromJson(v));
getSectionTopics!.add(GetSectionTopics.fromJson(v));
});
}
if (json['GetPendingReqFunctionsList'] != null) {
getPendingTransactionsFunctions = <GetPendingTransactionsFunctions>[];
json['GetPendingReqFunctionsList'].forEach((v) {
getPendingTransactionsFunctions!.add(new GetPendingTransactionsFunctions.fromJson(v));
getPendingTransactionsFunctions!.add(GetPendingTransactionsFunctions.fromJson(v));
});
}
if (json['GetPendingReqDetailsList'] != null) {
getPendingTransactionsDetails = <GetPendingTransactionsDetails>[];
json['GetPendingReqDetailsList'].forEach((v) {
getPendingTransactionsDetails!.add(new GetPendingTransactionsDetails.fromJson(v));
getPendingTransactionsDetails!.add(GetPendingTransactionsDetails.fromJson(v));
});
}
@ -1185,7 +1206,7 @@ class GenericResponseModel {
if (json['RespondAttributesList'] != null) {
respondAttributesList = <RespondAttributesList>[];
json['RespondAttributesList'].forEach((v) {
respondAttributesList!.add(new RespondAttributesList.fromJson(v));
respondAttributesList!.add(RespondAttributesList.fromJson(v));
});
}
if (json['RespondRolesList'] != null) {
@ -1200,25 +1221,25 @@ class GenericResponseModel {
sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList'];
sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList'];
startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'];
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? new StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null;
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null;
startBasicDetApprProcessList = json['StartBasicDetApprProcessList'];
startCeiApprovalProcess = json['StartCeiApprovalProcess'];
startContactApprovalProcessList = json['StartContactApprovalProcessList'];
startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null;
startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null;
startHrApprovalProcessList = json['StartHrApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? new StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null;
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null;
startSitApprovalProcess = json['StartSitApprovalProcess'];
startTermApprovalProcessList = json['StartTermApprovalProcessList'];
submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? new SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null;
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? new SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null;
submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null;
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null;
submitCEITransactionList = json['SubmitCEITransactionList'];
submitCcpTransactionList = json['SubmitCcpTransactionList'];
submitContactTransactionList = json['SubmitContactTransactionList'] != null ? new SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null;
submitEITTransactionList = json['SubmitEITTransactionList'] != null ? new SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null;
submitContactTransactionList = json['SubmitContactTransactionList'] != null ? SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null;
submitEITTransactionList = json['SubmitEITTransactionList'] != null ? SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null;
submitHrTransactionList = json['SubmitHrTransactionList'];
submitPhonesTransactionList = json['SubmitPhonesTransactionList'];
@ -1240,13 +1261,10 @@ class GenericResponseModel {
if (json['UpdateItemTypeSuccessList'] != null) {
updateItemTypeSuccessList = <UpdateItemTypeSuccessList>[];
json['UpdateItemTypeSuccessList'].forEach((v) {
updateItemTypeSuccessList!
.add(new UpdateItemTypeSuccessList.fromJson(v));
updateItemTypeSuccessList!.add(new UpdateItemTypeSuccessList.fromJson(v));
});
}
updateUserItemTypesList = json['UpdateUserItemTypesList'] != null
? new UpdateUserItemTypesList.fromJson(json['UpdateUserItemTypesList'])
: null;
updateUserItemTypesList = json['UpdateUserItemTypesList'] != null ? new UpdateUserItemTypesList.fromJson(json['UpdateUserItemTypesList']) : null;
updateVacationRuleList = json['UpdateVacationRuleList'];
vHREmployeeLoginList = json['VHR_EmployeeLoginList'];
vHRGetEmployeeDetailsList = json['VHR_GetEmployeeDetailsList'];
@ -1255,7 +1273,7 @@ class GenericResponseModel {
vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid'];
validateAbsenceTransactionList = json['ValidateAbsenceTransactionList'];
validateEITTransactionList = json['ValidateEITTransactionList'] != null ? new ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null;
validateEITTransactionList = json['ValidateEITTransactionList'] != null ? ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null;
validatePhonesTransactionList = json['ValidatePhonesTransactionList'];
if (json['VrItemTypesList'] != null) {
@ -1267,7 +1285,7 @@ class GenericResponseModel {
if (json['WFLookUpList'] != null) {
wFLookUpList = <WFLookUpList>[];
json['WFLookUpList'].forEach((v) {
wFLookUpList!.add(new WFLookUpList.fromJson(v));
wFLookUpList!.add(WFLookUpList.fromJson(v));
});
}
eLearningGETEMPLOYEEPROFILEList = json['eLearning_GET_EMPLOYEE_PROFILEList'];
@ -1280,7 +1298,7 @@ class GenericResponseModel {
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
Map<String, dynamic> data = Map<String, dynamic>();
data['Date'] = this.date;
data['LanguageID'] = this.languageID;
data['ServiceName'] = this.serviceName;
@ -1321,7 +1339,10 @@ class GenericResponseModel {
data['BasicMemberInformation'] = this.basicMemberInformation!.toJson();
}
data['BusinessCardPrivilege'] = this.businessCardPrivilege;
data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration;
if (this.calculateAbsenceDuration != null) {
data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration!.toJson();
}
data['CancelHRTransactionLIst'] = this.cancelHRTransactionLIst;
data['Chat_EmployeeLoginList'] = this.chatEmployeeLoginList;
data['CompanyBadge'] = this.companyBadge;
@ -1342,14 +1363,22 @@ class GenericResponseModel {
data['EmployeeQR'] = this.employeeQR;
data['ForgetPasswordTokenID'] = this.forgetPasswordTokenID;
data['GetAbsenceAttachmentsList'] = this.getAbsenceAttachmentsList;
data['GetAbsenceAttendanceTypesList'] = this.getAbsenceAttendanceTypesList;
if (this.getAbsenceAttendanceTypesList != null) {
data['GetAbsenceAttendanceTypesList'] = this.getAbsenceAttendanceTypesList!.map((v) => v.toJson()).toList();
}
if (this.getAbsenceCollectionNotificationBodyList != null) {
data['GetAbsenceCollectionNotificationBodyList'] = this.getAbsenceCollectionNotificationBodyList!.map((v) => v.toJson()).toList();
}
data['GetAbsenceDffStructureList'] = this.getAbsenceDffStructureList;
data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList;
if (this.getAbsenceDffStructureList != null) {
data['GetAbsenceDffStructureList'] = this.getAbsenceDffStructureList!.map((v) => v.toJson()).toList();
}
if (this.getAbsenceTransactionList != null) {
data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList!.map((v) => v.toJson()).toList();
}
data['GetAccrualBalancesList'] = this.getAccrualBalancesList;
if (this.getActionHistoryList != null) {
@ -1428,8 +1457,7 @@ class GenericResponseModel {
data['GetEmployeePhonesList'] = this.getEmployeePhonesList!.map((v) => v.toJson()).toList();
}
if (this.getEmployeeSubordinatesList != null) {
data['GetEmployeeSubordinatesList'] =
this.getEmployeeSubordinatesList!.map((v) => v.toJson()).toList();
data['GetEmployeeSubordinatesList'] = this.getEmployeeSubordinatesList!.map((v) => v.toJson()).toList();
}
data['GetFliexfieldStructureList'] = this.getFliexfieldStructureList;
data['GetHrCollectionNotificationBodyList'] = this.getHrCollectionNotificationBodyList;
@ -1673,8 +1701,7 @@ class GenericResponseModel {
data['UpdateAttachmentList'] = this.updateAttachmentList;
data['UpdateEmployeeImageList'] = this.updateEmployeeImageList;
if (this.updateItemTypeSuccessList != null) {
data['UpdateItemTypeSuccessList'] =
this.updateItemTypeSuccessList!.map((v) => v.toJson()).toList();
data['UpdateItemTypeSuccessList'] = this.updateItemTypeSuccessList!.map((v) => v.toJson()).toList();
}
if (this.updateUserItemTypesList != null) {
data['UpdateUserItemTypesList'] = this.updateUserItemTypesList!.toJson();

@ -0,0 +1,24 @@
class CalculateAbsenceDuration {
int? pABSENCEDAYS;
int? pABSENCEHOURS;
String? pRETURNMSG;
String? pRETURNSTATUS;
CalculateAbsenceDuration({this.pABSENCEDAYS, this.pABSENCEHOURS, this.pRETURNMSG, this.pRETURNSTATUS});
CalculateAbsenceDuration.fromJson(Map<String, dynamic> json) {
pABSENCEDAYS = json['P_ABSENCE_DAYS'];
pABSENCEHOURS = json['P_ABSENCE_HOURS'];
pRETURNMSG = json['P_RETURN_MSG'];
pRETURNSTATUS = json['P_RETURN_STATUS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['P_ABSENCE_DAYS'] = this.pABSENCEDAYS;
data['P_ABSENCE_HOURS'] = this.pABSENCEHOURS;
data['P_RETURN_MSG'] = this.pRETURNMSG;
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
return data;
}
}

@ -0,0 +1,24 @@
class GetAbsenceAttendanceTypesList {
int? aBSENCEATTENDANCETYPEID;
String? aBSENCEATTENDANCETYPENAME;
String? dESCFLEXCONTEXTCODE;
String? hOURSORDAYS;
GetAbsenceAttendanceTypesList({this.aBSENCEATTENDANCETYPEID, this.aBSENCEATTENDANCETYPENAME, this.dESCFLEXCONTEXTCODE, this.hOURSORDAYS});
GetAbsenceAttendanceTypesList.fromJson(Map<String, dynamic> json) {
aBSENCEATTENDANCETYPEID = json['ABSENCE_ATTENDANCE_TYPE_ID'];
aBSENCEATTENDANCETYPENAME = json['ABSENCE_ATTENDANCE_TYPE_NAME'];
dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE'];
hOURSORDAYS = json['HOURS_OR_DAYS'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['ABSENCE_ATTENDANCE_TYPE_ID'] = this.aBSENCEATTENDANCETYPEID;
data['ABSENCE_ATTENDANCE_TYPE_NAME'] = this.aBSENCEATTENDANCETYPENAME;
data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE;
data['HOURS_OR_DAYS'] = this.hOURSORDAYS;
return data;
}
}

@ -0,0 +1,195 @@
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
class GetAbsenceDffStructureList {
String? aLPHANUMERICALLOWEDFLAG;
String? aPPLICATIONCOLUMNNAME;
String? cHILDSEGMENTSDV;
List<String>? cHILDSEGMENTSDVSplited;
String? cHILDSEGMENTSVS;
List<String>? 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<PARENTSEGMENTSDVSplited>? pARENTSEGMENTSDVSplited;
String? pARENTSEGMENTSVS;
List<PARENTSEGMENTSVSSplitedVS>? pARENTSEGMENTSVSSplitedVS;
String? rEADONLY;
String? rEQUIREDFLAG;
String? sEGMENTNAME;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? uPPERCASEONLYFLAG;
String? uSEDFLAG;
String? vALIDATIONTYPE;
String? vALIDATIONTYPEDSP;
GetAbsenceDffStructureList(
{this.aLPHANUMERICALLOWEDFLAG,
this.aPPLICATIONCOLUMNNAME,
this.cHILDSEGMENTSDV,
this.cHILDSEGMENTSDVSplited,
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});
GetAbsenceDffStructureList.fromJson(Map<String, dynamic> json) {
aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG'];
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
cHILDSEGMENTSDV = json['CHILD_SEGMENTS_DV'];
cHILDSEGMENTSDVSplited = json['CHILD_SEGMENTS_DV_Splited'] == null ? <String>[] : json['CHILD_SEGMENTS_DV_Splited'].cast<String>();
cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS'];
cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited']== null ? <String>[] : json['CHILD_SEGMENTS_VS_Splited'].cast<String>();
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 = <PARENTSEGMENTSDVSplited>[];
json['PARENT_SEGMENTS_DV_Splited'].forEach((v) {
pARENTSEGMENTSDVSplited!.add(PARENTSEGMENTSDVSplited.fromJson(v));
});
}
pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS'];
if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) {
pARENTSEGMENTSVSSplitedVS = <PARENTSEGMENTSVSSplitedVS>[];
json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) {
pARENTSEGMENTSVSSplitedVS!.add(new PARENTSEGMENTSVSSplitedVS.fromJson(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'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['ALPHANUMERIC_ALLOWED_FLAG'] = this.aLPHANUMERICALLOWEDFLAG;
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['CHILD_SEGMENTS_DV'] = this.cHILDSEGMENTSDV;
data['CHILD_SEGMENTS_DV_Splited'] = this.cHILDSEGMENTSDVSplited;
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.toJson()).toList();
}
data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS;
if (this.pARENTSEGMENTSVSSplitedVS != null) {
data['PARENT_SEGMENTS_VS_SplitedVS'] = this.pARENTSEGMENTSVSSplitedVS!.map((v) => v.toJson()).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;
return data;
}
bool get isDefaultTypeIsCDPS => (dEFAULTTYPE == "C" || dEFAULTTYPE == "D" || dEFAULTTYPE == "P" || dEFAULTTYPE == "S");
}

@ -0,0 +1,80 @@
class GetAbsenceTransactionList {
int? aBSENCEATTENDANCEID;
int? aBSENCEATTENDANCETYPEID;
String? aBSENCECATEGORY;
double? aBSENCEDAYS;
double? aBSENCEHOURS;
String? aBSENCESTATUS;
String? aBSENCETYPE;
String? aPPROVALSTATUS;
String? aTTACHMENTEXIST;
String? dELETEBUTTON;
String? eNDDATE;
int? fROMROWNUM;
int? nOOFROWS;
int? rOWNUM;
String? sTARTDATE;
int? tOROWNUM;
String? uPDATEBUTTON;
GetAbsenceTransactionList(
{this.aBSENCEATTENDANCEID,
this.aBSENCEATTENDANCETYPEID,
this.aBSENCECATEGORY,
this.aBSENCEDAYS,
this.aBSENCEHOURS,
this.aBSENCESTATUS,
this.aBSENCETYPE,
this.aPPROVALSTATUS,
this.aTTACHMENTEXIST,
this.dELETEBUTTON,
this.eNDDATE,
this.fROMROWNUM,
this.nOOFROWS,
this.rOWNUM,
this.sTARTDATE,
this.tOROWNUM,
this.uPDATEBUTTON});
GetAbsenceTransactionList.fromJson(Map<String, dynamic> json) {
aBSENCEATTENDANCEID = json['ABSENCE_ATTENDANCE_ID'];
aBSENCEATTENDANCETYPEID = json['ABSENCE_ATTENDANCE_TYPE_ID'];
aBSENCECATEGORY = json['ABSENCE_CATEGORY'];
aBSENCEDAYS = double.parse(json['ABSENCE_DAYS'].toString() ?? "0.0");
aBSENCEHOURS = json['ABSENCE_HOURS'];
aBSENCESTATUS = json['ABSENCE_STATUS'];
aBSENCETYPE = json['ABSENCE_TYPE'];
aPPROVALSTATUS = json['APPROVAL_STATUS'];
aTTACHMENTEXIST = json['ATTACHMENT_EXIST'];
dELETEBUTTON = json['DELETE_BUTTON'];
eNDDATE = json['END_DATE'];
fROMROWNUM = json['FROM_ROW_NUM'];
nOOFROWS = json['NO_OF_ROWS'];
rOWNUM = json['ROW_NUM'];
sTARTDATE = json['START_DATE'];
tOROWNUM = json['TO_ROW_NUM'];
uPDATEBUTTON = json['UPDATE_BUTTON'];
}
Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>();
data['ABSENCE_ATTENDANCE_ID'] = this.aBSENCEATTENDANCEID;
data['ABSENCE_ATTENDANCE_TYPE_ID'] = this.aBSENCEATTENDANCETYPEID;
data['ABSENCE_CATEGORY'] = this.aBSENCECATEGORY;
data['ABSENCE_DAYS'] = this.aBSENCEDAYS;
data['ABSENCE_HOURS'] = this.aBSENCEHOURS;
data['ABSENCE_STATUS'] = this.aBSENCESTATUS;
data['ABSENCE_TYPE'] = this.aBSENCETYPE;
data['APPROVAL_STATUS'] = this.aPPROVALSTATUS;
data['ATTACHMENT_EXIST'] = this.aTTACHMENTEXIST;
data['DELETE_BUTTON'] = this.dELETEBUTTON;
data['END_DATE'] = this.eNDDATE;
data['FROM_ROW_NUM'] = this.fROMROWNUM;
data['NO_OF_ROWS'] = this.nOOFROWS;
data['ROW_NUM'] = this.rOWNUM;
data['START_DATE'] = this.sTARTDATE;
data['TO_ROW_NUM'] = this.tOROWNUM;
data['UPDATE_BUTTON'] = this.uPDATEBUTTON;
return data;
}
}

@ -1,4 +1,3 @@
class GetEmployeeSubordinatesList {
String? aCTUALTERMINATIONDATE;
String? aSSIGNMENTENDDATE;

@ -1,13 +1,9 @@
class UpdateUserTypesList {
int? itemID;
String? pFYAENABLEDFALG;
String? pFYIENABLEDFALG;
String? pITEMTYPE;
UpdateUserTypesList({this.itemID, this.pFYAENABLEDFALG, this.pFYIENABLEDFALG, this.pITEMTYPE});
UpdateUserTypesList.fromJson(Map<String, dynamic> json) {

@ -1,23 +1,16 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:mohem_flutter_app/api/dashboard_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/date_uitl.dart';
import 'package:mohem_flutter_app/classes/utils.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/generic_response_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:mohem_flutter_app/widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart';
import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart';
import 'package:wifi_iot/wifi_iot.dart';
@ -183,62 +176,62 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
),
), //.expanded,
// MarkAttendanceWidget(model),
Container(
width: double.infinity,
decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
// margin: EdgeInsets.only(top: 187 - 31),
padding: EdgeInsets.only(left: 21, right: 21, top: 24, bottom: 24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.markAttendance.tr().toSectionHeading(),
LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: Color(0xff535353)),
24.height,
GridView(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.zero,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: <Widget>[
if (isNfcEnabled)
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performNfcAttendance(model);
}
}),
if (isWifiEnabled)
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performWifiAttendance(model);
}
// connectWifi();
}),
if (isQrEnabled)
attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
if (isQrLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performQrCodeAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performQrCodeAttendance(model);
}
MarkAttendanceWidget(model, topPadding: 24),
// Container(
// width: double.infinity,
// decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
// // margin: EdgeInsets.only(top: 187 - 31),
// padding: EdgeInsets.only(left: 21, right: 21, top: 24, bottom: 24),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisSize: MainAxisSize.min,
// children: [
// LocaleKeys.markAttendance.tr().toSectionHeading(),
// LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: Color(0xff535353)),
// 24.height,
// GridView(
// physics: const NeverScrollableScrollPhysics(),
// shrinkWrap: true,
// padding: EdgeInsets.zero,
// gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
// children: <Widget>[
// if (isNfcEnabled)
// attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
// if (isNfcLocationEnabled) {
// Location.getCurrentLocation((LatLng? latlng) {
// performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
// });
// } else {
// performNfcAttendance(model);
// }
// }),
// if (isWifiEnabled)
// attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
// if (isWifiLocationEnabled) {
// Location.getCurrentLocation((LatLng? latlng) {
// performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
// });
// } else {
// performWifiAttendance(model);
// }
// // connectWifi();
// }),
// if (isQrEnabled)
// attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
// if (isQrLocationEnabled) {
// Location.getCurrentLocation((LatLng? latlng) {
// performQrCodeAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
// });
// } else {
// performQrCodeAttendance(model);
}),
],
)
],
),
),
// }
// // performQrCodeAttendance(model);
// }),
// ],
// )
// ],
// ),
// ),
// Positioned(
// top: 187 - 21,
// child: Container(
@ -269,59 +262,59 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
);
}
Future<void> performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
if (isNfcLocationEnabled) {
print("nfc location enabled");
} else {
print("nfc not location enabled");
}
showNfcReader(context, onNcfScan: (String? nfcId) async {
print(nfcId);
Utils.showLoading(context);
try {
GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng);
bool status = await model.fetchAttendanceTracking(context);
Utils.hideLoading(context);
} catch (ex) {
print(ex);
Utils.hideLoading(context);
Utils.handleException(ex, context, (msg) {
Utils.confirmDialog(context, msg);
});
}
});
}
Future<void> performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
if (isWifiLocationEnabled) {
print("wifi location enabled");
} else {
print("wifi not location enabled");
}
bool v = await WiFiForIoTPlugin.connect(AppState().mohemmWifiSSID ?? "", password: AppState().mohemmWifiPassword ?? "", joinOnce: true, security: NetworkSecurity.WPA, withInternet: false);
if (v) {
await WiFiForIoTPlugin.forceWifiUsage(true);
print("connected");
Utils.showLoading(context);
try {
GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 3, nfcValue: "", isGpsRequired: isWifiLocationEnabled, lat: lat, long: lng);
bool status = await model.fetchAttendanceTracking(context);
Utils.hideLoading(context);
await closeWifiRequest();
} catch (ex) {
print(ex);
await closeWifiRequest();
Utils.hideLoading(context);
Utils.handleException(ex, context, (msg) {
Utils.confirmDialog(context, msg);
});
}
} else {
Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr());
}
}
// Future<void> performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
// if (isNfcLocationEnabled) {
// print("nfc location enabled");
// } else {
// print("nfc not location enabled");
// }
//
// showNfcReader(context, onNcfScan: (String? nfcId) async {
// print(nfcId);
// Utils.showLoading(context);
// try {
// GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng);
// bool status = await model.fetchAttendanceTracking(context);
// Utils.hideLoading(context);
// } catch (ex) {
// print(ex);
// Utils.hideLoading(context);
// Utils.handleException(ex, context, (msg) {
// Utils.confirmDialog(context, msg);
// });
// }
// });
// }
//
// Future<void> performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
// if (isWifiLocationEnabled) {
// print("wifi location enabled");
// } else {
// print("wifi not location enabled");
// }
//
// bool v = await WiFiForIoTPlugin.connect(AppState().mohemmWifiSSID ?? "", password: AppState().mohemmWifiPassword ?? "", joinOnce: true, security: NetworkSecurity.WPA, withInternet: false);
// if (v) {
// await WiFiForIoTPlugin.forceWifiUsage(true);
// print("connected");
// Utils.showLoading(context);
// try {
// GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 3, nfcValue: "", isGpsRequired: isWifiLocationEnabled, lat: lat, long: lng);
// bool status = await model.fetchAttendanceTracking(context);
// Utils.hideLoading(context);
// await closeWifiRequest();
// } catch (ex) {
// print(ex);
// await closeWifiRequest();
// Utils.hideLoading(context);
// Utils.handleException(ex, context, (msg) {
// Utils.confirmDialog(context, msg);
// });
// }
// } else {
// Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr());
// }
// }
Future<bool> closeWifiRequest() async {
await WiFiForIoTPlugin.forceWifiUsage(false);
@ -329,62 +322,62 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
return v;
}
Future<void> performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
var qrCodeValue = await Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => QrScannerDialog(),
),
);
if (qrCodeValue != null) {
print("qrCode: " + qrCodeValue);
Utils.showLoading(context);
try {
GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue);
bool status = await model.fetchAttendanceTracking(context);
Utils.hideLoading(context);
} catch (ex) {
print(ex);
Utils.hideLoading(context);
Utils.handleException(ex, context, (msg) {
Utils.confirmDialog(context, msg);
});
}
}
}
Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
gradient: const LinearGradient(transform: GradientRotation(.64), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
]),
),
clipBehavior: Clip.antiAlias,
child: Stack(
children: [
Container(
padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SvgPicture.asset(
image,
color: Colors.white,
).expanded,
title.toText17(isBold: true, color: Colors.white),
],
),
),
if (!isEnabled)
Container(
width: double.infinity,
height: double.infinity,
color: Colors.grey.withOpacity(0.7),
)
],
),
).onPress(onPress);
// Future<void> performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
// var qrCodeValue = await Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => QrScannerDialog(),
// ),
// );
// if (qrCodeValue != null) {
// print("qrCode: " + qrCodeValue);
// Utils.showLoading(context);
// try {
// GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue);
// bool status = await model.fetchAttendanceTracking(context);
// Utils.hideLoading(context);
// } catch (ex) {
// print(ex);
// Utils.hideLoading(context);
// Utils.handleException(ex, context, (msg) {
// Utils.confirmDialog(context, msg);
// });
// }
// }
// }
//
// Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container(
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(15),
// gradient: const LinearGradient(transform: GradientRotation(.64), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
// MyColors.gradiantEndColor,
// MyColors.gradiantStartColor,
// ]),
// ),
// clipBehavior: Clip.antiAlias,
// child: Stack(
// children: [
// Container(
// padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// SvgPicture.asset(
// image,
// color: Colors.white,
// ).expanded,
// title.toText17(isBold: true, color: Colors.white),
// ],
// ),
// ),
// if (!isEnabled)
// Container(
// width: double.infinity,
// height: double.infinity,
// color: Colors.grey.withOpacity(0.7),
// )
// ],
// ),
// ).onPress(onPress);
Widget commonStatusView(String title, String time) => Expanded(
child: Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [

@ -6,6 +6,7 @@ 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/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
@ -14,7 +15,8 @@ class MenusWidget extends StatelessWidget {
Widget build(BuildContext context) {
List<int> namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA];
return Consumer<DashboardProviderModel>(builder: (cxt, data, child) {
return Consumer<DashboardProviderModel>(
builder: (cxt, data, child) {
return GridView(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 2 / 2, crossAxisSpacing: 9, mainAxisSpacing: 9),
padding: EdgeInsets.zero,
@ -39,15 +41,14 @@ class MenusWidget extends StatelessWidget {
Row(
children: [
Expanded(
child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true,maxlines: 1),
child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)
],
)
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() async {
//await data.fetchWorkListCounter(context, showLoading: true);
).onPress(() {
Navigator.pushNamed(context, AppRoutes.workList);
}),
data.isMissingSwipeLoading
@ -67,7 +68,7 @@ class MenusWidget extends StatelessWidget {
Row(
children: [
Expanded(
child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true,maxlines: 1),
child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)
],
@ -75,7 +76,7 @@ class MenusWidget extends StatelessWidget {
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.workList);
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS"));
}),
data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() {
@ -94,7 +95,7 @@ class MenusWidget extends StatelessWidget {
Row(
children: [
Expanded(
child: data.leaveBalance.toString().toText16(color: Colors.white, isBold: true,maxlines: 1),
child: data.leaveBalance.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)
],
@ -102,7 +103,7 @@ class MenusWidget extends StatelessWidget {
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.workList);
Navigator.pushNamed(context, AppRoutes.leaveBalance);
}),
data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() {
@ -121,18 +122,21 @@ class MenusWidget extends StatelessWidget {
Row(
children: [
Expanded(
child: data.ticketBalance.toString().toText16(color: Colors.white, isBold: true,maxlines: 1),
child: data.ticketBalance.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)
],
)
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.workList);
})
).onPress(
() {
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.ticketBalance.tr(), "HMG_TKT_NEW_EIT_SS"));
},
)
],
);
});
},
);
}
}

@ -0,0 +1,580 @@
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/leave_balance_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_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_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/calculate_absence_duration_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_attendance_types_list_model.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
class AddLeaveBalanceScreen extends StatefulWidget {
AddLeaveBalanceScreen({Key? key}) : super(key: key);
@override
_AddLeaveBalanceScreenState createState() {
return _AddLeaveBalanceScreenState();
}
}
class _AddLeaveBalanceScreenState extends State<AddLeaveBalanceScreen> {
List<GetAbsenceDffStructureList> getabsenceDffStructureList = [];
List<GetAbsenceAttendanceTypesList> absenceList = [];
GetAbsenceAttendanceTypesList? selectedAbsenceType;
DateTime? startDateTime;
DateTime? endDateTime;
int? totalDays;
String comment = "";
ReplacementList? selectedReplacementEmployee;
DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day);
@override
void initState() {
super.initState();
getAbsenceAttendanceTypes();
}
void getAbsenceAttendanceTypes() async {
try {
Utils.showLoading(context);
absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getAbsenceDffStructure(String flexCode) async {
try {
Utils.showLoading(context);
getabsenceDffStructureList.clear();
getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(flexCode, "HR_LOA_SS", -999);
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getCalculatedAbsenceDuration() async {
try {
Utils.showLoading(context);
CalculateAbsenceDuration duration = await LeaveBalanceApiClient()
.calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999);
print(duration.toJson());
totalDays = duration.pABSENCEDAYS;
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.leaveBalance.tr(),
),
body: Column(
children: [
ListView(
padding: const EdgeInsets.all(21),
children: [
PopupMenuButton(
child: DynamicTextFieldWidget(
LocaleKeys.absenceType.tr() + "*",
selectedAbsenceType == null ? LocaleKeys.selectTypeT.tr() : selectedAbsenceType!.aBSENCEATTENDANCETYPENAME!,
isEnable: false,
isPopup: true,
),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < absenceList.length; i++) PopupMenuItem<int>(value: i, child: Text(absenceList[i].aBSENCEATTENDANCETYPENAME!)),
],
onSelected: (int popupIndex) {
if (selectedAbsenceType == absenceList[popupIndex]) {
return;
}
selectedAbsenceType = absenceList[popupIndex];
setState(() {});
getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!);
},
),
12.height,
DynamicTextFieldWidget(
LocaleKeys.startDateT.tr() + "*",
startDateTime == null ? "Select date" : startDateTime.toString().split(' ')[0],
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
var start = await _selectDate(context);
if (start != startDateTime) {
startDateTime = start;
setState(() {});
}
},
),
12.height,
DynamicTextFieldWidget(
LocaleKeys.endDateT.tr() + "*",
endDateTime == null ? "Select date" : endDateTime.toString().split(' ')[0],
suffixIconData: Icons.calendar_today,
isEnable: false,
isReadOnly: selectedAbsenceType == null || startDateTime == null,
onTap: () async {
if (selectedAbsenceType == null || startDateTime == null) return;
var end = await _selectDate(context);
if (end != endDateTime) {
endDateTime = end;
setState(() {});
getCalculatedAbsenceDuration();
}
},
),
12.height,
DynamicTextFieldWidget(
"Total Days",
totalDays?.toString() ?? "Calculated days",
isInputTypeNum: true,
isEnable: false,
onChange: (input) {
totalDays = int.parse(input);
},
),
12.height,
DynamicTextFieldWidget(
LocaleKeys.selectEmployee.tr(),
selectedReplacementEmployee == null ? LocaleKeys.searchForEmployee.tr() : selectedReplacementEmployee!.employeeDisplayName ?? "",
isEnable: false,
onTap: () {
showMyBottomSheet(
context,
child: SearchEmployeeBottomSheet(
title: LocaleKeys.searchForEmployee.tr(),
apiMode: LocaleKeys.delegate.tr(),
onSelectEmployee: (_selectedEmployee) {
// Navigator.pop(context);
selectedReplacementEmployee = _selectedEmployee;
setState(() {});
},
),
);
},
),
12.height,
DynamicTextFieldWidget(
LocaleKeys.comments.tr(),
LocaleKeys.writeComment.tr(),
lines: 2,
onChange: (input) {
comment = input;
},
),
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.only(top: 12),
itemBuilder: (cxt, int parentIndex) => parseDynamicFormatType(getabsenceDffStructureList[parentIndex], parentIndex),
separatorBuilder: (cxt, index) => 0.height,
itemCount: getabsenceDffStructureList.length,
)
],
).expanded,
DefaultButton(
LocaleKeys.next.tr(),
(selectedAbsenceType == null || startDateTime == null || endDateTime == null) ? null : () {},
).insideContainer
],
),
);
}
Widget parseDynamicFormatType(GetAbsenceDffStructureList model, int index) {
if (model.dISPLAYFLAG != "N") {
if (model.vALIDATIONTYPE == "N") {
if (model.fORMATTYPE == "C") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pIDCOLUMNNAME ?? "",
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV!.pIDCOLUMNNAME = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "N") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pIDCOLUMNNAME ?? "",
isReadOnly: model.rEADONLY == "Y",
isInputTypeNum: true,
onChange: (text) {
model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV!.pIDCOLUMNNAME = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "X") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (getabsenceDffStructureList[index].isDefaultTypeIsCDPS) {
if (displayText.contains(" 00:00:00")) {
displayText = displayText.replaceAll(" 00:00:00", "");
}
if (displayText.contains("/")) {
displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
}
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
displayText,
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) {
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
selectedDate = DateFormat("yyyy/MM/dd").parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", ""));
} else {
selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
}
DateTime date = await _selectDate(context);
String dateString = date.toString().split(' ').first;
// DateTime date1 = DateTime(date.year, date.month, date.day);
// getabsenceDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv;
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: Utils.formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME:
getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME:
getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "Y") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
displayText = Utils.reverseFormatDate(displayText);
// if (displayText.contains(" 00:00:00")) {
// displayText = displayText.replaceAll(" 00:00:00", "");
// }
// if (!displayText.contains("-")) {
// displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
// }
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
displayText,
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) {
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
String tempDate = getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!;
if (tempDate.contains("00:00:00")) {
tempDate = tempDate.replaceAll("00:00:00", '').trim();
}
if (tempDate.contains("/")) {
selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate);
} else {
selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate);
}
} else {
selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
}
DateTime date = await _selectDate(context);
String dateString = date.toString().split(' ').first;
// getabsenceDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv;
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: Utils.formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME:
getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME:
getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
},
).paddingOnly(bottom: 12);
}
} else {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pVALUECOLUMNNAME ?? "",
isEnable: false,
isPopup: true,
isInputTypeNum: true,
isReadOnly: model.rEADONLY == "Y",
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
if (model.rEADONLY != "Y")
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME,
pRETURNMSG: "null",
pRETURNSTATUS: "null", //getabsenceDffStructureList![popipIndex].dEFAULTVALUE,
pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME);
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
});
}
} else {
return const SizedBox();
}
if (model.fORMATTYPE == "N") {
if (model.eSERVICESVS?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pVALUECOLUMNNAME ?? "",
isEnable: false,
isPopup: true,
isInputTypeNum: true,
isReadOnly: model.rEADONLY == "Y",
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
if (model.rEADONLY != "Y")
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(value: i, child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!)),
],
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", pRETURNSTATUS: "null", pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME);
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
});
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pIDCOLUMNNAME ?? "",
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
//model.fieldAnswer = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "X" || model.fORMATTYPE == "Y") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
if (displayText.contains(" 00:00:00")) {
displayText = displayText.replaceAll(" 00:00:00", "");
}
if (!displayText.contains("-")) {
displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
}
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
displayText,
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) {
if (getabsenceDffStructureList![index].isDefaultTypeIsCDPS) {
selectedDate = DateFormat("yyyy/MM/dd").parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", ""));
} else {
selectedDate = DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
}
DateTime date = await _selectDate(context);
String dateString = date.toString().split(' ').first;
// getabsenceDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME:
getabsenceDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "I") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.eSERVICESDV?.pIDCOLUMNNAME ?? "",
suffixIconData: Icons.access_time_filled_rounded,
isEnable: false,
onTap: () async {
if (getabsenceDffStructureList[index].mOBILEENABLED != "Y") return;
if ((getabsenceDffStructureList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) {
var timeString = getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!.split(":");
selectedDate = DateTime(0, 0, 0, int.parse(timeString[0]), int.parse(timeString[1]));
//DateTime.parse(getabsenceDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
TimeOfDay _time = await _selectTime(context);
DateTime tempTime = DateTime(0, 1, 1, _time.hour, _time.minute);
String time = DateFormat('HH:mm').format(tempTime).trim();
// DateTime date1 = DateTime(date.year, date.month, date.day);
// getabsenceDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv = ESERVICESDV(pIDCOLUMNNAME: time, pRETURNMSG: "null", pRETURNSTATUS: getabsenceDffStructureList![index].dEFAULTVALUE, pVALUECOLUMNNAME: time);
getabsenceDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
// if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
// await calGetValueSetValues(model);
// }
// if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
// await getDefaultValues(model);
// }
},
).paddingOnly(bottom: 12);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [],
).objectContainerView();
}
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 {
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;
}
}
time = DateTime(time.year, time.month, time.day);
return time;
}
Future<TimeOfDay> _selectTime(BuildContext context) async {
TimeOfDay time = TimeOfDay(hour: selectedDate.hour, minute: selectedDate.minute);
if (Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
height: 250,
color: Colors.white,
child: CupertinoDatePicker(
backgroundColor: Colors.white,
mode: CupertinoDatePickerMode.time,
use24hFormat: true,
onDateTimeChanged: (value) {
if (value != null && value != selectedDate) {
time = TimeOfDay(hour: value.hour, minute: value.minute);
}
},
initialDateTime: selectedDate,
),
),
);
} else {
TimeOfDay? picked = await showTimePicker(
context: context,
initialTime: time,
builder: (cxt, child) {
return MediaQuery(data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), child: child ?? Container());
});
if (picked != null && picked != time) {
time = picked;
}
// 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;
}
}

@ -0,0 +1,96 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/leave_balance_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/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
class LeaveBalance extends StatefulWidget {
LeaveBalance({Key? key}) : super(key: key);
@override
_LeaveBalanceState createState() {
return _LeaveBalanceState();
}
}
class _LeaveBalanceState extends State<LeaveBalance> {
List<GetAbsenceTransactionList>? absenceTransList;
@override
void initState() {
super.initState();
getAbsenceTransactions();
}
@override
void dispose() {
super.dispose();
}
void getAbsenceTransactions() async {
// try {
Utils.showLoading(context);
absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999);
Utils.hideLoading(context);
setState(() {});
// } catch (ex) {
// Utils.hideLoading(context);
// Utils.handleException(ex, context, null);
// }
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.leaveBalance.tr(),
),
body: absenceTransList == null
? const SizedBox()
: (absenceTransList!.isEmpty
? Utils.getNoDataWidget(context)
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
itemBuilder: (cxt, int index) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
ItemDetailView(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""),
ItemDetailView(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""),
ItemDetailView(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""),
ItemDetailView(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""),
ItemDetailView(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""),
ItemDetailView(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""),
ItemDetailView(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""),
ItemDetailView(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""),
],
).objectContainerView(),
separatorBuilder: (cxt, index) => 12.height,
itemCount: absenceTransList!.length)),
floatingActionButton: Container(
height: 54,
width: 54,
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
]),
),
child: const Icon(Icons.add, color: Colors.white, size: 30),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.addLeaveBalance);
}),
);
}
}

@ -281,7 +281,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
// idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day));
// }
idColName = formatStandardDate(idColName!);
idColName = Utils.formatStandardDate(idColName!);
}
} else {
val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME;
@ -293,7 +293,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
idColName = val;
if (getEitDffStructureList![j].fORMATTYPE == "X") {
idColName = formatDateNew(idColName!);
idColName = Utils.formatDateNew(idColName!);
// commenting to test
// DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!);
// idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date);
@ -406,7 +406,8 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
padding: const EdgeInsets.all(21),
itemBuilder: (cxt, int parentIndex) => parseDynamicFormatType(getEitDffStructureList![parentIndex], parentIndex),
separatorBuilder: (cxt, index) => 0.height,
itemCount: getEitDffStructureList!.length)))
itemCount: getEitDffStructureList!.length,
)))
.expanded,
// 12.height,
DefaultButton(
@ -481,16 +482,18 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
ESERVICESDV eservicesdv;
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: formatDate(dateString),
pIDCOLUMNNAME: Utils.formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME:
getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME:
getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
@ -505,7 +508,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
} else if (model.fORMATTYPE == "Y") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? "");
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
displayText = reverseFormatDate(displayText);
displayText = Utils.reverseFormatDate(displayText);
// if (displayText.contains(" 00:00:00")) {
// displayText = displayText.replaceAll(" 00:00:00", "");
// }
@ -540,16 +543,18 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
ESERVICESDV eservicesdv;
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: formatDate(dateString),
pIDCOLUMNNAME: Utils.formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME:
getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME:
getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
@ -663,7 +668,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
@ -736,8 +741,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
),
);
} else {
DateTime? picked =
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
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;
}
@ -786,59 +790,4 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
return time;
}
String reverseFormatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
formattedDate = formattedDate.replaceAll(' 00:00:00', '');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('-', '/');
} else {
formattedDate = date;
}
return formattedDate;
}
String reverseFormatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
date = date.substring(0, 10);
formattedDate = date.replaceAll('-', '/');
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDateNew(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.split('T')[0];
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
}

@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
@ -33,9 +34,11 @@ class _BasicDetailsState extends State<BasicDetails> {
String? emailAddress = "";
String? employeeNo = "";
int correctOrNew = 1;
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList;
late MemberInformationListModel memberInformationList;
GetMenuEntriesList menuEntries = GetMenuEntriesList();
@override
void initState() {
super.initState();
@ -58,7 +61,6 @@ class _BasicDetailsState extends State<BasicDetails> {
}
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
@ -68,53 +70,43 @@ class _BasicDetailsState extends State<BasicDetails> {
backgroundColor: MyColors.backgroundColor,
body: Column(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
ListView(
padding: const EdgeInsets.all(21),
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 20, left: 21, right: 21, bottom: 20),
padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5),
height: 300,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(
getEmployeeBasicDetailsList == null
? const SizedBox().expanded
: (getEmployeeBasicDetailsList!.isEmpty
? Utils.getNoDataWidget(context).expanded
: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: getEmployeeBasicDetailsList.map((e) =>
Column(
children: getEmployeeBasicDetailsList!
.map((e) => Column(
children: [
e.dISPLAYFLAG == "Y" ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
e.dISPLAYFLAG == "Y"
? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
"${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
"${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(height: 12,)
]): Container(),
12.height
])
: Container(),
],
)).toList()),
),
))
.toList())
.objectContainerView())
],
),
),
).expanded,
DefaultButton(
LocaleKeys.update.tr(),
menuEntries.updateButton == 'Y' ? () async {
showAlertDialog(context);}
: null).insideContainer,
menuEntries.updateButton == 'Y'
? () async {
showAlertDialog(context);
}
: null)
.insideContainer,
],
));
}
void showAlertDialog(BuildContext context) {
Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr()),

@ -4,7 +4,9 @@ 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/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
@ -13,9 +15,7 @@ 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_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 {
@ -47,26 +47,12 @@ class _ContactDetailsState extends State<ContactDetails> {
menuEntriesPhone = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList()[0];
menuEntriesAddress = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList()[0];
getEmployeePhones();
setState(() {});
}
void getEmployeePhones() async {
try {
Utils.showLoading(context);
getEmployeePhonesList = await ProfileApiClient().getEmployeePhones();
getEmployeeAddress();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getEmployeeAddress() async {
try {
Utils.showLoading(context);
getEmployeeAddressList = await ProfileApiClient().getEmployeeAddress();
Utils.hideLoading(context);
setState(() {});
@ -83,31 +69,13 @@ class _ContactDetailsState extends State<ContactDetails> {
title: LocaleKeys.profile_contactDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
body: SingleChildScrollView(
child: Column(children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 20,
left: 26,
right: 26,
),
padding: EdgeInsets.all(15),
///height: 200,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Stack(children: [
// bottomSheet: footer(),
body: ListView(
padding: const EdgeInsets.all(21),
children: [
if (getEmployeePhonesList.isNotEmpty)
Stack(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
@ -124,37 +92,33 @@ class _ContactDetailsState extends State<ContactDetails> {
: Container()
],
),
Column(
ListView.separated(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.zero,
itemBuilder: (cxt, index) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: getEmployeePhonesList
.map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
"${e.pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor),
"${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
]))
.toList())
])),
Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 20,
left: 26,
right: 26,
),
padding: EdgeInsets.all(15),
// height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
children: [
"${getEmployeePhonesList[index].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor),
("${getEmployeePhonesList[index].pHONENUMBER}" ?? "").toText16(isBold: true, color: MyColors.blackColor),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Stack(children: [
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEmployeePhonesList.length),
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: getEmployeePhonesList
// .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
// "${e.pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor),
// "${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
// ]))
// .toList())
],
).objectContainerView(),
12.height,
if (getEmployeeAddressList.isNotEmpty)
Stack(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
@ -171,37 +135,34 @@ class _ContactDetailsState extends State<ContactDetails> {
: Container()
],
),
Column(
ListView.separated(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.zero,
itemBuilder: (cxt, index) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: getEmployeeAddressList
.map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
"${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
"${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
children: [
"${getEmployeeAddressList[index].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
("${getEmployeeAddressList[index].sEGMENTVALUEDSP}" ?? "").toText16(isBold: true, color: MyColors.blackColor),
],
),
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEmployeeAddressList.length),
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: getEmployeeAddressList
// .map((e) => Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
// "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// ]))
// .toList())
],
).objectContainerView()
],
),
]))
.toList())
]))
])));
);
}
// Widget footer() {
// return Container(
// decoration: BoxDecoration(
// // borderRadius: BorderRadius.circular(10),
// color: MyColors.white,
// boxShadow: [
// BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
// ],
// ),
// child: DefaultButton(LocaleKeys.update.tr(), () async {
// // context.setLocale(const Locale("en", "US")); // to change Loacle
// ProfileScreen();
// }).insideContainer,
// );
// }
void updatePhone() {
Navigator.push(
context,

@ -19,8 +19,9 @@ import 'package:wifi_iot/wifi_iot.dart';
class MarkAttendanceWidget extends StatefulWidget {
DashboardProviderModel model;
double topPadding;
MarkAttendanceWidget(this.model, {Key? key}) : super(key: key);
MarkAttendanceWidget(this.model, {Key? key, this.topPadding = 0}) : super(key: key);
@override
_MarkAttendanceWidgetState createState() {
@ -70,9 +71,8 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(left: 21, right: 21, bottom: 21),
decoration: BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding),
decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -85,7 +85,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
padding: const EdgeInsets.only(bottom: 14, top: 21),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: <Widget>[
if (isNfcEnabled)
// if (isNfcEnabled)
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
@ -180,8 +180,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
Future<bool> closeWifiRequest() async {
await WiFiForIoTPlugin.forceWifiUsage(false);
bool v = await WiFiForIoTPlugin.disconnect();
return v;
return await WiFiForIoTPlugin.disconnect();
}
Future<void> performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
@ -210,7 +209,9 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
gradient: const LinearGradient(
color: isEnabled ? null : Colors.grey.withOpacity(.5),
gradient: isEnabled
? const LinearGradient(
transform: GradientRotation(.64),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
@ -218,32 +219,20 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
)
: null,
),
clipBehavior: Clip.antiAlias,
child: Stack(
children: [
Container(
padding: const EdgeInsets.only(left: 10, right: 10, top: 14, bottom: 14),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: SvgPicture.asset(
image,
color: Colors.white,
)),
SvgPicture.asset(image, color: Colors.white).expanded,
title.toText17(isBold: true, color: Colors.white),
],
),
),
if (!isEnabled)
Container(
width: double.infinity,
height: double.infinity,
color: Colors.grey.withOpacity(0.7),
)
],
),
).onPress(onPress);
).onPress(() {
if (!isEnabled) return;
onPress();
});
}

Loading…
Cancel
Save