diff --git a/analysis_options.yaml b/analysis_options.yaml
index 90c25c1..a84033c 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -9,6 +9,17 @@
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
+analyzer:
+ errors:
+ always_use_package_imports: error
+ camel_case_types: error
+ always_declare_return_types: error
+ null_check_on_nullable_type_parameter: error
+ avoid_annotating_with_dynamic: error
+ unnecessary_null_checks: error
+ unnecessary_brace_in_string_interps: error
+
+
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
@@ -25,8 +36,19 @@ linter:
always_specify_types: true
always_declare_return_types: true
always_use_package_imports: true
+ avoid_unnecessary_containers: true
+ unnecessary_this: true
+ unnecessary_new: true
+ camel_case_types: true
+ null_check_on_nullable_type_parameter: true
+ sort_child_properties_last: true
+ camel_case_extensions: true
+ require_trailing_commas: true
avoid_empty_else: true
avoid_annotating_with_dynamic: true
+ unnecessary_null_checks: true
+ unnecessary_brace_in_string_interps: true
+ unnecessary_string_interpolations: true
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
diff --git a/assets/images/not_found.svg b/assets/images/not_found.svg
new file mode 100644
index 0000000..80aed53
--- /dev/null
+++ b/assets/images/not_found.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json
index 89f2ef6..219f367 100644
--- a/assets/langs/ar-SA.json
+++ b/assets/langs/ar-SA.json
@@ -236,12 +236,12 @@
"year": "سنة",
"month": "شهر",
"day": "يوم",
- "address" : "العنوان",
+ "address": "العنوان",
"phoneNumber": "رقم الجوال",
"businessGroup": "مجموعة العمل",
"Payroll": "الراتب",
"civilIdentityNumber": "رقم الهويه",
- "dateOfBirth" : "تاريخ الميلاد",
+ "dateOfBirth": "تاريخ الميلاد",
"maritalStatus ": "الحالة الاجتماعية",
"fullName": "الأسم الكامل",
"remove": "حذف",
@@ -251,6 +251,18 @@
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
+ "monthlyPaySlip": "قسيمة الراتب الشهرية",
+ "particular": "خاص",
+ "earnings": "أرباح",
+ "deductions": "الخصومات",
+ "paymentMethodName": "اسم طريقة الدفع",
+ "bankName": "اسم البنك",
+ "branchCode": "رمز الفرع",
+ "accountNo": "رقم الحساب",
+ "summaryOfInformation": "ملخص المعلومات",
+ "totalPayAmount": "المبلغ الإجمالي للدفع",
+ "paymentInformation": "معلومات الدفع",
+ "amount": "مقدار",
"correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية",
"selectType": " حدد نوع التغيير الذي تريد القيام به",
"enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية",
@@ -286,14 +298,6 @@
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
- "amount": {
- "zero": "Your amount : {} ",
- "one": "Your amount : {} ",
- "two": "Your amount : {} ",
- "few": "Your amount : {} ",
- "many": "Your amount : {} ",
- "other": "Your amount : {} "
- },
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json
index 272e621..f66f22c 100644
--- a/assets/langs/en-US.json
+++ b/assets/langs/en-US.json
@@ -245,13 +245,25 @@
"maritalStatus ": "Marital Status ",
"fullName": "Full Name",
"remove": "Remove",
- "Attendance":"Attendance",
+ "Attendance": "Attendance",
"submit": "Submit",
"areYouSureYouWantToSubmit": "Are you sure you want to submit?",
"comments": "Comments",
"writeComment": "Write a comment",
"approversList": "Approvers List",
"yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals",
+ "monthlyPaySlip": "Monthly Pay Slip",
+ "particular": "Particular",
+ "earnings": "Earnings",
+ "deductions": "Deductions",
+ "paymentMethodName": "Payment Method Name",
+ "bankName": "Bank Name",
+ "branchCode": "Branch Code",
+ "accountNo": "Account No",
+ "summaryOfInformation": "Summary of Information",
+ "totalPayAmount": "Total Pay Amount",
+ "paymentInformation": "Payment Information",
+ "amount": "Amount",
"correctCurrentDatails": "correct or complete the current details",
"selectType": "Select the type of change you want to make",
"enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)",
@@ -287,14 +299,6 @@
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
- "amount": {
- "zero": "Your amount : {} ",
- "one": "Your amount : {} ",
- "two": "Your amount : {} ",
- "few": "Your amount : {} ",
- "many": "Your amount : {} ",
- "other": "Your amount : {} "
- },
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart
index 258b2af..2f53f78 100644
--- a/lib/api/api_client.dart
+++ b/lib/api/api_client.dart
@@ -7,8 +7,8 @@ import 'package:http/http.dart';
import 'package:http/io_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart';
-
-import '../main.dart';
+import 'package:mohem_flutter_app/main.dart';
+// ignore_for_file: avoid_annotating_with_dynamic
typedef FactoryConstructor = U Function(dynamic);
diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart
index 444eb21..215af90 100644
--- a/lib/api/dashboard_api_client.dart
+++ b/lib/api/dashboard_api_client.dart
@@ -1,17 +1,13 @@
import 'dart:async';
+import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
-import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
-import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
-import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:uuid/uuid.dart';
-import 'api_client.dart';
-
class DashboardApiClient {
static final DashboardApiClient _instance = DashboardApiClient._internal();
diff --git a/lib/api/eit_api_client.dart b/lib/api/eit_api_client.dart
index e3f78bf..9e4f292 100644
--- a/lib/api/eit_api_client.dart
+++ b/lib/api/eit_api_client.dart
@@ -10,7 +10,7 @@ import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
-import 'api_client.dart';
+import 'package:mohem_flutter_app/api/api_client.dart';
class EITApiClient {
static final EITApiClient _instance = EITApiClient._internal();
@@ -24,7 +24,7 @@ class EITApiClient {
Map postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
- List? responseData = GET_EIT_Transactions_Model.fromJson(json['GetEITTransactionList'][0]).collectionTransaction;
+ List? responseData = GetEitTransactionsModel.fromJson(json['GetEITTransactionList'][0]).collectionTransaction;
return responseData;
}, url, postParams);
}
diff --git a/lib/api/login_api_client.dart b/lib/api/login_api_client.dart
index ed7191c..8016ab9 100644
--- a/lib/api/login_api_client.dart
+++ b/lib/api/login_api_client.dart
@@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
-import 'api_client.dart';
+import 'package:mohem_flutter_app/api/api_client.dart';
class LoginApiClient {
static final LoginApiClient _instance = LoginApiClient._internal();
diff --git a/lib/api/monthlyAttendance_api_client.dart b/lib/api/monthlyAttendance_api_client.dart
index bcbf69f..543addb 100644
--- a/lib/api/monthlyAttendance_api_client.dart
+++ b/lib/api/monthlyAttendance_api_client.dart
@@ -8,8 +8,9 @@ import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.d
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
-import 'api_client.dart';
+import 'package:mohem_flutter_app/api/api_client.dart';
+// todo '@fatima' change file name according to structure
class MonthlyAttendanceApiClient {
static final MonthlyAttendanceApiClient _instance = MonthlyAttendanceApiClient._internal();
@@ -17,7 +18,6 @@ class MonthlyAttendanceApiClient {
factory MonthlyAttendanceApiClient() => _instance;
-
Future getTimeCardSummary(String month, int year) async {
String url = "${ApiConsts.erpRest}GET_TIME_CARD_SUMMARY";
Map postParams = {
diff --git a/lib/api/monthly_pay_slip_api_client.dart b/lib/api/monthly_pay_slip_api_client.dart
new file mode 100644
index 0000000..95bf847
--- /dev/null
+++ b/lib/api/monthly_pay_slip_api_client.dart
@@ -0,0 +1,68 @@
+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/monthly_pay_slip/get_deductions_List_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_earnings_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_pay_slip_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_payment_information_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_summary_of_payment_list_model.dart';
+
+class MonthlyPaySlipApiClient {
+ static final MonthlyPaySlipApiClient _instance = MonthlyPaySlipApiClient._internal();
+
+ MonthlyPaySlipApiClient._internal();
+
+ factory MonthlyPaySlipApiClient() => _instance;
+
+ Future> getPaySlip() async {
+ String url = "${ApiConsts.erpRest}GET_PAYSLIP";
+ Map postParams = {"P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999};
+ postParams.addAll(AppState().postParamsJson);
+ print(postParams);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getPayslipList ?? [];
+ }, url, postParams);
+ }
+
+ Future> getSummaryOfPayment(int pActionContextID) async {
+ String url = "${ApiConsts.erpRest}GET_SUMMARY_OF_PAYMENT";
+ Map postParams = {"P_ACTION_CONTEXT_ID": pActionContextID};
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getSummaryOfPaymentList ?? [];
+ }, url, postParams);
+ }
+
+ Future> getPaymentInformation(int pActionContextID) async {
+ String url = "${ApiConsts.erpRest}GET_PAYMENT_INFORMATION";
+ Map postParams = {"P_ACTION_CONTEXT_ID": pActionContextID};
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getPaymentInformationList ?? [];
+ }, url, postParams);
+ }
+
+ Future> getDeductions(int pActionContextID) async {
+ String url = "${ApiConsts.erpRest}GET_DEDUCTIONS";
+ Map postParams = {"P_ACTION_CONTEXT_ID": pActionContextID, "P_PAGE_LIMIT": 100, "P_PAGE_NUM": 1};
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getDeductionsList ?? [];
+ }, url, postParams);
+ }
+
+ Future> getEarnings(int pActionContextID) async {
+ String url = "${ApiConsts.erpRest}GET_EARNINGS";
+ Map postParams = {"P_ACTION_CONTEXT_ID": pActionContextID, "P_PAGE_LIMIT": 100, "P_PAGE_NUM": 1};
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getEarningsList ?? [];
+ }, url, postParams);
+ }
+}
diff --git a/lib/api/mowadhafhi/mowadhafhi_api_client.dart b/lib/api/mowadhafhi/mowadhafhi_api_client.dart
index 935a22f..e5ecc4b 100644
--- a/lib/api/mowadhafhi/mowadhafhi_api_client.dart
+++ b/lib/api/mowadhafhi/mowadhafhi_api_client.dart
@@ -9,8 +9,7 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_section_topics.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_details.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart';
-
-import '../../models/mowadhafhi/get_tickets_list.dart';
+import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
class MowadhafhiApiClient {
static final MowadhafhiApiClient _instance = MowadhafhiApiClient._internal();
@@ -115,7 +114,7 @@ class MowadhafhiApiClient {
String url = "${ApiConsts.cocRest}Mohemm_ITG_CreateTicketMobile";
Map postParams = {
"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
- "ItgImageCollList" : attachmentList,
+ "ItgImageCollList": attachmentList,
"channelId": 3,
"departmentId": departmentID,
"description": description,
diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart
index afae637..b98aed4 100644
--- a/lib/api/my_attendance_api_client.dart
+++ b/lib/api/my_attendance_api_client.dart
@@ -9,7 +9,7 @@ import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
-import 'api_client.dart';
+import 'package:mohem_flutter_app/api/api_client.dart';
class MyAttendanceApiClient {
static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal();
diff --git a/lib/api/pending_transactions_api_client.dart b/lib/api/pending_transactions_api_client.dart
new file mode 100644
index 0000000..b8ddd60
--- /dev/null
+++ b/lib/api/pending_transactions_api_client.dart
@@ -0,0 +1,48 @@
+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/pending_transactions/get_pending_transactions_details.dart';
+import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.dart';
+
+// todo '@haroon' kindly format code
+
+class PendingTransactionsApiClient {
+ static final PendingTransactionsApiClient _instance = PendingTransactionsApiClient._internal();
+
+ PendingTransactionsApiClient._internal();
+
+ factory PendingTransactionsApiClient() => _instance;
+
+ Future> getPendingReqFunctions() async {
+ String url = "${ApiConsts.erpRest}GET_PENDING_REQ_FUNCTIONS";
+ Map postParams = {};
+
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getPendingTransactionsFunctions ?? [];
+ }, url, postParams);
+ }
+
+ Future> getPendingTransactionsDetails(String functionID, String dateFrom, String dateTo) async {
+ String url = "${ApiConsts.erpRest}GET_PENDING_REQ_DETAILS";
+ Map postParams = {"P_FUNCTION_ID": functionID, "P_PAGE_LIMIT": 20, "P_PAGE_NUM": 1, "P_CREATION_DATE_FROM": dateFrom, "P_CREATION_DATE_TO": dateTo};
+
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.getPendingTransactionsDetails ?? [];
+ }, url, postParams);
+ }
+
+ Future getAnnouncements(int itgAwarenessID, int itgPageNo, int itgRowID) async {
+ String url = "${ApiConsts.cocRest}GetAnnouncementDiscountsConfigData";
+ Map postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER.toString(), "ItgAwarenessID": itgAwarenessID, "ItgPageNo": itgPageNo, "ItgPageSize": 5, "ItgRowID": itgRowID};
+ postParams.addAll(AppState().postParamsJson);
+ return await ApiClient().postJsonForObject((json) {
+ GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
+ return responseData.mohemmITGResponseItem ?? "";
+ }, url, postParams);
+ }
+}
diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart
index 5c1f2b7..cb6266e 100644
--- a/lib/api/profile_api_client.dart
+++ b/lib/api/profile_api_client.dart
@@ -17,7 +17,7 @@ import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
-import 'api_client.dart';
+import 'package:mohem_flutter_app/api/api_client.dart';
class ProfileApiClient {
static final ProfileApiClient _instance = ProfileApiClient._internal();
diff --git a/lib/api/tangheem_user_api_client.dart b/lib/api/tangheem_user_api_client.dart
deleted file mode 100644
index 32a5a82..0000000
--- a/lib/api/tangheem_user_api_client.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-import 'dart:async';
-
-import 'package:mohem_flutter_app/classes/consts.dart';
-import 'package:mohem_flutter_app/models/content_info_model.dart';
-import 'package:mohem_flutter_app/models/member_login_list_model.dart';
-import 'package:mohem_flutter_app/models/surah_model.dart';
-
-import 'api_client.dart';
-
-class TangheemUserApiClient {
- static final TangheemUserApiClient _instance = TangheemUserApiClient._internal();
-
- TangheemUserApiClient._internal();
-
- factory TangheemUserApiClient() => _instance;
-
- // Future getSurahs() async {
- // String url = "${ApiConsts.tangheemUsers}AlSuar_Get";
- // var postParams = {};
- // return await ApiClient().postJsonForObject((json) => SurahModel.fromJson(json), url, postParams);
- // }
- //
- // Future getMembers() async {
- // String url = "${ApiConsts.tangheemUsers}Committee_Get";
- // var postParams = {};
- // return await ApiClient().postJsonForObject((json) => MemberModel.fromJson(json), url, postParams);
- // }
- //
- // Future getContentInfo(int contentId) async {
- // String url = "${ApiConsts.tangheemUsers}ContentInfo_Get";
- // var postParams = {"contentTypeId": contentId};
- // return await ApiClient().postJsonForObject((json) => ContentInfoModel.fromJson(json), url, postParams);
- // }
-}
diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart
index 2cb4a5c..bc05627 100644
--- a/lib/api/worklist/worklist_api_client.dart
+++ b/lib/api/worklist/worklist_api_client.dart
@@ -20,17 +20,14 @@ import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_mod
import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
+import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
+import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart';
+import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
+import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart';
-import '../../models/worklist/hr/eit_otification_body_model.dart';
-import '../../models/worklist/get_favorite_replacements_model.dart';
-import '../../models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
-import '../../models/worklist/hr/get_contact_notification_body_list_model.dart';
-import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
-import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
-
class WorkListApiClient {
static final WorkListApiClient _instance = WorkListApiClient._internal();
diff --git a/lib/classes/app_permissions.dart b/lib/classes/app_permissions.dart
index a70342c..983b400 100644
--- a/lib/classes/app_permissions.dart
+++ b/lib/classes/app_permissions.dart
@@ -1,7 +1,7 @@
import 'package:permission_handler/permission_handler.dart';
class AppPermissions{
- static location(Function(bool) completion) {
+ static void location(Function(bool) completion) {
Permission.location.isGranted.then((isGranted){
if(!isGranted){
Permission.location.request().then((granted){
@@ -13,7 +13,7 @@ class AppPermissions{
}
- static checkAll(Function(bool) completion){
+ static void checkAll(Function(bool) completion){
[
Permission.location
].request().then((value){
diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart
index c350cb6..8754fdb 100644
--- a/lib/classes/date_uitl.dart
+++ b/lib/classes/date_uitl.dart
@@ -61,7 +61,7 @@ class DateUtil {
static String convertDateToString(DateTime date) {
const start = "/Date(";
- const end = "+0300)";
+ const end = "+0300)/";
int milliseconds = date.millisecondsSinceEpoch;
return start + "$milliseconds" + end;
@@ -133,7 +133,7 @@ class DateUtil {
/// get month by
/// [month] convert month number in to month name
- static getMonth(int month) {
+ static String getMonth(int month) {
switch (month) {
case 1:
return "January";
@@ -159,12 +159,14 @@ class DateUtil {
return "November";
case 12:
return "December";
+ default:
+ return "";
}
}
/// get month by
/// [month] convert month number in to month name in Arabic
- static getMonthArabic(int month) {
+ static String getMonthArabic(int month) {
switch (month) {
case 1:
return "يناير";
@@ -190,10 +192,12 @@ class DateUtil {
return " نوفمبر";
case 12:
return "ديسمبر";
+ default:
+ return "";
}
}
- static getMonthByName(String month) {
+ static int getMonthByName(String month) {
switch (month.toLowerCase()) {
case 'january':
return 1;
@@ -219,6 +223,8 @@ class DateUtil {
return 11;
case 'december':
return 12;
+ default:
+ return 0;
}
}
@@ -234,7 +240,7 @@ class DateUtil {
/// get month by
/// [weekDay] convert week day in int to week day name
- static getWeekDay(int weekDay) {
+ static String getWeekDay(int weekDay) {
switch (weekDay) {
case 1:
return "Monday";
@@ -250,12 +256,14 @@ class DateUtil {
return "Saturday ";
case 7:
return "Sunday";
+ default:
+ return "";
}
}
/// get month by
/// [weekDay] convert week day in int to week day name arabic
- static getWeekDayArabic(int weekDay) {
+ static String getWeekDayArabic(int weekDay) {
switch (weekDay) {
case 1:
return "الاثنين";
@@ -271,10 +279,12 @@ class DateUtil {
return "السبت ";
case 7:
return "الاحد";
+ default:
+ return "";
}
}
- static getWeekDayEnglish(int weekDay) {
+ static String getWeekDayEnglish(int weekDay) {
switch (weekDay) {
case 1:
return "Monday";
@@ -290,6 +300,8 @@ class DateUtil {
return "Saturday ";
case 7:
return "Sunday";
+ default:
+ return "";
}
}
@@ -415,7 +427,7 @@ class DateUtil {
return DateFormat(formattedString).format(dateTime);
}
- static convertISODateToJsonDate(String isoDate) {
+ static String convertISODateToJsonDate(String isoDate) {
return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/";
}
diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart
index 959333e..292bc4c 100644
--- a/lib/classes/utils.dart
+++ b/lib/classes/utils.dart
@@ -1,16 +1,22 @@
import 'dart:convert';
import 'dart:typed_data';
+import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
+import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart';
-
-// import 'package:fluttertoast/fluttertoast.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.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/widgets/dialogs/confirm_dialog.dart';
import 'package:mohem_flutter_app/widgets/loading_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';
+// ignore_for_file: avoid_annotating_with_dynamic
class Utils {
static bool _isLoadingVisible = false;
@@ -118,12 +124,30 @@ class Utils {
);
}
- static getPostBytes(img) {
+ static Widget getNoDataWidget(BuildContext context) {
+ return Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ SvgPicture.asset('assets/images/not_found.svg', width: 110.0, height: 110.0),
+ Container(margin: const EdgeInsets.only(top: 15.0), child: LocaleKeys.noDataAvailable.tr().toText16().center),
+ ],
+ ).center;
+ }
+
+ static Uint8List getPostBytes(img) {
try {
var b64 = img.replaceFirst('data:image/png;base64,', '');
if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64);
} catch (e) {}
- return null;
+ return Uint8List.fromList([]);
+ }
+
+ static String getBase64FromJpeg(img) {
+ try {
+ var b64 = img.replaceFirst('data:image/jpeg;base64,', '');
+ return b64;
+ } catch (e) {}
+ return "";
}
static bool isBase64(String str) {
@@ -134,4 +158,38 @@ class Utils {
static Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
+
+ static Widget tableColumnTitle(String? text, {bool showDivider = true, bool alignCenter = false}) {
+ text ??= "";
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ 6.height,
+ alignCenter ? text.toText12().center : text.toText12(),
+ 5.height,
+ if (showDivider)
+ const Divider(
+ height: 1,
+ color: Color(0xff2E303A),
+ thickness: 1,
+ )
+ ],
+ );
+ }
+
+ static Widget tableColumnValue(String text, {bool isCapitable = true, bool alignCenter = false}) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ 12.height,
+ if (alignCenter)
+ (isCapitable ? text.toLowerCase().capitalizeFirstofEach : text).toText12(color: MyColors.normalTextColor).center
+ else
+ (isCapitable ? text.toLowerCase().capitalizeFirstofEach : text).toText12(color: MyColors.normalTextColor),
+ 12.height,
+ ],
+ );
+ }
}
diff --git a/lib/config/routes.dart b/lib/config/routes.dart
index 101bafb..c18219d 100644
--- a/lib/config/routes.dart
+++ b/lib/config/routes.dart
@@ -12,18 +12,23 @@ import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/my_attendance_screen.dart';
+import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart';
import 'package:mohem_flutter_app/ui/profile/basic_details.dart';
import 'package:mohem_flutter_app/ui/profile/contact_details.dart';
import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/family_members.dart';
import 'package:mohem_flutter_app/ui/profile/personal_info.dart';
+import 'package:mohem_flutter_app/ui/screens/announcements/announcement_details.dart';
+import 'package:mohem_flutter_app/ui/screens/announcements/announcements.dart';
import 'package:mohem_flutter_app/ui/profile/add_update_family_member.dart';
-
// import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart';
import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart';
+import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_home.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/request_details.dart';
+import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transactions.dart';
+import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transactions_details.dart';
import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart';
import 'package:mohem_flutter_app/ui/screens/submenu_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart';
@@ -31,8 +36,6 @@ import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
-import '../ui/screens/mowadhafhi/mowadhafhi_home.dart';
-
class AppRoutes {
static const String splash = "/splash";
static const String registerSelection = "/registerSelection";
@@ -85,6 +88,17 @@ class AppRoutes {
static const String mowadhafhiDetails = "/mowadhafhiDetails";
static const String mowadhafhiHRRequest = "/mowadhafhiHRRequest";
+ // Pending Transactions
+ static const String pendingTransactions = "/pendingTransactions";
+ static const String pendingTransactionsDetails = "/pendingTransactionsDetails";
+
+ // Announcements
+ static const String announcements = "/announcements";
+ static const String announcementsDetails = "/announcementsDetails";
+
+ //Pay slip
+ static const String monthlyPaySlip = "/monthlyPaySlip";
+
static final Map routes = {
login: (context) => LoginScreen(),
verifyLogin: (context) => VerifyLoginScreen(),
@@ -133,5 +147,14 @@ class AppRoutes {
mowadhafhi: (context) => MowadhafhiHome(),
mowadhafhiDetails: (context) => MowadhafhiRequestDetails(),
mowadhafhiHRRequest: (context) => MowadhafhiHRRequest(),
+
+ pendingTransactions: (context) => PendingTransactions(),
+ pendingTransactionsDetails: (context) => PendingTransactionsDetails(),
+
+ announcements: (context) => Announcements(),
+ announcementsDetails: (context) => AnnouncementDetails(),
+
+ //pay slip
+ monthlyPaySlip: (context) => MonthlyPaySlipScreen(),
};
}
diff --git a/lib/dialogs/otp_dialog.dart b/lib/dialogs/otp_dialog.dart
index 3789980..b761f00 100644
--- a/lib/dialogs/otp_dialog.dart
+++ b/lib/dialogs/otp_dialog.dart
@@ -218,12 +218,12 @@ class OtpDialog {
}
}
- static getSignature() async {
- // if (Platform.isAndroid) {
- // return await SmsRetriever.getAppSignature();
- // } else {
- // return null;
- // }
- }
+ // static getSignature() async {
+ // // if (Platform.isAndroid) {
+ // // return await SmsRetriever.getAppSignature();
+ // // } else {
+ // // return null;
+ // // }
+ // }
}
diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart
index 69aca90..869b61c 100644
--- a/lib/extensions/string_extensions.dart
+++ b/lib/extensions/string_extensions.dart
@@ -23,11 +23,12 @@ extension EmailValidator on String {
Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text(
this,
style: TextStyle(
- fontSize: 11,
- fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
- color: color ?? MyColors.darkTextColor,
- letterSpacing: -0.33,
- decoration: isUnderLine ? TextDecoration.underline : null),
+ fontSize: 11,
+ fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
+ color: color ?? MyColors.darkTextColor,
+ letterSpacing: -0.33,
+ decoration: isUnderLine ? TextDecoration.underline : null,
+ ),
);
Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text(
@@ -35,11 +36,12 @@ extension EmailValidator on String {
textAlign: isCenter ? TextAlign.center : null,
maxLines: (maxLine > 0) ? maxLine : null,
style: TextStyle(
- fontSize: 12,
- fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
- color: color ?? MyColors.darkTextColor,
- letterSpacing: -0.72,
- decoration: isUnderLine ? TextDecoration.underline : null),
+ fontSize: 12,
+ fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
+ color: color ?? MyColors.darkTextColor,
+ letterSpacing: -0.72,
+ decoration: isUnderLine ? TextDecoration.underline : null,
+ ),
);
Widget toText13({Color? color, bool isUnderLine = false}) => Text(
@@ -52,7 +54,7 @@ extension EmailValidator on String {
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 14, letterSpacing: -0.48, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
);
- Widget toText16({Color? color, bool isBold = false,int? maxlines}) => Text(
+ Widget toText16({Color? color, bool isBold = false, int? maxlines}) => Text(
this,
maxLines: maxlines,
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
@@ -131,7 +133,7 @@ extension EmailValidator on String {
return "${dates[2]} ${getMonth(int.parse(dates[1]))} ${dates[0]} ${DateFormat('hh:mm a').format(DateFormat('hh:mm:ss').parse(time))}";
}
- getMonth(int month) {
+ String getMonth(int month) {
switch (month) {
case 1:
return "January";
@@ -157,6 +159,8 @@ extension EmailValidator on String {
return "November";
case 12:
return "December";
+ default:
+ return "";
}
}
}
diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart
index f511422..36d523a 100644
--- a/lib/extensions/widget_extensions.dart
+++ b/lib/extensions/widget_extensions.dart
@@ -21,8 +21,8 @@ extension WidgetExtensions on Widget {
baseColor: Color(0xffe8eff0),
highlightColor: Colors.white,
child: Container(
- child: this,
color: Colors.white,
+ child: this,
),
)
: Container(
diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart
index a45063a..13b2b3e 100644
--- a/lib/generated/codegen_loader.g.dart
+++ b/lib/generated/codegen_loader.g.dart
@@ -267,6 +267,18 @@ class CodegenLoader extends AssetLoader{
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
+ "monthlyPaySlip": "قسيمة الراتب الشهرية",
+ "particular": "خاص",
+ "earnings": "أرباح",
+ "deductions": "الخصومات",
+ "paymentMethodName": "اسم طريقة الدفع",
+ "bankName": "اسم البنك",
+ "branchCode": "رمز الفرع",
+ "accountNo": "رقم الحساب",
+ "summaryOfInformation": "ملخص المعلومات",
+ "totalPayAmount": "المبلغ الإجمالي للدفع",
+ "paymentInformation": "معلومات الدفع",
+ "amount": "مقدار",
"correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية",
"selectType": " حدد نوع التغيير الذي تريد القيام به",
"enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية",
@@ -302,14 +314,6 @@ class CodegenLoader extends AssetLoader{
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
- "amount": {
- "zero": "Your amount : {} ",
- "one": "Your amount : {} ",
- "two": "Your amount : {} ",
- "few": "Your amount : {} ",
- "many": "Your amount : {} ",
- "other": "Your amount : {} "
- },
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
@@ -574,6 +578,18 @@ static const Map en_US = {
"writeComment": "Write a comment",
"approversList": "Approvers List",
"yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals",
+ "monthlyPaySlip": "Monthly Pay Slip",
+ "particular": "Particular",
+ "earnings": "Earnings",
+ "deductions": "Deductions",
+ "paymentMethodName": "Payment Method Name",
+ "bankName": "Bank Name",
+ "branchCode": "Branch Code",
+ "accountNo": "Account No",
+ "summaryOfInformation": "Summary of Information",
+ "totalPayAmount": "Total Pay Amount",
+ "paymentInformation": "Payment Information",
+ "amount": "Amount",
"correctCurrentDatails": "correct or complete the current details",
"selectType": "Select the type of change you want to make",
"enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)",
@@ -609,14 +625,6 @@ static const Map en_US = {
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
- "amount": {
- "zero": "Your amount : {} ",
- "one": "Your amount : {} ",
- "two": "Your amount : {} ",
- "few": "Your amount : {} ",
- "many": "Your amount : {} ",
- "other": "Your amount : {} "
- },
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart
index 26dca5b..07c5cde 100644
--- a/lib/generated/locale_keys.g.dart
+++ b/lib/generated/locale_keys.g.dart
@@ -252,6 +252,18 @@ abstract class LocaleKeys {
static const writeComment = 'writeComment';
static const approversList = 'approversList';
static const yourRequestHasBeenSubmittedForApprovals = 'yourRequestHasBeenSubmittedForApprovals';
+ static const monthlyPaySlip = 'monthlyPaySlip';
+ static const particular = 'particular';
+ static const earnings = 'earnings';
+ static const deductions = 'deductions';
+ static const paymentMethodName = 'paymentMethodName';
+ static const bankName = 'bankName';
+ static const branchCode = 'branchCode';
+ static const accountNo = 'accountNo';
+ static const summaryOfInformation = 'summaryOfInformation';
+ static const totalPayAmount = 'totalPayAmount';
+ static const paymentInformation = 'paymentInformation';
+ static const amount = 'amount';
static const correctCurrentDatails = 'correctCurrentDatails';
static const selectType = 'selectType';
static const enterNewInfo = 'enterNewInfo';
@@ -278,7 +290,6 @@ abstract class LocaleKeys {
static const profile_familyDetails = 'profile.familyDetails';
static const profile = 'profile';
static const clicked = 'clicked';
- static const amount = 'amount';
static const gender_with_arg = 'gender.with_arg';
static const gender = 'gender';
static const reset_locale = 'reset_locale';
diff --git a/lib/main.dart b/lib/main.dart
index 77e94e8..cd00082 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -5,20 +5,16 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
+import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/theme/app_theme.dart';
-import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:month_year_picker/month_year_picker.dart';
-import 'package:nfc_manager/nfc_manager.dart';
-import 'package:nfc_manager/platform_tags.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
-import 'config/routes.dart';
-
var logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode)
printer: PrettyPrinter(lineLength: 0), // Use the PrettyPrinter to format and print log
@@ -68,22 +64,17 @@ class MyApp extends StatelessWidget {
builder: (context, orientation, deviceType) {
print(AppState().postParamsObject?.toJson());
var obj = AppState().postParamsObject;
- obj?.languageID = EasyLocalization
- .of(context)
- ?.locale
- .languageCode == "ar" ? 1 : 2;
+ obj?.languageID = EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2;
AppState().setPostParamsModel(obj!);
List delegates = context.localizationDelegates;
- // delegates.add(GlobalMaterialLocalizations.delegate);
- delegates.add(MonthYearPickerLocalizations.delegate,);
+ // delegates.add(GlobalMaterialLocalizations.delegate);
+ delegates.add(
+ MonthYearPickerLocalizations.delegate,
+ );
return MaterialApp(
- theme: AppTheme.getTheme(EasyLocalization
- .of(context)
- ?.locale
- .languageCode == "ar"),
+ theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
debugShowCheckedModeBanner: false,
- localizationsDelegates
- :delegates,
+ localizationsDelegates: delegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
initialRoute: AppRoutes.initialRoute,
diff --git a/lib/models/eit/get_eit_transaction_model.dart b/lib/models/eit/get_eit_transaction_model.dart
index 186ef9c..309c0a4 100644
--- a/lib/models/eit/get_eit_transaction_model.dart
+++ b/lib/models/eit/get_eit_transaction_model.dart
@@ -1,9 +1,9 @@
-class GET_EIT_Transactions_Model {
+class GetEitTransactionsModel {
List? collectionTransaction;
- GET_EIT_Transactions_Model({this.collectionTransaction});
+ GetEitTransactionsModel({this.collectionTransaction});
- GET_EIT_Transactions_Model.fromJson(Map json) {
+ GetEitTransactionsModel.fromJson(Map json) {
if (json['Collection_Transaction'] != null) {
collectionTransaction = [];
json['Collection_Transaction'].forEach((v) {
diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart
index b72fd53..3b04f06 100644
--- a/lib/models/generic_response_model.dart
+++ b/lib/models/generic_response_model.dart
@@ -1,5 +1,12 @@
import 'package:mohem_flutter_app/models/add_att_success_list_model.dart';
import 'package:mohem_flutter_app/models/add_attachment_list_model.dart';
+import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
+import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart';
+import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
+import 'package:mohem_flutter_app/models/dashboard/get_open_missing_swipes_list_model.dart';
+import 'package:mohem_flutter_app/models/dashboard/get_open_notifications_list.dart';
+import 'package:mohem_flutter_app/models/dashboard/list_menu.dart';
+import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_absence_collection_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
@@ -16,6 +23,7 @@ import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart';
+import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_notification_buttons_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
@@ -24,7 +32,13 @@ import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.
import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart';
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/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';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_earnings_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_pay_slip_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_payment_information_list_model.dart';
+import 'package:mohem_flutter_app/models/monthly_pay_slip/get_summary_of_payment_list_model.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_department_sections.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_project_departments.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_projects.dart';
@@ -35,17 +49,15 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
import 'package:mohem_flutter_app/models/notification_action_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
-import 'package:mohem_flutter_app/models/payslip/get_deductions_list.dart';
-import 'package:mohem_flutter_app/models/payslip/get_earnings_list.dart';
-import 'package:mohem_flutter_app/models/payslip/get_payment_information.dart';
-import 'package:mohem_flutter_app/models/payslip/get_payslip.dart';
-import 'package:mohem_flutter_app/models/payslip/get_summary_of_payment.dart';
+import 'package:mohem_flutter_app/models/pending_transactions/get_pending_transactions_details.dart';
+import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.dart';
+import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
-import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
+import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart';
@@ -59,17 +71,6 @@ import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
-import 'basic_member_information_model.dart';
-import 'dashboard/get_accrual_balances_list_model.dart';
-import 'dashboard/get_attendance_tracking_list_model.dart';
-import 'dashboard/get_open_missing_swipes_list_model.dart';
-import 'dashboard/get_open_notifications_list.dart';
-import 'dashboard/list_menu.dart';
-import 'dashboard/menu_entries.dart';
-import 'get_mobile_login_info_list_model.dart';
-import 'member_information_list_model.dart';
-import 'privilege_list_model.dart';
-
class GenericResponseModel {
String? date;
int? languageID;
@@ -178,8 +179,9 @@ class GenericResponseModel {
List? getOrganizationsSalariesList;
List? getPaymentInformationList;
List? getPayslipList;
- List? getPendingReqDetailsList;
- List? getPendingReqFunctionsList;
+
+ // List? getPendingReqDetailsList;
+ // List? getPendingReqFunctionsList;
List? getPerformanceAppraisalList;
List? getPhonesNotificationBodyList;
List? getPoItemHistoryList;
@@ -212,6 +214,8 @@ class GenericResponseModel {
List? getMowadhafhiProjects;
List? getProjectDepartments;
List? getDepartmentSections;
+ List? getPendingTransactionsFunctions;
+ List? getPendingTransactionsDetails;
List? getUserItemTypesList;
List? getVacationRulesList;
List? getVaccinationOnHandList;
@@ -439,8 +443,8 @@ class GenericResponseModel {
this.getOrganizationsSalariesList,
this.getPaymentInformationList,
this.getPayslipList,
- this.getPendingReqDetailsList,
- this.getPendingReqFunctionsList,
+ // this.getPendingReqDetailsList,
+ // this.getPendingReqFunctionsList,
this.getPerformanceAppraisalList,
this.getPhonesNotificationBodyList,
this.getPoItemHistoryList,
@@ -473,6 +477,8 @@ class GenericResponseModel {
this.getMowadhafhiProjects,
this.getProjectDepartments,
this.getDepartmentSections,
+ this.getPendingTransactionsFunctions,
+ this.getPendingTransactionsDetails,
this.getUserItemTypesList,
this.getVacationRulesList,
this.getVaccinationOnHandList,
@@ -739,6 +745,7 @@ class GenericResponseModel {
getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v));
});
}
+
if (json['GetDeductionsList'] != null) {
getDeductionsList = [];
json['GetDeductionsList'].forEach((v) {
@@ -761,6 +768,7 @@ class GenericResponseModel {
getEITTransactionList!.add(new GetEITTransactionList.fromJson(v));
});
}
+
if (json['GetEarningsList'] != null) {
getEarningsList = [];
json['GetEarningsList'].forEach((v) {
@@ -835,21 +843,22 @@ class GenericResponseModel {
getOpenNotificationsNumList = json['GetOpenNotificationsNumList'];
getOpenPeriodDatesList = json['GetOpenPeriodDatesList'];
getOrganizationsSalariesList = json['GetOrganizationsSalariesList'];
+
if (json['GetPaymentInformationList'] != null) {
getPaymentInformationList = [];
json['GetPaymentInformationList'].forEach((v) {
- getPaymentInformationList!
- .add(new GetPaymentInformationList.fromJson(v));
+ getPaymentInformationList!.add(new GetPaymentInformationList.fromJson(v));
});
}
+
if (json['GetPayslipList'] != null) {
getPayslipList = [];
json['GetPayslipList'].forEach((v) {
getPayslipList!.add(new GetPayslipList.fromJson(v));
});
}
- getPendingReqDetailsList = json['GetPendingReqDetailsList'];
- getPendingReqFunctionsList = json['GetPendingReqFunctionsList'];
+ // getPendingReqDetailsList = json['GetPendingReqDetailsList'];
+ // getPendingReqFunctionsList = json['GetPendingReqFunctionsList'];
getPerformanceAppraisalList = json['GetPerformanceAppraisalList'];
getPhonesNotificationBodyList =
json["GetPhonesNotificationBodyList"] == null ? null : List.from(json["GetPhonesNotificationBodyList"].map((x) => GetPhonesNotificationBodyList.fromJson(x)));
@@ -977,6 +986,20 @@ class GenericResponseModel {
});
}
+ if (json['GetPendingReqFunctionsList'] != null) {
+ getPendingTransactionsFunctions = [];
+ json['GetPendingReqFunctionsList'].forEach((v) {
+ getPendingTransactionsFunctions!.add(new GetPendingTransactionsFunctions.fromJson(v));
+ });
+ }
+
+ if (json['GetPendingReqDetailsList'] != null) {
+ getPendingTransactionsDetails = [];
+ json['GetPendingReqDetailsList'].forEach((v) {
+ getPendingTransactionsDetails!.add(new GetPendingTransactionsDetails.fromJson(v));
+ });
+ }
+
getUserItemTypesList = json['GetUserItemTypesList'];
getVacationRulesList = json['GetVacationRulesList'];
getVaccinationOnHandList = json['GetVaccinationOnHandList'];
@@ -1272,9 +1295,9 @@ class GenericResponseModel {
if (this.getDayHoursTypeDetailsList != null) {
data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList!.map((v) => v.toJson()).toList();
}
+
if (this.getDeductionsList != null) {
- data['GetDeductionsList'] =
- this.getDeductionsList!.map((v) => v.toJson()).toList();
+ data['GetDeductionsList'] = this.getDeductionsList!.map((v) => v.toJson()).toList();
}
if (this.getDefaultValueList != null) {
data['GetDefaultValueList'] = this.getDefaultValueList!.toJson();
@@ -1286,9 +1309,9 @@ class GenericResponseModel {
if (this.getEITTransactionList != null) {
data['GetEITTransactionList'] = this.getEITTransactionList!.map((v) => v.toJson()).toList();
}
+
if (this.getEarningsList != null) {
- data['GetEarningsList'] =
- this.getEarningsList!.map((v) => v.toJson()).toList();
+ data['GetEarningsList'] = this.getEarningsList!.map((v) => v.toJson()).toList();
}
if (this.getEmployeeAddressList != null) {
data['GetEmployeeAddressList'] = this.getEmployeeAddressList!.map((v) => v.toJson()).toList();
@@ -1335,15 +1358,13 @@ class GenericResponseModel {
data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList;
data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList;
if (this.getPaymentInformationList != null) {
- data['GetPaymentInformationList'] =
- this.getPaymentInformationList!.map((v) => v.toJson()).toList();
+ data['GetPaymentInformationList'] = this.getPaymentInformationList!.map((v) => v.toJson()).toList();
}
if (this.getPayslipList != null) {
- data['GetPayslipList'] =
- this.getPayslipList!.map((v) => v.toJson()).toList();
+ data['GetPayslipList'] = this.getPayslipList!.map((v) => v.toJson()).toList();
}
- data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList;
- data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList;
+ // data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList;
+ // data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList;
data['GetPerformanceAppraisalList'] = this.getPerformanceAppraisalList;
data['GetPhonesNotificationBodyList'] = this.getPhonesNotificationBodyList;
if (this.getPoItemHistoryList != null) {
@@ -1385,8 +1406,7 @@ class GenericResponseModel {
data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList;
if (this.getSummaryOfPaymentList != null) {
- data['GetSummaryOfPaymentList'] =
- this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList();
+ data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList();
}
data['GetSwipesList'] = this.getSwipesList;
data['GetTermColsStructureList'] = this.getTermColsStructureList;
diff --git a/lib/models/get_absence_collection_notification_body_list_model.dart b/lib/models/get_absence_collection_notification_body_list_model.dart
index 480a81f..057cb64 100644
--- a/lib/models/get_absence_collection_notification_body_list_model.dart
+++ b/lib/models/get_absence_collection_notification_body_list_model.dart
@@ -1,4 +1,3 @@
-
class GetAbsenceCollectionNotificationBodyList {
List? collectionNotification;
@@ -16,8 +15,7 @@ class GetAbsenceCollectionNotificationBodyList {
Map toJson() {
final Map data = new Map();
if (this.collectionNotification != null) {
- data['Collection_Notification'] =
- this.collectionNotification!.map((v) => v.toJson()).toList();
+ data['Collection_Notification'] = this.collectionNotification!.map((v) => v.toJson()).toList();
}
return data;
}
@@ -42,20 +40,20 @@ class CollectionNotificationAbsence {
CollectionNotificationAbsence(
{this.aCTION,
- this.aPPLICATIONCOLUMNNAME,
- this.dATATYPE,
- this.dATEVALUE,
- this.dESCFLEXCONTEXTCODE,
- this.dESCFLEXNAME,
- this.dISPLAYFLAG,
- this.nUMBERVALUE,
- this.pREVSEGMENTVALUEDSP,
- this.sEGMENTNAME,
- this.sEGMENTPROMPT,
- this.sEGMENTSEQNUM,
- this.sEGMENTVALUEDSP,
- this.tRANSACTIONNUMBER,
- this.vARCHAR2VALUE});
+ this.aPPLICATIONCOLUMNNAME,
+ this.dATATYPE,
+ this.dATEVALUE,
+ this.dESCFLEXCONTEXTCODE,
+ this.dESCFLEXNAME,
+ this.dISPLAYFLAG,
+ this.nUMBERVALUE,
+ this.pREVSEGMENTVALUEDSP,
+ this.sEGMENTNAME,
+ this.sEGMENTPROMPT,
+ this.sEGMENTSEQNUM,
+ this.sEGMENTVALUEDSP,
+ this.tRANSACTIONNUMBER,
+ this.vARCHAR2VALUE});
CollectionNotificationAbsence.fromJson(Map json) {
aCTION = json['ACTION'];
@@ -94,4 +92,4 @@ class CollectionNotificationAbsence {
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data;
}
-}
\ No newline at end of file
+}
diff --git a/lib/models/get_announcement_details.dart b/lib/models/get_announcement_details.dart
new file mode 100644
index 0000000..33628ce
--- /dev/null
+++ b/lib/models/get_announcement_details.dart
@@ -0,0 +1,72 @@
+class GetAnnouncementDetails {
+ String? titleEN;
+ String? titleAR;
+ String? emailBodyEN;
+ String? emailBodyAR;
+ String? bodyEN;
+ String? bodyAR;
+ String? bannerImage;
+ String? rowID;
+ String? awarenessName;
+ String? created;
+ String? publishedDesc;
+ String? published;
+ String? twoLanguageTemplateDesc;
+ String? wFStatus;
+ String? totalItems;
+
+ GetAnnouncementDetails(
+ {this.titleEN,
+ this.titleAR,
+ this.emailBodyEN,
+ this.emailBodyAR,
+ this.bodyEN,
+ this.bodyAR,
+ this.bannerImage,
+ this.rowID,
+ this.awarenessName,
+ this.created,
+ this.publishedDesc,
+ this.published,
+ this.twoLanguageTemplateDesc,
+ this.wFStatus,
+ this.totalItems});
+
+ GetAnnouncementDetails.fromJson(Map json) {
+ titleEN = json['Title_EN'];
+ titleAR = json['Title_AR'];
+ emailBodyEN = json['EmailBody_EN'];
+ emailBodyAR = json['EmailBody_AR'];
+ bodyEN = json['Body_EN'];
+ bodyAR = json['Body_AR'];
+ bannerImage = json['Banner_Image'];
+ rowID = json['rowID'];
+ awarenessName = json['awarenessName'];
+ created = json['created'];
+ publishedDesc = json['PublishedDesc'];
+ published = json['Published'];
+ twoLanguageTemplateDesc = json['TwoLanguageTemplateDesc'];
+ wFStatus = json['WFStatus'];
+ totalItems = json['TotalItems'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Title_EN'] = this.titleEN;
+ data['Title_AR'] = this.titleAR;
+ data['EmailBody_EN'] = this.emailBodyEN;
+ data['EmailBody_AR'] = this.emailBodyAR;
+ data['Body_EN'] = this.bodyEN;
+ data['Body_AR'] = this.bodyAR;
+ data['Banner_Image'] = this.bannerImage;
+ data['rowID'] = this.rowID;
+ data['awarenessName'] = this.awarenessName;
+ data['created'] = this.created;
+ data['PublishedDesc'] = this.publishedDesc;
+ data['Published'] = this.published;
+ data['TwoLanguageTemplateDesc'] = this.twoLanguageTemplateDesc;
+ data['WFStatus'] = this.wFStatus;
+ data['TotalItems'] = this.totalItems;
+ return data;
+ }
+}
diff --git a/lib/models/get_announcements.dart b/lib/models/get_announcements.dart
new file mode 100644
index 0000000..05b6988
--- /dev/null
+++ b/lib/models/get_announcements.dart
@@ -0,0 +1,72 @@
+class GetAnnouncementsObject {
+ String? titleEN;
+ String? titleAR;
+ String? bannerImage;
+ String? rowID;
+ String? awarenessName;
+ String? created;
+ String? publishedDesc;
+ String? published;
+ String? twoLanguageTemplateDesc;
+ String? wFStatus;
+ String? totalItems;
+ String? emailBodyEN;
+ String? emailBodyAR;
+ String? bodyEN;
+ String? bodyAR;
+
+ GetAnnouncementsObject(
+ {this.titleEN,
+ this.titleAR,
+ this.bannerImage,
+ this.rowID,
+ this.awarenessName,
+ this.created,
+ this.publishedDesc,
+ this.published,
+ this.twoLanguageTemplateDesc,
+ this.wFStatus,
+ this.totalItems,
+ this.emailBodyEN,
+ this.emailBodyAR,
+ this.bodyEN,
+ this.bodyAR});
+
+ GetAnnouncementsObject.fromJson(Map json) {
+ titleEN = json['Title_EN'];
+ titleAR = json['Title_AR'];
+ bannerImage = json['Banner_Image'];
+ rowID = json['rowID'];
+ awarenessName = json['awarenessName'];
+ created = json['created'];
+ publishedDesc = json['PublishedDesc'];
+ published = json['Published'];
+ twoLanguageTemplateDesc = json['TwoLanguageTemplateDesc'];
+ wFStatus = json['WFStatus'];
+ totalItems = json['TotalItems'];
+ emailBodyEN = json['EmailBody_EN'];
+ emailBodyAR = json['EmailBody_AR'];
+ bodyEN = json['Body_EN'];
+ bodyAR = json['Body_AR'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Title_EN'] = this.titleEN;
+ data['Title_AR'] = this.titleAR;
+ data['Banner_Image'] = this.bannerImage;
+ data['rowID'] = this.rowID;
+ data['awarenessName'] = this.awarenessName;
+ data['created'] = this.created;
+ data['PublishedDesc'] = this.publishedDesc;
+ data['Published'] = this.published;
+ data['TwoLanguageTemplateDesc'] = this.twoLanguageTemplateDesc;
+ data['WFStatus'] = this.wFStatus;
+ data['TotalItems'] = this.totalItems;
+ data['EmailBody_EN'] = this.emailBodyEN;
+ data['EmailBody_AR'] = this.emailBodyAR;
+ data['Body_EN'] = this.bodyEN;
+ data['Body_AR'] = this.bodyAR;
+ return data;
+ }
+}
diff --git a/lib/models/monthly_pay_slip/get_deductions_List_model.dart b/lib/models/monthly_pay_slip/get_deductions_List_model.dart
new file mode 100644
index 0000000..7a99447
--- /dev/null
+++ b/lib/models/monthly_pay_slip/get_deductions_List_model.dart
@@ -0,0 +1,36 @@
+class GetDeductionsList {
+ int? aMOUNT;
+ String? eLEMENTNAME;
+ int? fROMROWNUM;
+ int? nOOFROWS;
+ int? rOWNUM;
+ int? tOROWNUM;
+
+ GetDeductionsList(
+ {this.aMOUNT,
+ this.eLEMENTNAME,
+ this.fROMROWNUM,
+ this.nOOFROWS,
+ this.rOWNUM,
+ this.tOROWNUM});
+
+ GetDeductionsList.fromJson(Map json) {
+ aMOUNT = json['AMOUNT'];
+ eLEMENTNAME = json['ELEMENT_NAME'];
+ fROMROWNUM = json['FROM_ROW_NUM'];
+ nOOFROWS = json['NO_OF_ROWS'];
+ rOWNUM = json['ROW_NUM'];
+ tOROWNUM = json['TO_ROW_NUM'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['AMOUNT'] = this.aMOUNT;
+ data['ELEMENT_NAME'] = this.eLEMENTNAME;
+ data['FROM_ROW_NUM'] = this.fROMROWNUM;
+ data['NO_OF_ROWS'] = this.nOOFROWS;
+ data['ROW_NUM'] = this.rOWNUM;
+ data['TO_ROW_NUM'] = this.tOROWNUM;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/models/monthly_pay_slip/get_earnings_list_model.dart b/lib/models/monthly_pay_slip/get_earnings_list_model.dart
new file mode 100644
index 0000000..4c38fa6
--- /dev/null
+++ b/lib/models/monthly_pay_slip/get_earnings_list_model.dart
@@ -0,0 +1,36 @@
+class GetEarningsList {
+ int? aMOUNT;
+ String? eLEMENTNAME;
+ int? fROMROWNUM;
+ int? nOOFROWS;
+ int? rOWNUM;
+ int? tOROWNUM;
+
+ GetEarningsList(
+ {this.aMOUNT,
+ this.eLEMENTNAME,
+ this.fROMROWNUM,
+ this.nOOFROWS,
+ this.rOWNUM,
+ this.tOROWNUM});
+
+ GetEarningsList.fromJson(Map json) {
+ aMOUNT = json['AMOUNT'];
+ eLEMENTNAME = json['ELEMENT_NAME'];
+ fROMROWNUM = json['FROM_ROW_NUM'];
+ nOOFROWS = json['NO_OF_ROWS'];
+ rOWNUM = json['ROW_NUM'];
+ tOROWNUM = json['TO_ROW_NUM'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['AMOUNT'] = this.aMOUNT;
+ data['ELEMENT_NAME'] = this.eLEMENTNAME;
+ data['FROM_ROW_NUM'] = this.fROMROWNUM;
+ data['NO_OF_ROWS'] = this.nOOFROWS;
+ data['ROW_NUM'] = this.rOWNUM;
+ data['TO_ROW_NUM'] = this.tOROWNUM;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/models/monthly_pay_slip/get_pay_slip_list_model.dart b/lib/models/monthly_pay_slip/get_pay_slip_list_model.dart
new file mode 100644
index 0000000..7cf8883
--- /dev/null
+++ b/lib/models/monthly_pay_slip/get_pay_slip_list_model.dart
@@ -0,0 +1,36 @@
+class GetPayslipList {
+ int? aCTIONCONTEXTID;
+ String? pAYMENTDATE;
+ String? pAYSLIPCHOICE;
+ String? pERIODENDDATE;
+ String? pERIODNAME;
+ String? pERIODSTARTDATE;
+
+ GetPayslipList(
+ {this.aCTIONCONTEXTID,
+ this.pAYMENTDATE,
+ this.pAYSLIPCHOICE,
+ this.pERIODENDDATE,
+ this.pERIODNAME,
+ this.pERIODSTARTDATE});
+
+ GetPayslipList.fromJson(Map json) {
+ aCTIONCONTEXTID = json['ACTION_CONTEXT_ID'];
+ pAYMENTDATE = json['PAYMENT_DATE'];
+ pAYSLIPCHOICE = json['PAYSLIP_CHOICE'];
+ pERIODENDDATE = json['PERIOD_END_DATE'];
+ pERIODNAME = json['PERIOD_NAME'];
+ pERIODSTARTDATE = json['PERIOD_START_DATE'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ACTION_CONTEXT_ID'] = this.aCTIONCONTEXTID;
+ data['PAYMENT_DATE'] = this.pAYMENTDATE;
+ data['PAYSLIP_CHOICE'] = this.pAYSLIPCHOICE;
+ data['PERIOD_END_DATE'] = this.pERIODENDDATE;
+ data['PERIOD_NAME'] = this.pERIODNAME;
+ data['PERIOD_START_DATE'] = this.pERIODSTARTDATE;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/models/monthly_pay_slip/get_payment_information_list_model.dart b/lib/models/monthly_pay_slip/get_payment_information_list_model.dart
new file mode 100644
index 0000000..75ed21c
--- /dev/null
+++ b/lib/models/monthly_pay_slip/get_payment_information_list_model.dart
@@ -0,0 +1,32 @@
+class GetPaymentInformationList {
+ String? aCCOUNTNUMBER;
+ String? aMOUNT;
+ String? bANKNAME;
+ String? bRANCHNAME;
+ String? pAYMENTMETHODNAME;
+
+ GetPaymentInformationList(
+ {this.aCCOUNTNUMBER,
+ this.aMOUNT,
+ this.bANKNAME,
+ this.bRANCHNAME,
+ this.pAYMENTMETHODNAME});
+
+ GetPaymentInformationList.fromJson(Map json) {
+ aCCOUNTNUMBER = json['ACCOUNT_NUMBER'];
+ aMOUNT = json['AMOUNT'];
+ bANKNAME = json['BANK_NAME'];
+ bRANCHNAME = json['BRANCH_NAME'];
+ pAYMENTMETHODNAME = json['PAYMENT_METHOD_NAME'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ACCOUNT_NUMBER'] = this.aCCOUNTNUMBER;
+ data['AMOUNT'] = this.aMOUNT;
+ data['BANK_NAME'] = this.bANKNAME;
+ data['BRANCH_NAME'] = this.bRANCHNAME;
+ data['PAYMENT_METHOD_NAME'] = this.pAYMENTMETHODNAME;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/models/monthly_pay_slip/get_summary_of_payment_list_model.dart b/lib/models/monthly_pay_slip/get_summary_of_payment_list_model.dart
new file mode 100644
index 0000000..72ee89b
--- /dev/null
+++ b/lib/models/monthly_pay_slip/get_summary_of_payment_list_model.dart
@@ -0,0 +1,36 @@
+class GetSummaryOfPaymentList {
+ int? tOTALDEDUCTIONSAMOUNT;
+ int? tOTALDEDUCTIONSPERCENTAGE;
+ int? tOTALEARNINGSAMOUNT;
+ int? tOTALEARNINGSPERCENTAGE;
+ int? tOTALPAYAMOUNT;
+ int? tOTALPAYPERCENTAGE;
+
+ GetSummaryOfPaymentList(
+ {this.tOTALDEDUCTIONSAMOUNT,
+ this.tOTALDEDUCTIONSPERCENTAGE,
+ this.tOTALEARNINGSAMOUNT,
+ this.tOTALEARNINGSPERCENTAGE,
+ this.tOTALPAYAMOUNT,
+ this.tOTALPAYPERCENTAGE});
+
+ GetSummaryOfPaymentList.fromJson(Map json) {
+ tOTALDEDUCTIONSAMOUNT = json['TOTAL_DEDUCTIONS_AMOUNT'];
+ tOTALDEDUCTIONSPERCENTAGE = json['TOTAL_DEDUCTIONS_PERCENTAGE'];
+ tOTALEARNINGSAMOUNT = json['TOTAL_EARNINGS_AMOUNT'];
+ tOTALEARNINGSPERCENTAGE = json['TOTAL_EARNINGS_PERCENTAGE'];
+ tOTALPAYAMOUNT = json['TOTAL_PAY_AMOUNT'];
+ tOTALPAYPERCENTAGE = json['TOTAL_PAY_PERCENTAGE'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['TOTAL_DEDUCTIONS_AMOUNT'] = this.tOTALDEDUCTIONSAMOUNT;
+ data['TOTAL_DEDUCTIONS_PERCENTAGE'] = this.tOTALDEDUCTIONSPERCENTAGE;
+ data['TOTAL_EARNINGS_AMOUNT'] = this.tOTALEARNINGSAMOUNT;
+ data['TOTAL_EARNINGS_PERCENTAGE'] = this.tOTALEARNINGSPERCENTAGE;
+ data['TOTAL_PAY_AMOUNT'] = this.tOTALPAYAMOUNT;
+ data['TOTAL_PAY_PERCENTAGE'] = this.tOTALPAYPERCENTAGE;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/models/pending_transactions/get_pending_transactions_details.dart b/lib/models/pending_transactions/get_pending_transactions_details.dart
new file mode 100644
index 0000000..0752269
--- /dev/null
+++ b/lib/models/pending_transactions/get_pending_transactions_details.dart
@@ -0,0 +1,56 @@
+class GetPendingTransactionsDetails {
+ String? cREATIONDATE;
+ int? fROMROWNUM;
+ String? iTEMKEY;
+ int? nOOFROWS;
+ String? rEQUESTTYPE;
+ int? rOWNUM;
+ int? tOROWNUM;
+ String? tRANSACTIONCREATEDFOR;
+ int? tRANSACTIONID;
+ String? tRANSACTIONINITIATOR;
+ String? uSERFUNCTIONNAME;
+
+ GetPendingTransactionsDetails(
+ {this.cREATIONDATE,
+ this.fROMROWNUM,
+ this.iTEMKEY,
+ this.nOOFROWS,
+ this.rEQUESTTYPE,
+ this.rOWNUM,
+ this.tOROWNUM,
+ this.tRANSACTIONCREATEDFOR,
+ this.tRANSACTIONID,
+ this.tRANSACTIONINITIATOR,
+ this.uSERFUNCTIONNAME});
+
+ GetPendingTransactionsDetails.fromJson(Map json) {
+ cREATIONDATE = json['CREATION_DATE'];
+ fROMROWNUM = json['FROM_ROW_NUM'];
+ iTEMKEY = json['ITEM_KEY'];
+ nOOFROWS = json['NO_OF_ROWS'];
+ rEQUESTTYPE = json['REQUEST_TYPE'];
+ rOWNUM = json['ROW_NUM'];
+ tOROWNUM = json['TO_ROW_NUM'];
+ tRANSACTIONCREATEDFOR = json['TRANSACTION_CREATED_FOR'];
+ tRANSACTIONID = json['TRANSACTION_ID'];
+ tRANSACTIONINITIATOR = json['TRANSACTION_INITIATOR'];
+ uSERFUNCTIONNAME = json['USER_FUNCTION_NAME'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['CREATION_DATE'] = this.cREATIONDATE;
+ data['FROM_ROW_NUM'] = this.fROMROWNUM;
+ data['ITEM_KEY'] = this.iTEMKEY;
+ data['NO_OF_ROWS'] = this.nOOFROWS;
+ data['REQUEST_TYPE'] = this.rEQUESTTYPE;
+ data['ROW_NUM'] = this.rOWNUM;
+ data['TO_ROW_NUM'] = this.tOROWNUM;
+ data['TRANSACTION_CREATED_FOR'] = this.tRANSACTIONCREATEDFOR;
+ data['TRANSACTION_ID'] = this.tRANSACTIONID;
+ data['TRANSACTION_INITIATOR'] = this.tRANSACTIONINITIATOR;
+ data['USER_FUNCTION_NAME'] = this.uSERFUNCTIONNAME;
+ return data;
+ }
+}
diff --git a/lib/models/pending_transactions/get_req_functions.dart b/lib/models/pending_transactions/get_req_functions.dart
new file mode 100644
index 0000000..bfb5892
--- /dev/null
+++ b/lib/models/pending_transactions/get_req_functions.dart
@@ -0,0 +1,22 @@
+class GetPendingTransactionsFunctions {
+ int? fUNCTIONID;
+ String? fUNCTIONNAME;
+ String? fUNCTIONPROMPT;
+
+ GetPendingTransactionsFunctions(
+ {this.fUNCTIONID, this.fUNCTIONNAME, this.fUNCTIONPROMPT});
+
+ GetPendingTransactionsFunctions.fromJson(Map json) {
+ fUNCTIONID = json['FUNCTION_ID'];
+ fUNCTIONNAME = json['FUNCTION_NAME'];
+ fUNCTIONPROMPT = json['FUNCTION_PROMPT'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['FUNCTION_ID'] = this.fUNCTIONID;
+ data['FUNCTION_NAME'] = this.fUNCTIONNAME;
+ data['FUNCTION_PROMPT'] = this.fUNCTIONPROMPT;
+ return data;
+ }
+}
diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart
index 9316182..a78fd67 100644
--- a/lib/provider/dashboard_provider_model.dart
+++ b/lib/provider/dashboard_provider_model.dart
@@ -11,7 +11,6 @@ import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
-import 'package:mohem_flutter_app/widgets/Updater.dart';
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
// ignore: prefer_mixin
@@ -71,7 +70,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
return ((hour * 60 * 60) + (mints * 60) + seconds);
}
- update(context) {
+ void update(context) {
fetchAttendanceTracking(context);
// isAttendanceTrackingLoading = !isAttendanceTrackingLoading;
// isWorkListLoading = !isWorkListLoading;
@@ -137,7 +136,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
//List Menu API's & Methods
- fetchListMenu() async {
+ void fetchListMenu() async {
try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu();
Map map = {};
@@ -156,7 +155,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
//Menu Entries API's & Methods
- fetchMenuEntries() async {
+ void fetchMenuEntries() async {
try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries();
getMenuEntriesList = genericResponseModel!.getMenuEntriesList;
diff --git a/lib/theme/app_theme.dart b/lib/theme/app_theme.dart
index 51987cd..586c3aa 100644
--- a/lib/theme/app_theme.dart
+++ b/lib/theme/app_theme.dart
@@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/theme/colors.dart';
class AppTheme {
- static getTheme(isArabic) => ThemeData(
+ static ThemeData getTheme(isArabic) => ThemeData(
fontFamily: isArabic ? 'Cairo' : 'Poppins',
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
diff --git a/lib/ui/attendance/monthly_attendance.dart b/lib/ui/attendance/monthly_attendance.dart
index 9ec5cdd..de5c9c9 100644
--- a/lib/ui/attendance/monthly_attendance.dart
+++ b/lib/ui/attendance/monthly_attendance.dart
@@ -1,27 +1,23 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart';
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
-import 'package:flutter/scheduler.dart';
+import 'package:intl/intl.dart';
import 'package:mohem_flutter_app/api/monthlyAttendance_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
+import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
-import 'package:provider/provider.dart';
-import 'package:syncfusion_flutter_calendar/calendar.dart';
-import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
-import 'package:flutter/cupertino.dart';
-import 'package:pie_chart/pie_chart.dart';
-import 'package:flutter_localizations/flutter_localizations.dart';
-import 'package:intl/intl.dart';
-import 'package:month_year_picker/month_year_picker.dart';
import 'package:month_picker_dialog/month_picker_dialog.dart';
+import 'package:pie_chart/pie_chart.dart';
+import 'package:syncfusion_flutter_calendar/calendar.dart';
class MonthlyAttendance extends StatefulWidget {
MonthlyAttendance({Key? key}) : super(key: key);
@@ -32,6 +28,8 @@ class MonthlyAttendance extends StatefulWidget {
}
}
+// todo '@fatima' use extension methods for widgets
+
class _MonthlyAttendanceState extends State {
bool isPresent = false;
bool isAbsent = false;
@@ -69,7 +67,6 @@ class _MonthlyAttendanceState extends State {
}
}
-
Future getScheduleShiftsDetails(index, pRTPID) async {
try {
Utils.showLoading(context);
@@ -330,7 +327,7 @@ class _MonthlyAttendanceState extends State {
),
alignment: Alignment.center,
child: Text(
- "${val}",
+ "$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
@@ -361,7 +358,7 @@ class _MonthlyAttendanceState extends State {
),
alignment: Alignment.center,
child: Text(
- "${val}",
+ "$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
@@ -387,7 +384,7 @@ class _MonthlyAttendanceState extends State {
),
alignment: Alignment.center,
child: Text(
- "${val}",
+ "$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
@@ -411,7 +408,7 @@ class _MonthlyAttendanceState extends State {
),
alignment: Alignment.center,
child: Text(
- "${val}",
+ "$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
@@ -430,7 +427,7 @@ class _MonthlyAttendanceState extends State {
);
}
- calendarTapped(CalendarTapDetails details) async {
+ void calendarTapped(CalendarTapDetails details) async {
dynamic index = details.date?.day;
if (index != null) {
index = index - 1;
@@ -458,8 +455,8 @@ class _MonthlyAttendanceState extends State {
maxChildSize: 0.9,
expand: false,
builder: (_, controller) {
- dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
- DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
+ dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
+ DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
return Column(
children: [
Container(
@@ -485,11 +482,11 @@ class _MonthlyAttendanceState extends State {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Container(child:
- "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
+ Container(
+ child: "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
).paddingOnly(top: 26, left: 21, right: 21),
Container(
- child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21,bottom: 16),
+ child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21, bottom: 16),
),
Center(
child: CircularStepProgressBar(
@@ -540,8 +537,8 @@ class _MonthlyAttendanceState extends State {
color: MyColors.grey67Color,
),
8.height,
- "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" !=""
- ? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
+ "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != ""
+ ? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
],
),
@@ -555,7 +552,7 @@ class _MonthlyAttendanceState extends State {
),
8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != ""
- ? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
+ ? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
],
),
@@ -579,9 +576,9 @@ class _MonthlyAttendanceState extends State {
color: MyColors.grey67Color,
),
8.height,
- "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" !=""
- ? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
- :"__".toText22(color: MyColors.greenColor, isBold: true),
+ "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != ""
+ ? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
+ : "__".toText22(color: MyColors.greenColor, isBold: true),
],
),
),
@@ -593,9 +590,9 @@ class _MonthlyAttendanceState extends State {
color: MyColors.grey67Color,
),
8.height,
- "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}"!= ""
- ? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
- :"__".toText22(color: MyColors.greenColor, isBold: true),
+ "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != ""
+ ? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
+ : "__".toText22(color: MyColors.greenColor, isBold: true),
],
),
],
@@ -693,7 +690,7 @@ class _MonthlyAttendanceState extends State {
return meetings;
}
- static getMonth(int month) {
+ static String getMonth(int month) {
switch (month) {
case 1:
return "January";
@@ -719,36 +716,40 @@ class _MonthlyAttendanceState extends State {
return "November";
case 12:
return "December";
+ default:
+ return "";
}
}
- static getMonthAr(int month){
- switch (month) {
- case 1:
- return 'يناير';
- case 2:
- return ' فبراير';
- case 3:
- return 'مارس';
- case 4:
- return 'أبريل';
- case 5:
- return 'مايو';
- case 6:
- return 'يونيو';
- case 7:
- return 'يوليو';
- case 8:
- return 'أغسطس';
- case 9:
- return 'سبتمبر';
- case 10:
- return ' اكتوبر';
- case 11:
- return ' نوفمبر';
- case 12:
- return 'ديسمبر';
- }
+ static String getMonthAr(int month) {
+ switch (month) {
+ case 1:
+ return 'يناير';
+ case 2:
+ return ' فبراير';
+ case 3:
+ return 'مارس';
+ case 4:
+ return 'أبريل';
+ case 5:
+ return 'مايو';
+ case 6:
+ return 'يونيو';
+ case 7:
+ return 'يوليو';
+ case 8:
+ return 'أغسطس';
+ case 9:
+ return 'سبتمبر';
+ case 10:
+ return ' اكتوبر';
+ case 11:
+ return ' نوفمبر';
+ case 12:
+ return 'ديسمبر';
+ default:
+ return "";
+ }
}
}
diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart
index 354e0db..c125c2d 100644
--- a/lib/ui/landing/dashboard_screen.dart
+++ b/lib/ui/landing/dashboard_screen.dart
@@ -50,275 +50,342 @@ class _DashboardScreenState extends State {
List namesD = ["Nostalgia Perfume Perfume", "Al Nafoura", "AlJadi", "Nostalgia Perfume"];
final GlobalKey _key = GlobalKey(); //
return Scaffold(
- key: _scaffoldState,
- body: Column(
- children: [
- Row(
- children: [
- Builder(builder: (context) {
- return Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- CircularAvatar(
- width: 34,
- height: 34,
- url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png",
+ key: _scaffoldState,
+ body: Column(
+ children: [
+ Row(
+ children: [
+ Builder(builder: (context) {
+ return Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ CircularAvatar(
+ width: 34,
+ height: 34,
+ url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png",
+ ),
+ 8.width,
+ SvgPicture.asset("assets/images/side_nav.svg"),
+ ],
+ ).onPress(() {
+ _scaffoldState.currentState!.openDrawer();
+ });
+ }),
+ Expanded(
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisAlignment: MainAxisAlignment.center,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ //AppLogo(),
+ 8.width,
+ LocaleKeys.mohemm.tr().toText14()
+ ],
+ ),
+ ),
+ SizedBox(
+ width: 36,
+ height: 36,
+ child: Stack(
+ alignment: Alignment.centerLeft,
+ children: [
+ SvgPicture.asset("assets/images/announcements.svg"),
+ Positioned(
+ right: 0,
+ top: 0,
+ child: Container(
+ padding: const EdgeInsets.only(left: 5, right: 5),
+ decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)),
+ child: "3".toText12(color: Colors.white),
),
- 8.width,
- SvgPicture.asset("assets/images/side_nav.svg"),
- ],
- ).onPress(() {
- _scaffoldState.currentState!.openDrawer();
- });
- }),
- Expanded(
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.center,
- mainAxisSize: MainAxisSize.min,
- children: [
- //AppLogo(),
- 8.width,
- LocaleKeys.mohemm.tr().toText14()
- ],
- ),
+ )
+ ],
),
- SizedBox(
- width: 36,
- height: 36,
- child: Stack(
- alignment: Alignment.centerLeft,
+ ).onPress(() async {
+ await Navigator.pushNamed(context, AppRoutes.announcements);
+
+ })
+ ],
+ ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
+ Expanded(
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- SvgPicture.asset("assets/images/announcements.svg"),
- Positioned(
- right: 0,
- top: 0,
- child: Container(
- padding: const EdgeInsets.only(left: 5, right: 5),
- decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)),
- child: "3".toText12(color: Colors.white),
- ),
- )
- ],
- ),
- ).onPress(() {
- data.update(context);
- })
- ],
- ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
- Expanded(
- child: SingleChildScrollView(
- child: Column(
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
- "Mahmoud Shrouf".toText24(isBold: true),
- 16.height,
- Row(
- children: [
- Expanded(
- child: AspectRatio(
- aspectRatio: 159 / 159,
- child: Consumer(
- builder: (context, model, child) {
- return (model.isAttendanceTrackingLoading
- ? GetAttendanceTrackingShimmer()
- : Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(15),
- gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
- MyColors.gradiantEndColor,
- MyColors.gradiantStartColor,
- ]),
- ),
- child: Stack(
- alignment: Alignment.center,
- children: [
- if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"),
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true),
- if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white),
- if (model.isTimeRemainingInSeconds != 0)
- Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- 9.height,
- CountdownTimer(
- endTime: model.endTime,
- onEnd: null,
- endWidget: "00:00:00".toText14(color: Colors.white, isBold: true),
- textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold),
- ),
- LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white),
- 9.height,
- ClipRRect(
- borderRadius: BorderRadius.all(
- Radius.circular(20),
- ),
- child: LinearProgressIndicator(
- value: model.progress,
- minHeight: 8,
- valueColor: const AlwaysStoppedAnimation(Colors.white),
- backgroundColor: const Color(0xff196D73),
- ),
- ),
- ],
- ),
- ],
- ).paddingOnly(top: 12, right: 15, left: 12),
- ),
- Row(
+ LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
+ "Mahmoud Shrouf".toText24(isBold: true),
+ 16.height,
+ Row(
+ children: [
+ Expanded(
+ child: AspectRatio(
+ aspectRatio: 159 / 159,
+ child: Consumer(
+ builder: (context, model, child) {
+ return (model.isAttendanceTrackingLoading
+ ? GetAttendanceTrackingShimmer()
+ : Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(15),
+ gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
+ MyColors.gradiantEndColor,
+ MyColors.gradiantStartColor,
+ ]),
+ ),
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"),
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Expanded(
- child: Column(
+ LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true),
+ if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white),
+ if (model.isTimeRemainingInSeconds != 0)
+ Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.checkIn.tr().toText12(color: Colors.white),
- (model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
- .toString()
- .toText14(color: Colors.white, isBold: true),
- 4.height,
+ 9.height,
+ CountdownTimer(
+ endTime: model.endTime,
+ onEnd: null,
+ endWidget: "00:00:00".toText14(color: Colors.white, isBold: true),
+ textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold),
+ ),
+ LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white),
+ 9.height,
+ ClipRRect(
+ borderRadius: BorderRadius.all(
+ Radius.circular(20),
+ ),
+ child: LinearProgressIndicator(
+ value: model.progress,
+ minHeight: 8,
+ valueColor: const AlwaysStoppedAnimation(Colors.white),
+ backgroundColor: const Color(0xff196D73),
+ ),
+ ),
],
- ).paddingOnly(left: 12),
- ),
- Container(
- width: 45,
- height: 45,
- padding: const EdgeInsets.only(left: 14, right: 14),
- decoration: const BoxDecoration(
- color: Color(0xff259EA4),
- borderRadius: BorderRadius.only(
- bottomRight: Radius.circular(15),
- ),
),
- child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"),
- ),
],
- ),
- ],
- ),
- ],
- ),
- ).onPress(() {
- Navigator.pushNamed(context, AppRoutes.todayAttendance);
- }))
- .animatedSwither();
- },
- ),
+ ).paddingOnly(top: 12, right: 15, left: 12),
+ ),
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ LocaleKeys.checkIn.tr().toText12(color: Colors.white),
+ (model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
+ .toString()
+ .toText14(color: Colors.white, isBold: true),
+ 4.height,
+ ],
+ ).paddingOnly(left: 12),
+ ),
+ Container(
+ width: 45,
+ height: 45,
+ padding: const EdgeInsets.only(left: 14, right: 14),
+ decoration: const BoxDecoration(
+ color: Color(0xff259EA4),
+ borderRadius: BorderRadius.only(
+ bottomRight: Radius.circular(15),
+ ),
+ ),
+ child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ).onPress(() {
+ Navigator.pushNamed(context, AppRoutes.todayAttendance);
+ }))
+ .animatedSwither();
+ },
),
),
- 9.width,
- Expanded(
- child: MenusWidget(),
- ),
- ],
- ),
- ],
- ).paddingOnly(left: 21, right: 21, top: 7),
- ServicesWidget(),
- 8.height,
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(top: 31),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
- border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
+ ),
+ 9.width,
+ Expanded(
+ child: MenusWidget(),
+ ),
+ ],
),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisSize: MainAxisSize.min,
- children: [
- LocaleKeys.offers.tr().toText12(),
- Row(
- children: [
- LocaleKeys.discounts.tr().toText24(isBold: true),
- 6.width,
- Container(
- padding: const EdgeInsets.only(left: 8, right: 8),
- decoration: BoxDecoration(
- color: MyColors.yellowColor,
- borderRadius: BorderRadius.circular(10),
- ),
- child: LocaleKeys.newString.tr().toText10(isBold: true)),
- ],
- ),
- ],
- ),
- ),
- LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true),
- ],
- ).paddingOnly(left: 21, right: 21),
- SizedBox(
- height: 103 + 33,
- child: ListView.separated(
- shrinkWrap: true,
- physics: const BouncingScrollPhysics(),
- padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
- scrollDirection: Axis.horizontal,
- itemBuilder: (cxt, index) {
- return SizedBox(
- width: 73,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Container(
- width: 73,
- height: 73,
+ ],
+ ).paddingOnly(left: 21, right: 21, top: 7),
+ ServicesWidget(),
+ 8.height,
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.only(top: 31),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
+ border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
+ ),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ LocaleKeys.offers.tr().toText12(),
+ Row(
+ children: [
+ LocaleKeys.discounts.tr().toText24(isBold: true),
+ 6.width,
+ Container(
+ padding: const EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration(
- borderRadius: const BorderRadius.all(
- Radius.circular(100),
- ),
- border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
+ color: MyColors.yellowColor,
+ borderRadius: BorderRadius.circular(10),
),
- child: ClipRRect(
- borderRadius: const BorderRadius.all(
- Radius.circular(50),
- ),
- child: Image.network(
- "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
- fit: BoxFit.cover,
- ),
+ child: LocaleKeys.newString.tr().toText10(isBold: true)),
+ ],
+ ),
+ ],
+ ),
+ ),
+ LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true),
+ ],
+ ).paddingOnly(left: 21, right: 21),
+ SizedBox(
+ height: 103 + 33,
+ child: ListView.separated(
+ shrinkWrap: true,
+ physics: const BouncingScrollPhysics(),
+ padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
+ scrollDirection: Axis.horizontal,
+ itemBuilder: (cxt, index) {
+ return SizedBox(
+ width: 73,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Container(
+ width: 73,
+ height: 73,
+ decoration: BoxDecoration(
+ borderRadius: const BorderRadius.all(
+ Radius.circular(100),
),
+ border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
),
- 4.height,
- Expanded(
- child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
+ child: ClipRRect(
+ borderRadius: const BorderRadius.all(
+ Radius.circular(50),
+ ),
+ child: Image.network(
+ "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
+ fit: BoxFit.cover,
+ ),
),
- ],
- ),
- );
- },
- separatorBuilder: (cxt, index) => 8.width,
- itemCount: 6),
- ),
- ],
- ),
- )
- ],
- ),
+ ),
+ 4.height,
+ Expanded(
+ child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
+ ),
+ ],
+ ),
+ );
+ },
+ separatorBuilder: (cxt, index) => 8.width,
+ itemCount: 6),
+ ),
+ ],
+ ),
+ )
+ ],
+ ),
+ ),
+ )
+ ],
+ ),
+ drawer: SafeArea(
+ child: AppDrawer(),
+ ),
+ bottomNavigationBar: BottomNavigationBar(
+ items: [
+ BottomNavigationBarItem(
+ icon: Padding(
+ padding: const EdgeInsets.all(4.0),
+ child: SvgPicture.asset(
+ "assets/icons/home.svg",
+ width: 20,
+ height: 20,
),
- )
- ],
+ ),
+ label: 'Home',
+ ),
+ BottomNavigationBarItem(
+ icon: Padding(
+ padding: const EdgeInsets.all(4.0),
+ child: SvgPicture.asset(
+ "assets/icons/create_req.svg",
+ width: 20,
+ height: 20,
+ ),
+ ),
+ label: 'Create Request',
+ ),
+ BottomNavigationBarItem(
+ icon: Padding(
+ padding: const EdgeInsets.all(4.0),
+ child: SvgPicture.asset(
+ "assets/icons/work_list.svg",
+ width: 20,
+ height: 20,
+ ),
+ ),
+ label: 'Work List',
+ ),
+ BottomNavigationBarItem(
+ icon: Padding(
+ padding: const EdgeInsets.all(4.0),
+ child: SvgPicture.asset(
+ "assets/icons/item_for_sale.svg",
+ width: 20,
+ height: 20,
+ ),
+ ),
+ label: 'Items for Sale',
+ ),
+ ],
+ currentIndex: 0,
+ selectedLabelStyle: TextStyle(
+ fontSize: 8,
+ color: Color(0xff989898),
+ fontWeight: FontWeight.w600,
+ ),
+ unselectedLabelStyle: TextStyle(
+ fontSize: 8,
+ color: Color(0xff989898),
+ fontWeight: FontWeight.w600,
),
- drawer: SafeArea(child: AppDrawer()));
+ type: BottomNavigationBarType.fixed,
+ selectedItemColor: Colors.black,
+ backgroundColor: Color(0xffF8F8F8),
+ onTap: (v) {},
+ ),
+ );
}
}
diff --git a/lib/ui/landing/today_attendance_screen.dart b/lib/ui/landing/today_attendance_screen.dart
index 821b01c..4b5332e 100644
--- a/lib/ui/landing/today_attendance_screen.dart
+++ b/lib/ui/landing/today_attendance_screen.dart
@@ -13,15 +13,14 @@ 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:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart';
import 'package:wifi_iot/wifi_iot.dart';
-import '../../provider/dashboard_provider_model.dart';
-import '../../widgets/location/Location.dart';
-
class TodayAttendanceScreen extends StatefulWidget {
TodayAttendanceScreen({Key? key}) : super(key: key);
diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart
index d1de8d7..9b63ded 100644
--- a/lib/ui/landing/widget/app_drawer.dart
+++ b/lib/ui/landing/widget/app_drawer.dart
@@ -1,8 +1,6 @@
-import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:mohem_flutter_app/config/routes.dart';
-import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/landing/widget/drawer_item.dart';
class AppDrawer extends StatefulWidget {
@@ -14,51 +12,60 @@ class _AppDrawerState extends State {
@override
Widget build(BuildContext context) {
return Container(
- color: Colors.white,
- child: Drawer(
- child: Column(children: [
- const SizedBox(
- height: 200,
- ),
- Expanded(
- child: ListView(padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [
- // const Divider(),
- // InkWell(
- // child: const DrawerItem(
- // 'My Profile',
- // icon: Icons.person,
- // color: Colors.grey,
- // ),
- // onTap: () {
- // drawerNavigator(context, AppRoutes.profile);
- // }),
- const Divider(),
- InkWell(
- child: new DrawerItem(
- // 'Mowadhafhi',
- LocaleKeys.myProfile.tr(),
- icon: Icons.person,
- color: Colors.grey,
- ),
- onTap: () {
- drawerNavigator(context, AppRoutes.profile);
- }),
- const Divider(),
- InkWell(
- child: new DrawerItem(
- // 'Mowadhafhi',
- LocaleKeys.mowadhafhi.tr(),
- icon: Icons.person,
- color: Colors.grey,
- ),
- onTap: () {
- drawerNavigator(context, AppRoutes.mowadhafhi);
- })
- ]))
- ])));
+ color: Colors.white,
+ child: Drawer(
+ child: Column(
+ children: [
+ const SizedBox(
+ height: 200,
+ ),
+ Expanded(
+ child: ListView(
+ padding: const EdgeInsets.all(21),
+ physics: const BouncingScrollPhysics(),
+ children: [
+ const Divider(),
+ InkWell(
+ child: const DrawerItem(
+ //'My Profile',
+ LocaleKeys.myProfile.tr(),
+ icon: Icons.person,
+ color: Colors.grey,
+ ),
+ onTap: () {
+ drawerNavigator(context, AppRoutes.profile);
+ }),
+ const Divider(),
+ InkWell(
+ child: const DrawerItem(
+ // 'Mowadhafhi',
+ LocaleKeys.mowadhafhi.tr(),
+ icon: Icons.person,
+ color: Colors.grey,
+ ),
+ onTap: () {
+ drawerNavigator(context, AppRoutes.mowadhafhi);
+ }),
+ const Divider(),
+ InkWell(
+ child: const DrawerItem(
+ 'Pending Transactions',
+ icon: Icons.person,
+ color: Colors.grey,
+ ),
+ onTap: () {
+ drawerNavigator(context, AppRoutes.pendingTransactions);
+ })
+ ],
+ ),
+ )
+ ],
+ ),
+ ),
+ );
}
- drawerNavigator(context, routeName) {
+ void drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName);
}
}
diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart
index fc873cd..9500ac4 100644
--- a/lib/ui/landing/widget/services_widget.dart
+++ b/lib/ui/landing/widget/services_widget.dart
@@ -1,7 +1,6 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
-import 'package:mohem_flutter_app/classes/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';
@@ -9,6 +8,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
+import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
@@ -109,17 +109,19 @@ class ServicesWidget extends StatelessWidget {
void handleOnPress(context, GetMenuEntriesList menuEntry) {
var pro = Provider.of(context, listen: false);
- List? menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && element.menuEntryType == "FUNCTION").toList();
+ List menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && element.menuEntryType == "FUNCTION").toList() ?? [];
menuEntry.icon = "";
print(menuEntry.toJson());
- Navigator.pushNamed(context, AppRoutes.myAttendance, arguments: menuList ?? []);
- return;
-
- if (menuEntry.menuName == "HMG_OTL_SS" || menuEntry.menuName == "HMG_PT_OTL_SS") {
- Navigator.pushNamed(context, AppRoutes.myAttendance);
+ if (menuList.isEmpty) {
+ if (menuEntry.requestType == "EIT") {
+ Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menuEntry.prompt!, menuEntry.functionName!));
+ } else if (menuEntry.requestType == "PAYSLIP") {
+ Navigator.pushNamed(context, AppRoutes.monthlyPaySlip);
+ }
} else {
- Utils.showToast("In Progress");
+ Navigator.pushNamed(context, AppRoutes.myAttendance, arguments: menuList);
}
+ return;
}
String firstWord(String value) {
diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart
index 62b07c8..cc7c3aa 100644
--- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart
+++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart
@@ -120,29 +120,32 @@ class _DynamicInputScreenState extends State {
}
void getDefaultValues(GetEITDFFStructureList structureList) async {
- if ((structureList.cHILDSEGMENTSDVSplited?.length ?? 0) < 1) {
- return;
- }
try {
- Utils.showLoading(context);
+ Utils.showLoading(context);
for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) {
String segmentId = structureList.cHILDSEGMENTSDVSplited![i];
- GetEITDFFStructureList? reqObj = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
- List parentRequired = reqObj.pARENTSEGMENTSDVSplited ?? [];
+ print("segmentId:$segmentId");
+ print("segmentName:${structureList.sEGMENTNAME}");
+ GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
+ List parentRequired = parent.pARENTSEGMENTSDVSplited ?? [];
+
List filteredList =
getEitDffStructureList!.where((outerElement) => parentRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList();
+
+
List