Merge branch 'master' into development_mirza

# Conflicts:
#	lib/extensions/string_extensions.dart
#	lib/main.dart
#	lib/ui/landing/today_attendance_screen.dart
#	lib/ui/landing/widget/app_drawer.dart
#	pubspec.yaml
merge-requests/1/merge
devmirza121 2 years ago
commit 8fe51a654c

@ -9,6 +9,17 @@
# packages, and plugins designed to encourage good coding practices. # packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml 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: linter:
# The lint rules applied to this project can be customized in the # The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml` # section below to disable rules from the `package:flutter_lints/flutter.yaml`
@ -25,8 +36,19 @@ linter:
always_specify_types: true always_specify_types: true
always_declare_return_types: true always_declare_return_types: true
always_use_package_imports: 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_empty_else: true
avoid_annotating_with_dynamic: 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 # avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule

@ -11,7 +11,8 @@
<application <application
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="Mohemm" android:label="Mohemm"
android:networkSecurityConfig="@xml/network_security_config"> android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#ffffff</color>
</resources>

@ -0,0 +1,8 @@
<svg id="user_21_" data-name="user (21)" xmlns="http://www.w3.org/2000/svg" width="110.999" height="110.999" viewBox="0 0 110.999 110.999">
<path id="Path_4696" data-name="Path 4696" d="M272.482,267.883a25.756,25.756,0,0,0,5.549-15.868,26.015,26.015,0,1,0-26.015,26.015,25.756,25.756,0,0,0,15.868-5.549l14.569,14.569a3.252,3.252,0,1,0,4.6-4.6ZM260.818,256.22a3.252,3.252,0,1,1-4.6,4.6l-4.2-4.2-4.2,4.2a3.252,3.252,0,0,1-4.6-4.6l4.2-4.2-4.2-4.2a3.252,3.252,0,0,1,4.6-4.6l4.2,4.2,4.2-4.2a3.252,3.252,0,1,1,4.6,4.6l-4.2,4.2Z" transform="translate(-177.004 -177.004)" fill="#ddd"/>
<circle id="Ellipse_165" data-name="Ellipse 165" cx="3.5" cy="3.5" r="3.5" transform="translate(35.5 19.499)" fill="#ddd"/>
<path id="Path_4697" data-name="Path 4697" d="M197.516,362h0Z" transform="translate(-154.695 -283.52)" fill="#ddd"/>
<path id="Path_4698" data-name="Path 4698" d="M197.516,332h0Z" transform="translate(-154.695 -260.021)" fill="#ddd"/>
<path id="Path_4699" data-name="Path 4699" d="M3.252,111H75.011a3.25,3.25,0,0,0,3.252-3.252v-.329a31.763,31.763,0,0,1-3.252.329,32.393,32.393,0,0,1-23.165-9.756H16.476a3.252,3.252,0,0,1,0-6.5H47.016v0a32.2,32.2,0,0,1-2.865-6.507H16.476a3.252,3.252,0,0,1,0-6.5H42.821c-.454-4.484-.454-2.022,0-6.5H16.476a3.252,3.252,0,1,1,0-6.5H44.152a32.468,32.468,0,0,1,7.694-13.009H26.232a3.25,3.25,0,0,1-3.252-3.252V45.96A13.021,13.021,0,0,1,35.988,32.953H39.24A9.756,9.756,0,1,1,49,23.2a9.767,9.767,0,0,1-9.756,9.756h3.252A13.021,13.021,0,0,1,55.5,45.96v3.252c0,.071-.036.13-.04.2a32.2,32.2,0,0,1,19.552-6.7,31.762,31.762,0,0,1,3.252.329V3.252A3.25,3.25,0,0,0,75.011,0H3.252A3.25,3.25,0,0,0,0,3.252v104.5A3.25,3.25,0,0,0,3.252,111Z" fill="#ddd"/>
<path id="Path_4700" data-name="Path 4700" d="M142.5,182a6.512,6.512,0,0,0-6.5,6.5h19.512a6.512,6.512,0,0,0-6.5-6.5Z" transform="translate(-106.516 -142.543)" fill="#ddd"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -24,7 +24,7 @@
"checkIn": "تحقق في", "checkIn": "تحقق في",
"workList": "قائمة العمل", "workList": "قائمة العمل",
"leaveBalance": "رصيد الاجازات", "leaveBalance": "رصيد الاجازات",
"missingSwipes": "الضربات الشديدة في عداد المفقودين", "missingSwipes": "تسجيل بصمة حضور",
"ticketBalance": "رصيد التذكرة", "ticketBalance": "رصيد التذكرة",
"other": "آخر", "other": "آخر",
"services": "خدمات", "services": "خدمات",
@ -56,10 +56,10 @@
"order": "الطلبات", "order": "الطلبات",
"earlyOut": "الخروج مبكرا", "earlyOut": "الخروج مبكرا",
"shortage": "ساعات التقصير", "shortage": "ساعات التقصير",
"excess": "Excess", "excess": "فائض",
"lateIn": "القدوم المتاخر", "lateIn": "القدوم المتاخر",
"approvedCheckOut": "وقت الخروج", "approvedCheckOut": "اعتماد وقت الخروج",
"approvedCheckIn": "وقت الدخول", "approvedCheckIn": "اعتماد وقت الدخول",
"actualCheckOut": "وقت الخروج", "actualCheckOut": "وقت الخروج",
"actualCheckIn": "وقت الدخول", "actualCheckIn": "وقت الدخول",
"present": "حضور", "present": "حضور",
@ -229,22 +229,40 @@
"approvalLevel": "مستوى الموافقة", "approvalLevel": "مستوى الموافقة",
"requesterDetails": "تفاصيل مقدم الطلب", "requesterDetails": "تفاصيل مقدم الطلب",
"myAttendance": "حضوري", "myAttendance": "حضوري",
"workOnBreak": "العمل على استراحة", "workOnBreak": "التعويض عن العمل اثناءالاستراحه",
"next": "التالي", "next": "التالي",
"mobile": "التليفون المحمول", "mobile": "التليفون المحمول",
"completingYear": "نحن نقدر لك لاستكمال خدمة", "completingYear": "نحن نقدر لك لاستكمال خدمة",
"year": "سنة", "year": "سنة",
"month": "شهر", "month": "شهر",
"day": "يوم", "day": "يوم",
"address" : "العنوان", "address": "العنوان",
"phoneNumber": "رقم الجوال", "phoneNumber": "رقم الجوال",
"businessGroup": "مجموعة العمل", "businessGroup": "مجموعة العمل",
"Payroll": "الراتب", "Payroll": "الراتب",
"civilIdentityNumber": "رقم الهويه", "civilIdentityNumber": "رقم الهويه",
"dateOfBirth" : "تاريخ الميلاد", "dateOfBirth": "تاريخ الميلاد",
"maritalStatus ": "الحالة الاجتماعية", "maritalStatus ": "الحالة الاجتماعية",
"fullName": "الأسم الكامل", "fullName": "الأسم الكامل",
"remove": "حذف", "remove": "حذف",
"submit": "ارسال",
"areYouSureYouWantToSubmit": "هل أنت متأكد أنك تريد أن تقدم؟",
"comments": "تعليقات",
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
"monthlyPaySlip": "قسيمة الراتب الشهرية",
"particular": "خاص",
"earnings": "أرباح",
"deductions": "الخصومات",
"paymentMethodName": "اسم طريقة الدفع",
"bankName": "اسم البنك",
"branchCode": "رمز الفرع",
"accountNo": "رقم الحساب",
"summaryOfInformation": "ملخص المعلومات",
"totalPayAmount": "المبلغ الإجمالي للدفع",
"paymentInformation": "معلومات الدفع",
"amount": "مقدار",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",
@ -266,14 +284,6 @@
"many": "You clicked {} times!", "many": "You clicked {} times!",
"other": "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": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",

@ -62,10 +62,10 @@
"approvedCheckIn": "Approved Check In", "approvedCheckIn": "Approved Check In",
"actualCheckOut": "Actual Check Out", "actualCheckOut": "Actual Check Out",
"actualCheckIn": "Actual Check In", "actualCheckIn": "Actual Check In",
"present": "PRESENT 11", "present": "PRESENT",
"pres": "present", "pres": "present",
"shiftTime": "Shift Time", "shiftTime": "Shift Time",
"absent": "ABSENT 10", "absent": "ABSENT",
"attendance": "Attendance", "attendance": "Attendance",
"scheduleDays": "Schedule\nDays", "scheduleDays": "Schedule\nDays",
"offDays": "Off\nDays", "offDays": "Off\nDays",
@ -245,6 +245,25 @@
"maritalStatus ": "Marital Status ", "maritalStatus ": "Marital Status ",
"fullName": "Full Name", "fullName": "Full Name",
"remove": "Remove", "remove": "Remove",
"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",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",
@ -266,14 +285,6 @@
"many": "You clicked {} times!", "many": "You clicked {} times!",
"other": "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": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

@ -1,122 +1,128 @@
{ {
"images" : [ "images":[
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "iphone", "size":"20x20",
"filename" : "Icon-App-20x20@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-20x20@2x.png"
}, },
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "iphone", "size":"20x20",
"filename" : "Icon-App-20x20@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-20x20@3x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@1x.png", "scale":"1x",
"scale" : "1x" "filename":"Icon-App-29x29@1x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-29x29@2x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-29x29@3x.png"
}, },
{ {
"size" : "40x40", "idiom":"iphone",
"idiom" : "iphone", "size":"40x40",
"filename" : "Icon-App-40x40@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-40x40@2x.png"
}, },
{ {
"size" : "40x40", "idiom":"iphone",
"idiom" : "iphone", "size":"40x40",
"filename" : "Icon-App-40x40@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-40x40@3x.png"
}, },
{ {
"size" : "60x60", "idiom":"iphone",
"idiom" : "iphone", "size":"60x60",
"filename" : "Icon-App-60x60@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-60x60@2x.png"
}, },
{ {
"size" : "60x60", "idiom":"iphone",
"idiom" : "iphone", "size":"60x60",
"filename" : "Icon-App-60x60@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-60x60@3x.png"
}, },
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-20x20@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-76x76@2x.png"
}, },
{ {
"size" : "20x20", "idiom":"ipad",
"idiom" : "ipad", "size":"20x20",
"filename" : "Icon-App-20x20@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-20x20@1x.png"
}, },
{ {
"size" : "29x29", "idiom":"ipad",
"idiom" : "ipad", "size":"20x20",
"filename" : "Icon-App-29x29@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-20x20@2x.png"
}, },
{ {
"size" : "29x29", "idiom":"ipad",
"idiom" : "ipad", "size":"29x29",
"filename" : "Icon-App-29x29@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-29x29@1x.png"
}, },
{ {
"size" : "40x40", "idiom":"ipad",
"idiom" : "ipad", "size":"29x29",
"filename" : "Icon-App-40x40@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-29x29@2x.png"
}, },
{ {
"size" : "40x40", "idiom":"ipad",
"idiom" : "ipad", "size":"40x40",
"filename" : "Icon-App-40x40@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-40x40@1x.png"
}, },
{ {
"size" : "76x76", "idiom":"ipad",
"idiom" : "ipad", "size":"40x40",
"filename" : "Icon-App-76x76@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-40x40@2x.png"
}, },
{ {
"size" : "76x76", "idiom":"ipad",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-76x76@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-76x76@1x.png"
}, },
{ {
"size" : "83.5x83.5", "idiom":"ipad",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-83.5x83.5@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-76x76@2x.png"
}, },
{ {
"size" : "1024x1024", "idiom":"ipad",
"idiom" : "ios-marketing", "size":"83.5x83.5",
"filename" : "Icon-App-1024x1024@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-83.5x83.5@2x.png"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"scale" : "1x",
"filename" : "ItunesArtwork@2x.png"
}
],
"info":{
"version":1,
"author":"easyappicon"
} }
],
"info" : {
"version" : 1,
"author" : "xcode"
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

@ -7,8 +7,8 @@ import 'package:http/http.dart';
import 'package:http/io_client.dart'; import 'package:http/io_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart';
import 'package:mohem_flutter_app/main.dart';
import '../main.dart'; // ignore_for_file: avoid_annotating_with_dynamic
typedef FactoryConstructor<U> = U Function(dynamic); typedef FactoryConstructor<U> = U Function(dynamic);
@ -89,7 +89,7 @@ class ApiClient {
return factoryConstructor(jsonData); return factoryConstructor(jsonData);
} else { } else {
APIError? apiError; APIError? apiError;
apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorMessage']); apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorEndUserMessage']);
throw APIException(APIException.BAD_REQUEST, error: apiError); throw APIException(APIException.BAD_REQUEST, error: apiError);
} }
// } catch (ex) { // } catch (ex) {

@ -1,17 +1,13 @@
import 'dart:async'; 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/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.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/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_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/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import 'api_client.dart';
class DashboardApiClient { class DashboardApiClient {
static final DashboardApiClient _instance = DashboardApiClient._internal(); static final DashboardApiClient _instance = DashboardApiClient._internal();

@ -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/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_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 EITApiClient { class EITApiClient {
static final EITApiClient _instance = EITApiClient._internal(); static final EITApiClient _instance = EITApiClient._internal();
@ -24,7 +24,7 @@ class EITApiClient {
Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1}; Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
List<CollectionTransaction>? responseData = GET_EIT_Transactions_Model.fromJson(json['GetEITTransactionList'][0]).collectionTransaction; List<CollectionTransaction>? responseData = GetEitTransactionsModel.fromJson(json['GetEITTransactionList'][0]).collectionTransaction;
return responseData; return responseData;
}, url, postParams); }, url, postParams);
} }

@ -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/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_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 { class LoginApiClient {
static final LoginApiClient _instance = LoginApiClient._internal(); static final LoginApiClient _instance = LoginApiClient._internal();
@ -90,6 +90,8 @@ class LoginApiClient {
AppState().postParamsObject?.pSessionId = responseData.pSESSIONID; AppState().postParamsObject?.pSessionId = responseData.pSESSIONID;
AppState().postParamsObject?.pUserName = AppState().getUserName; AppState().postParamsObject?.pUserName = AppState().getUserName;
AppState().postParamsObject?.pSelectedEmployeeNumber = AppState().getUserName; AppState().postParamsObject?.pSelectedEmployeeNumber = AppState().getUserName;
AppState().postParamsObject?.setPLegislationCode = responseData.basicMemberInformation!.pLEGISLATIONCODE;
AppState().postParamsObject?.setPayrollCodeStr = responseData.memberInformationList!.first.pAYROLLCODE;
return responseData; return responseData;
}, url, postParams); }, url, postParams);

@ -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_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_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_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 { class MonthlyAttendanceApiClient {
static final MonthlyAttendanceApiClient _instance = MonthlyAttendanceApiClient._internal(); static final MonthlyAttendanceApiClient _instance = MonthlyAttendanceApiClient._internal();
@ -17,7 +18,6 @@ class MonthlyAttendanceApiClient {
factory MonthlyAttendanceApiClient() => _instance; factory MonthlyAttendanceApiClient() => _instance;
Future<GetTimeCardSummaryList?> getTimeCardSummary(String month, int year) async { Future<GetTimeCardSummaryList?> getTimeCardSummary(String month, int year) async {
String url = "${ApiConsts.erpRest}GET_TIME_CARD_SUMMARY"; String url = "${ApiConsts.erpRest}GET_TIME_CARD_SUMMARY";
Map<String, dynamic> postParams = { Map<String, dynamic> postParams = {
@ -26,9 +26,11 @@ class MonthlyAttendanceApiClient {
"SearchMonth": month, "SearchMonth": month,
"SearchYear": year, "SearchYear": year,
}; };
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json); GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
print(responseData);
return (responseData.getTimeCardSummaryList?.length ?? 0) > 0 ? responseData.getTimeCardSummaryList!.first : null; return (responseData.getTimeCardSummaryList?.length ?? 0) > 0 ? responseData.getTimeCardSummaryList!.first : null;
}, url, postParams); }, url, postParams);
} }
@ -48,7 +50,6 @@ class MonthlyAttendanceApiClient {
// postParams["DeviceType"] = deviceType; // postParams["DeviceType"] = deviceType;
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json); GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
print("Response Data______");
print(responseData.getDayHoursTypeDetailsList!.length); print(responseData.getDayHoursTypeDetailsList!.length);
return responseData.getDayHoursTypeDetailsList ?? []; return responseData.getDayHoursTypeDetailsList ?? [];
}, url, postParams); }, url, postParams);

@ -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<List<GetPayslipList>> getPaySlip() async {
String url = "${ApiConsts.erpRest}GET_PAYSLIP";
Map<String, dynamic> 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<List<GetSummaryOfPaymentList>> getSummaryOfPayment(int pActionContextID) async {
String url = "${ApiConsts.erpRest}GET_SUMMARY_OF_PAYMENT";
Map<String, dynamic> 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<List<GetPaymentInformationList>> getPaymentInformation(int pActionContextID) async {
String url = "${ApiConsts.erpRest}GET_PAYMENT_INFORMATION";
Map<String, dynamic> 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<List<GetDeductionsList>> getDeductions(int pActionContextID) async {
String url = "${ApiConsts.erpRest}GET_DEDUCTIONS";
Map<String, dynamic> 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<List<GetEarningsList>> getEarnings(int pActionContextID) async {
String url = "${ApiConsts.erpRest}GET_EARNINGS";
Map<String, dynamic> 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);
}
}

@ -0,0 +1,135 @@
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/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';
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 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
class MowadhafhiApiClient {
static final MowadhafhiApiClient _instance = MowadhafhiApiClient._internal();
MowadhafhiApiClient._internal();
factory MowadhafhiApiClient() => _instance;
Future<List<GetTicketsByEmployeeList>> getTicketsByEmployee() async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetTicketsByEmployee";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgPageSize": 10, "ItgPageNo": 1};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getTicketsByEmployeeList ?? [];
}, url, postParams);
}
Future<List<GetTicketDetailsByEmployee>> getTicketDetailsByEmployee(String? itgTicketID) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetTicketDetails";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgTicketId": itgTicketID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getTicketDetailsByEmployee ?? [];
}, url, postParams);
}
Future<List<GetTicketTransactions>> getTicketTransactions(String? itgTicketID) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetTicketTransaction";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgTicketId": itgTicketID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getTicketTransactions ?? [];
}, url, postParams);
}
Future<List<GetTicketTypes>> getTicketTypes() async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetTicketTypes";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getTicketTypes ?? [];
}, url, postParams);
}
Future<List<GetMowadhafhiProjects>> getProjects() async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetProjects";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgProjectCode": AppState().memberInformationList?.pAYROLLCODE};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getMowadhafhiProjects ?? [];
}, url, postParams);
}
Future<List<GetProjectDepartments>> getProjectDepartments(int projectID) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetProjectDepartments";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgProjectId": projectID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getProjectDepartments ?? [];
}, url, postParams);
}
Future<List<GetDepartmentSections>> getDepartmentSections(int? projectDepartmentID) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetDepartmentSections";
Map<String, dynamic> postParams = {
"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
"ItgDepartmentSectionId": projectDepartmentID,
"ItgProjectDepartmentId": projectDepartmentID
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getDepartmentSections ?? [];
}, url, postParams);
}
Future<List<GetSectionTopics>> getSectionTopics(int? departmentSectionID) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_GetSectionTopics";
Map<String, dynamic> postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgDepartmentSectionId": departmentSectionID};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getSectionTopics ?? [];
}, url, postParams);
}
Future<int?> submitRequest(int? departmentID, String description, int? projectID, String? sectionID, String? sectionTopicID, int? ticketTypeID, List<Map<String, dynamic>> attachmentList) async {
String url = "${ApiConsts.cocRest}Mohemm_ITG_CreateTicketMobile";
Map<String, dynamic> postParams = {
"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
"ItgImageCollList": attachmentList,
"channelId": 3,
"departmentId": departmentID,
"description": description,
"employeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
"projectId": projectID,
"sectionId": sectionID,
"sectionTopicId": sectionTopicID,
"ticketStatus": "new",
"ticketTypeId": ticketTypeID
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.messageStatus;
}, url, postParams);
}
}

@ -3,10 +3,13 @@ import 'dart:async';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.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/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; 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 { class MyAttendanceApiClient {
static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal(); static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal();
@ -54,4 +57,104 @@ class MyAttendanceApiClient {
return responseData.getValueSetValuesList!.first; return responseData.getValueSetValuesList!.first;
}, url, postParams); }, url, postParams);
} }
Future<ESERVICESDV> getDefaultValue(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}GET_DEFAULT_VALUE";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_PARENT_VALUE": null,
"P_SEGMENT_NAME": pSegmentName,
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_DESC_FLEX_NAME": pDescFlexName,
"GetValueSetValuesTBL": list,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<GenericResponseModel?> validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}VALIDATE_EIT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
// "EITTransactionTBL": list,
};
print(postParams);
postParams["EITTransactionTBL"] =list;
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<SubmitEITTransactionList> submitEitTransaction(String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}SUBMIT_EIT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
//"EITTransactionTBL": list,
// "EITTransactionTBLModel": list,
};
postParams.addAll(AppState().postParamsJson);
print("postParams:$postParams");
postParams["EITTransactionTBL"] = list;
postParams["EITTransactionTBLModel"] = list;
return await ApiClient().postJsonForObject((json) {
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<List<GetApprovesList>> getApproversList(String pAmeTransactionType, int pTransactionId) async {
String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST";
Map<String, dynamic> postParams = {
"P_AME_TRANSACTION_TYPE": pAmeTransactionType,
"P_PAGE_LIMIT": 1000,
"P_PAGE_NUM": 1,
"P_TRANSACTION_ID": pTransactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getApprovesList ?? [];
}, url, postParams);
}
Future<List<GetApprovesList>> addAttachment(List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}ADD_ATTACHMENT";
Map<String, dynamic> postParams = {"AddAttachmentList": list};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getApprovesList ?? [];
}, url, postParams);
}
Future<StartEitApprovalProcess?> startEitApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_EIT_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
"P_ITEM_KEY": itemKey,
"P_TRANSACTION_ID": transactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startEitApprovalProcess;
}, url, postParams);
}
} }

@ -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<List<GetPendingTransactionsFunctions>> getPendingReqFunctions() async {
String url = "${ApiConsts.erpRest}GET_PENDING_REQ_FUNCTIONS";
Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getPendingTransactionsFunctions ?? [];
}, url, postParams);
}
Future<List<GetPendingTransactionsDetails>> getPendingTransactionsDetails(String functionID, String dateFrom, String dateTo) async {
String url = "${ApiConsts.erpRest}GET_PENDING_REQ_DETAILS";
Map<String, dynamic> 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<String> getAnnouncements(int itgAwarenessID, int itgPageNo, int itgRowID) async {
String url = "${ApiConsts.cocRest}GetAnnouncementDiscountsConfigData";
Map<String, dynamic> 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);
}
}

@ -9,7 +9,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
class ProfileApiClient { class ProfileApiClient {
static final ProfileApiClient _instance = ProfileApiClient._internal(); static final ProfileApiClient _instance = ProfileApiClient._internal();
@ -27,6 +27,7 @@ class ProfileApiClient {
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json); GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
print(responseData);
return responseData.getEmployeeContactsList ?? []; return responseData.getEmployeeContactsList ?? [];
}, url, postParams); }, url, postParams);
} }

@ -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<SurahModel> getSurahs() async {
// String url = "${ApiConsts.tangheemUsers}AlSuar_Get";
// var postParams = {};
// return await ApiClient().postJsonForObject((json) => SurahModel.fromJson(json), url, postParams);
// }
//
// Future<MemberModel> getMembers() async {
// String url = "${ApiConsts.tangheemUsers}Committee_Get";
// var postParams = {};
// return await ApiClient().postJsonForObject((json) => MemberModel.fromJson(json), url, postParams);
// }
//
// Future<ContentInfoModel> getContentInfo(int contentId) async {
// String url = "${ApiConsts.tangheemUsers}ContentInfo_Get";
// var postParams = {"contentTypeId": contentId};
// return await ApiClient().postJsonForObject((json) => ContentInfoModel.fromJson(json), url, postParams);
// }
}

@ -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/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_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/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/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/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_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 { class WorkListApiClient {
static final WorkListApiClient _instance = WorkListApiClient._internal(); static final WorkListApiClient _instance = WorkListApiClient._internal();

@ -1,7 +1,7 @@
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
class AppPermissions{ class AppPermissions{
static location(Function(bool) completion) { static void location(Function(bool) completion) {
Permission.location.isGranted.then((isGranted){ Permission.location.isGranted.then((isGranted){
if(!isGranted){ if(!isGranted){
Permission.location.request().then((granted){ Permission.location.request().then((granted){
@ -13,7 +13,7 @@ class AppPermissions{
} }
static checkAll(Function(bool) completion){ static void checkAll(Function(bool) completion){
[ [
Permission.location Permission.location
].request().then((value){ ].request().then((value){

@ -61,7 +61,7 @@ class DateUtil {
static String convertDateToString(DateTime date) { static String convertDateToString(DateTime date) {
const start = "/Date("; const start = "/Date(";
const end = "+0300)"; const end = "+0300)/";
int milliseconds = date.millisecondsSinceEpoch; int milliseconds = date.millisecondsSinceEpoch;
return start + "$milliseconds" + end; return start + "$milliseconds" + end;
@ -133,7 +133,7 @@ class DateUtil {
/// get month by /// get month by
/// [month] convert month number in to month name /// [month] convert month number in to month name
static getMonth(int month) { static String getMonth(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -159,12 +159,14 @@ class DateUtil {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
return "";
} }
} }
/// get month by /// get month by
/// [month] convert month number in to month name in Arabic /// [month] convert month number in to month name in Arabic
static getMonthArabic(int month) { static String getMonthArabic(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "يناير"; return "يناير";
@ -190,10 +192,12 @@ class DateUtil {
return " نوفمبر"; return " نوفمبر";
case 12: case 12:
return "ديسمبر"; return "ديسمبر";
default:
return "";
} }
} }
static getMonthByName(String month) { static int getMonthByName(String month) {
switch (month.toLowerCase()) { switch (month.toLowerCase()) {
case 'january': case 'january':
return 1; return 1;
@ -219,6 +223,8 @@ class DateUtil {
return 11; return 11;
case 'december': case 'december':
return 12; return 12;
default:
return 0;
} }
} }
@ -234,7 +240,7 @@ class DateUtil {
/// get month by /// get month by
/// [weekDay] convert week day in int to week day name /// [weekDay] convert week day in int to week day name
static getWeekDay(int weekDay) { static String getWeekDay(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "Monday"; return "Monday";
@ -250,12 +256,14 @@ class DateUtil {
return "Saturday "; return "Saturday ";
case 7: case 7:
return "Sunday"; return "Sunday";
default:
return "";
} }
} }
/// get month by /// get month by
/// [weekDay] convert week day in int to week day name arabic /// [weekDay] convert week day in int to week day name arabic
static getWeekDayArabic(int weekDay) { static String getWeekDayArabic(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "الاثنين"; return "الاثنين";
@ -271,10 +279,12 @@ class DateUtil {
return "السبت "; return "السبت ";
case 7: case 7:
return "الاحد"; return "الاحد";
default:
return "";
} }
} }
static getWeekDayEnglish(int weekDay) { static String getWeekDayEnglish(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "Monday"; return "Monday";
@ -290,6 +300,8 @@ class DateUtil {
return "Saturday "; return "Saturday ";
case 7: case 7:
return "Sunday"; return "Sunday";
default:
return "";
} }
} }
@ -415,7 +427,7 @@ class DateUtil {
return DateFormat(formattedString).format(dateTime); return DateFormat(formattedString).format(dateTime);
} }
static convertISODateToJsonDate(String isoDate) { static String convertISODateToJsonDate(String isoDate) {
return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/"; return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/";
} }

@ -1,25 +1,37 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:mohem_flutter_app/app_state/app_state.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: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/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/dialogs/confirm_dialog.dart';
import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; import 'package:mohem_flutter_app/widgets/loading_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
// ignore_for_file: avoid_annotating_with_dynamic
class Utils { class Utils {
static bool _isLoadingVisible = false; static bool _isLoadingVisible = false;
static bool get isLoading => _isLoadingVisible; static bool get isLoading => _isLoadingVisible;
static void showToast(String message) { static void showToast(String message, {bool longDuration = false}) {
Fluttertoast.showToast( Fluttertoast.showToast(
msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0); msg: message,
toastLength: longDuration ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
timeInSecForIosWeb: 1,
backgroundColor: Colors.black54,
textColor: Colors.white,
fontSize: 16.0);
} }
static dynamic getNotNullValue(List<dynamic> list, int index) { static dynamic getNotNullValue(List<dynamic> list, int index) {
@ -39,7 +51,7 @@ class Utils {
} }
static void showLoading(BuildContext context) { static void showLoading(BuildContext context) {
WidgetsBinding.instance?.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
_isLoadingVisible = true; _isLoadingVisible = true;
showDialog( showDialog(
context: context, context: context,
@ -112,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 { try {
var b64 = img.replaceFirst('data:image/png;base64,', ''); var b64 = img.replaceFirst('data:image/png;base64,', '');
if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64); if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64);
} catch (e) {} } 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) { static bool isBase64(String str) {
@ -128,4 +158,38 @@ class Utils {
static Uint8List dataFromBase64String(String base64String) { static Uint8List dataFromBase64String(String base64String) {
return base64Decode(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,
],
);
}
} }

@ -1,4 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/ui/attendance/monthly_attendance.dart';
import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart';
import 'package:mohem_flutter_app/ui/login/forgot_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/forgot_password_screen.dart';
@ -6,26 +8,33 @@ import 'package:mohem_flutter_app/ui/login/login_screen.dart';
import 'package:mohem_flutter_app/ui/login/new_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/new_password_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart';
import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart';
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_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/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_familyMember.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_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/my_attendance/work_from_home_screen.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/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/profile/profile_screen.dart';
import 'package:mohem_flutter_app/ui/screens/submenu_screen.dart'; import 'package:mohem_flutter_app/ui/screens/submenu_screen.dart';
import 'package:mohem_flutter_app/ui/profile/family_members.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
import 'package:mohem_flutter_app/ui/attendance/monthly_attendance.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/ui/profile/personal_info.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/family_members.dart';
class AppRoutes { class AppRoutes {
static const String splash = "/splash"; static const String splash = "/splash";
@ -52,10 +61,12 @@ class AppRoutes {
static const String myAttendance = "/myAttendance"; static const String myAttendance = "/myAttendance";
static const String dynamicScreen = "/dynamicScreen"; static const String dynamicScreen = "/dynamicScreen";
static const String addDynamicInput = "/addDynamicInput"; static const String addDynamicInput = "/addDynamicInput";
static const String requestSubmitScreen = "/requestSubmitScreen";
//profile //profile
static const String addDynamicInputProfile = 'addDynamicInputProfile'; static const String addDynamicInputProfile = 'addDynamicInputProfile';
//Attendance //Attendance
static const String attendance = "/attendance"; static const String attendance = "/attendance";
static const String monthlyAttendance = "/monthlyAttendance"; static const String monthlyAttendance = "/monthlyAttendance";
@ -69,6 +80,23 @@ class AppRoutes {
static const String basicDetails = "/basicDetails"; static const String basicDetails = "/basicDetails";
static const String contactDetails = "/contactDetails"; static const String contactDetails = "/contactDetails";
static const String familyMembers = "/familyMembers"; static const String familyMembers = "/familyMembers";
static const String deleteFamilyMember = "/deleteFamilyMember";
// Mowadhafhi
static const String mowadhafhi = "/mowadhafhi";
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<String, WidgetBuilder> routes = { static final Map<String, WidgetBuilder> routes = {
login: (context) => LoginScreen(), login: (context) => LoginScreen(),
@ -110,5 +138,21 @@ class AppRoutes {
dynamicScreen: (context) => DynamicListViewScreen(), dynamicScreen: (context) => DynamicListViewScreen(),
addDynamicInput: (context) => DynamicInputScreen(), addDynamicInput: (context) => DynamicInputScreen(),
addDynamicInputProfile: (context) => DynamicInputScreenProfile(), addDynamicInputProfile: (context) => DynamicInputScreenProfile(),
deleteFamilyMember: (context) => DeleteFamilyMember(),
requestSubmitScreen: (context) => RequestSubmitScreen(),
//mowadhafhi
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(),
}; };
} }

@ -218,12 +218,12 @@ class OtpDialog {
} }
} }
static getSignature() async { // static getSignature() async {
// if (Platform.isAndroid) { // // if (Platform.isAndroid) {
// return await SmsRetriever.getAppSignature(); // // return await SmsRetriever.getAppSignature();
// } else { // // } else {
// return null; // // return null;
// } // // }
} // }
} }

@ -1,8 +1,6 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
extension CapExtension on String { extension CapExtension on String {
String get toCamelCase => "${this[0].toUpperCase()}${this.substring(1)}"; String get toCamelCase => "${this[0].toUpperCase()}${this.substring(1)}";
@ -25,11 +23,12 @@ extension EmailValidator on String {
Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text( Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text(
this, this,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600, fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor, color: color ?? MyColors.darkTextColor,
letterSpacing: -0.33, letterSpacing: -0.33,
decoration: isUnderLine ? TextDecoration.underline : null), decoration: isUnderLine ? TextDecoration.underline : null,
),
); );
Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text( Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text(
@ -37,11 +36,12 @@ extension EmailValidator on String {
textAlign: isCenter ? TextAlign.center : null, textAlign: isCenter ? TextAlign.center : null,
maxLines: (maxLine > 0) ? maxLine : null, maxLines: (maxLine > 0) ? maxLine : null,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600, fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor, color: color ?? MyColors.darkTextColor,
letterSpacing: -0.72, letterSpacing: -0.72,
decoration: isUnderLine ? TextDecoration.underline : null), decoration: isUnderLine ? TextDecoration.underline : null,
),
); );
Widget toText13({Color? color, bool isUnderLine = false}) => Text( Widget toText13({Color? color, bool isUnderLine = false}) => Text(
@ -54,7 +54,7 @@ extension EmailValidator on String {
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 14, letterSpacing: -0.48, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), 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, this,
maxLines: maxlines, maxLines: maxlines,
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
@ -66,9 +66,9 @@ extension EmailValidator on String {
); );
Widget toText20({Color? color, bool isBold = false}) => Text( Widget toText20({Color? color, bool isBold = false}) => Text(
this, this,
style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 20, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(fontSize: 20, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4),
); );
Widget toText22({Color? color, bool isBold = false}) => Text( Widget toText22({Color? color, bool isBold = false}) => Text(
this, this,
@ -86,9 +86,9 @@ extension EmailValidator on String {
); );
Widget toText44({Color? color, bool isBold = false}) => Text( Widget toText44({Color? color, bool isBold = false}) => Text(
this, this,
style: TextStyle(height: 32 / 32, color: color ?? MyColors.darkTextColor, fontSize: 44, letterSpacing: -2.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(height: 32 / 32, color: color ?? MyColors.darkTextColor, fontSize: 44, letterSpacing: -2.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
); );
Widget toSectionHeading({String upperHeading = "", String lowerHeading = ""}) { Widget toSectionHeading({String upperHeading = "", String lowerHeading = ""}) {
String upper = ""; String upper = "";
@ -133,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))}"; 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) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -159,6 +159,8 @@ extension EmailValidator on String {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
return "";
} }
} }
} }

@ -21,8 +21,8 @@ extension WidgetExtensions on Widget {
baseColor: Color(0xffe8eff0), baseColor: Color(0xffe8eff0),
highlightColor: Colors.white, highlightColor: Colors.white,
child: Container( child: Container(
child: this,
color: Colors.white, color: Colors.white,
child: this,
), ),
) )
: Container( : Container(

@ -40,7 +40,7 @@ class CodegenLoader extends AssetLoader{
"checkIn": "تحقق في", "checkIn": "تحقق في",
"workList": "قائمة العمل", "workList": "قائمة العمل",
"leaveBalance": "رصيد الاجازات", "leaveBalance": "رصيد الاجازات",
"missingSwipes": "الضربات الشديدة في عداد المفقودين", "missingSwipes": "تسجيل بصمة حضور",
"ticketBalance": "رصيد التذكرة", "ticketBalance": "رصيد التذكرة",
"other": "آخر", "other": "آخر",
"services": "خدمات", "services": "خدمات",
@ -69,6 +69,29 @@ class CodegenLoader extends AssetLoader{
"passwordChangedSuccessfully": "تم تغيير الرقم السري بنجاح", "passwordChangedSuccessfully": "تم تغيير الرقم السري بنجاح",
"itemsForSale": "سلع للبيع", "itemsForSale": "سلع للبيع",
"attendanceDetails": "تفاصيل الحضور", "attendanceDetails": "تفاصيل الحضور",
"order": "الطلبات",
"earlyOut": "الخروج مبكرا",
"shortage": "ساعات التقصير",
"excess": "فائض",
"lateIn": "القدوم المتاخر",
"approvedCheckOut": "اعتماد وقت الخروج",
"approvedCheckIn": "اعتماد وقت الدخول",
"actualCheckOut": "وقت الخروج",
"actualCheckIn": "وقت الدخول",
"present": "حضور",
"pres": "حضور",
"shiftTime": "وقت التناوب",
"absent": "غياب",
"attendance": "الحضور",
"scheduleDays": "ايام العمل",
"offDays": "ايام الراحه",
"nonAnalyzed": "لايوجد تحليل",
"shortageHour": "ساعات التقصير",
"stats": "الحاله",
"completed": "تم اكمال",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
"clickMe": "Click me",
"doNotUseRecentPassword": "لا تستخدم كلمة مرور حديثة", "doNotUseRecentPassword": "لا تستخدم كلمة مرور حديثة",
"atLeastOneLowercase": "حرف صغير واحد على الأقل", "atLeastOneLowercase": "حرف صغير واحد على الأقل",
"atLeastOneUppercase": "حرف كبير واحد على الأقل", "atLeastOneUppercase": "حرف كبير واحد على الأقل",
@ -188,9 +211,6 @@ class CodegenLoader extends AssetLoader{
"rfqUOM": "RFQ UOM", "rfqUOM": "RFQ UOM",
"rfqQty": "RFQ الكمية", "rfqQty": "RFQ الكمية",
"rfqNumber": "رقم RFQ", "rfqNumber": "رقم RFQ",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
"clickMe": "Click me",
"human": "بشري", "human": "بشري",
"resources": "موارد", "resources": "موارد",
"details": "تفاصيل", "details": "تفاصيل",
@ -225,14 +245,52 @@ class CodegenLoader extends AssetLoader{
"approvalLevel": "مستوى الموافقة", "approvalLevel": "مستوى الموافقة",
"requesterDetails": "تفاصيل مقدم الطلب", "requesterDetails": "تفاصيل مقدم الطلب",
"myAttendance": "حضوري", "myAttendance": "حضوري",
"workOnBreak": "العمل على استراحة", "workOnBreak": "التعويض عن العمل اثناءالاستراحه",
"next": "التالي", "next": "التالي",
"mobile": "التليفون المحمول",
"completingYear": "نحن نقدر لك لاستكمال خدمة",
"year": "سنة",
"month": "شهر",
"day": "يوم",
"address": "العنوان",
"phoneNumber": "رقم الجوال",
"businessGroup": "مجموعة العمل",
"Payroll": "الراتب",
"civilIdentityNumber": "رقم الهويه",
"dateOfBirth": "تاريخ الميلاد",
"maritalStatus ": "الحالة الاجتماعية",
"fullName": "الأسم الكامل",
"remove": "حذف",
"submit": "ارسال",
"areYouSureYouWantToSubmit": "هل أنت متأكد أنك تريد أن تقدم؟",
"comments": "تعليقات",
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
"monthlyPaySlip": "قسيمة الراتب الشهرية",
"particular": "خاص",
"earnings": "أرباح",
"deductions": "الخصومات",
"paymentMethodName": "اسم طريقة الدفع",
"bankName": "اسم البنك",
"branchCode": "رمز الفرع",
"accountNo": "رقم الحساب",
"summaryOfInformation": "ملخص المعلومات",
"totalPayAmount": "المبلغ الإجمالي للدفع",
"paymentInformation": "معلومات الدفع",
"amount": "مقدار",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",
"username": "Username", "username": "Username",
"password": "password" "password": "password"
} },
"profileCompletionPer": "استكمال الملف الشخصي",
"completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية",
"basicDetails": "تفاصيل أساسية",
"contactDetails": "بيانات التواصل",
"familyDetails": "تفاصيل عائلية"
}, },
"clicked": { "clicked": {
"zero": "You clicked {} times!", "zero": "You clicked {} times!",
@ -242,14 +300,6 @@ class CodegenLoader extends AssetLoader{
"many": "You clicked {} times!", "many": "You clicked {} times!",
"other": "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": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",
@ -314,6 +364,27 @@ static const Map<String,dynamic> en_US = {
"confirm": "Confirm", "confirm": "Confirm",
"passwordChangedSuccessfully": "Password changed successfully", "passwordChangedSuccessfully": "Password changed successfully",
"itemsForSale": "Items for Sale", "itemsForSale": "Items for Sale",
"attendanceDetails": "Attendance Details",
"order": "order",
"earlyOut": "Early Out",
"shortage": "Shortage",
"excess": "Excess",
"lateIn": "Late In",
"approvedCheckOut": "Approved Check Out",
"approvedCheckIn": "Approved Check In",
"actualCheckOut": "Actual Check Out",
"actualCheckIn": "Actual Check In",
"present": "PRESENT",
"pres": "present",
"shiftTime": "Shift Time",
"absent": "ABSENT",
"attendance": "Attendance",
"scheduleDays": "Schedule\nDays",
"offDays": "Off\nDays",
"nonAnalyzed": "Non\nAnalyzed",
"shortageHour": "Shortage\nHour",
"stats": "Stats",
"completed": "Completed",
"doNotUseRecentPassword": "Do not use recent password", "doNotUseRecentPassword": "Do not use recent password",
"atLeastOneLowercase": "At least one lowercase", "atLeastOneLowercase": "At least one lowercase",
"atLeastOneUppercase": "At least one uppercase", "atLeastOneUppercase": "At least one uppercase",
@ -328,7 +399,6 @@ static const Map<String,dynamic> en_US = {
"whatsapp": "Whatsapp", "whatsapp": "Whatsapp",
"reject": "Reject", "reject": "Reject",
"approve": "Approve", "approve": "Approve",
"attendanceDetails": "Attendence Details",
"cancel": "Cancel", "cancel": "Cancel",
"requestedItems": "Requested Items", "requestedItems": "Requested Items",
"request": "Request", "request": "Request",
@ -473,12 +543,51 @@ static const Map<String,dynamic> en_US = {
"myAttendance": "My Attendance", "myAttendance": "My Attendance",
"workOnBreak": "Work On Break", "workOnBreak": "Work On Break",
"next": "Next", "next": "Next",
"mobile": "Mobile",
"year": "Year",
"month": "Month",
"day": "Day",
"completingYear": "We appreciate you for completing the service of",
"address": "Address",
"phoneNumber": "Phone Number",
"businessGroup": "Business",
"Payroll": "Payroll",
"civilIdentityNumber": "Civil Identity Number",
"dateOfBirth": "Date of Birth",
"maritalStatus ": "Marital Status ",
"fullName": "Full Name",
"remove": "Remove",
"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",
"profile": { "profile": {
"reset_password": { "reset_password": {
"label": "Reset Password", "label": "Reset Password",
"username": "Username", "username": "Username",
"password": "password" "password": "password"
} },
"profileCompletionPer": "Profile Completion",
"completeProfile": "Complete Profile",
"personalInformation": "Personal Information",
"basicDetails": "Basic Details",
"contactDetails": "Contact Details",
"familyDetails": "Family Members"
}, },
"clicked": { "clicked": {
"zero": "You clicked {} times!", "zero": "You clicked {} times!",
@ -488,14 +597,6 @@ static const Map<String,dynamic> en_US = {
"many": "You clicked {} times!", "many": "You clicked {} times!",
"other": "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": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",

@ -232,6 +232,7 @@ abstract class LocaleKeys {
static const myAttendance = 'myAttendance'; static const myAttendance = 'myAttendance';
static const workOnBreak = 'workOnBreak'; static const workOnBreak = 'workOnBreak';
static const next = 'next'; static const next = 'next';
static const mobile = 'mobile';
static const completingYear = 'completingYear'; static const completingYear = 'completingYear';
static const year = 'year'; static const year = 'year';
static const month = 'month'; static const month = 'month';
@ -245,6 +246,24 @@ abstract class LocaleKeys {
static const maritalStatus = 'maritalStatus '; static const maritalStatus = 'maritalStatus ';
static const fullName = 'fullName'; static const fullName = 'fullName';
static const remove = 'remove'; static const remove = 'remove';
static const submit = 'submit';
static const areYouSureYouWantToSubmit = 'areYouSureYouWantToSubmit';
static const comments = 'comments';
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 profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_label = 'profile.reset_password.label';
static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_username = 'profile.reset_password.username';
static const profile_reset_password_password = 'profile.reset_password.password'; static const profile_reset_password_password = 'profile.reset_password.password';
@ -257,7 +276,6 @@ abstract class LocaleKeys {
static const profile_familyDetails = 'profile.familyDetails'; static const profile_familyDetails = 'profile.familyDetails';
static const profile = 'profile'; static const profile = 'profile';
static const clicked = 'clicked'; static const clicked = 'clicked';
static const amount = 'amount';
static const gender_with_arg = 'gender.with_arg'; static const gender_with_arg = 'gender.with_arg';
static const gender = 'gender'; static const gender = 'gender';
static const reset_locale = 'reset_locale'; static const reset_locale = 'reset_locale';

@ -1,23 +1,19 @@
import 'dart:io'; import 'dart:io';
import 'dart:typed_data';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.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/app_state/app_state.dart';
import 'package:mohem_flutter_app/config/app_provider.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.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/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_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/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/theme/app_theme.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:provider/provider.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
import 'package:firebase_core/firebase_core.dart';
import 'config/routes.dart';
import 'package:logger/logger.dart';
var logger = Logger( var logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode) // filter: null, // Use the default LogFilter (-> only log in debug mode)
@ -30,7 +26,7 @@ Future<void> main() async {
await EasyLocalization.ensureInitialized(); await EasyLocalization.ensureInitialized();
await Firebase.initializeApp(); await Firebase.initializeApp();
AppState().setPostParamsModel( AppState().setPostParamsModel(
PostParamsModel(channel: 31, versionID: 3.7, mobileType: Platform.isAndroid ? "android" : "ios"), PostParamsModel(channel: 31, versionID: 5.0, mobileType: Platform.isAndroid ? "android" : "ios"),
); );
runApp( runApp(
EasyLocalization( EasyLocalization(
@ -70,10 +66,15 @@ class MyApp extends StatelessWidget {
var obj = AppState().postParamsObject; 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!); AppState().setPostParamsModel(obj!);
List<LocalizationsDelegate> delegates = context.localizationDelegates;
// delegates.add(GlobalMaterialLocalizations.delegate);
delegates.add(
MonthYearPickerLocalizations.delegate,
);
return MaterialApp( return MaterialApp(
theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"), theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
localizationsDelegates: context.localizationDelegates, localizationsDelegates: delegates,
supportedLocales: context.supportedLocales, supportedLocales: context.supportedLocales,
locale: context.locale, locale: context.locale,
initialRoute: AppRoutes.initialRoute, initialRoute: AppRoutes.initialRoute,

@ -0,0 +1,18 @@
class AddAttSuccessList {
bool? addSuccess;
int? attachmentID;
AddAttSuccessList({this.addSuccess, this.attachmentID});
AddAttSuccessList.fromJson(Map<String, dynamic> json) {
addSuccess = json['AddSuccess'];
attachmentID = json['AttachmentID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['AddSuccess'] = this.addSuccess;
data['AttachmentID'] = this.attachmentID;
return data;
}
}

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

@ -0,0 +1,27 @@
class AttachmentModel {
int? attachmentID;
String? pFILECONTENTTYPE;
String? pFILEDATA;
String? pFILENAME;
int? pTRANSACTIONID;
AttachmentModel({this.attachmentID, this.pFILECONTENTTYPE, this.pFILEDATA, this.pFILENAME, this.pTRANSACTIONID});
AttachmentModel.fromJson(Map<String, dynamic> json) {
attachmentID = json['AttachmentID'];
pFILECONTENTTYPE = json['P_FILE_CONTENT_TYPE'];
pFILEDATA = json['P_FILE_DATA'];
pFILENAME = json['P_FILE_NAME'];
pTRANSACTIONID = json['P_TRANSACTION_ID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['AttachmentID'] = this.attachmentID;
data['P_FILE_CONTENT_TYPE'] = this.pFILECONTENTTYPE;
data['P_FILE_DATA'] = this.pFILEDATA;
data['P_FILE_NAME'] = this.pFILENAME;
data['P_TRANSACTION_ID'] = this.pTRANSACTIONID;
return data;
}
}

@ -0,0 +1,27 @@
class ValidateEitTransactionModel {
int? tRANSACTIONNUMBER;
String? nAME;
String? vARCHAR2VALUE;
int? nUMBERVALUE;
String? dATEVALUE;
ValidateEitTransactionModel({this.tRANSACTIONNUMBER, this.nAME, this.vARCHAR2VALUE, this.nUMBERVALUE, this.dATEVALUE});
ValidateEitTransactionModel.fromJson(Map<String, dynamic> json) {
tRANSACTIONNUMBER = json['TRANSACTION_NUMBER'];
nAME = json['NAME'];
vARCHAR2VALUE = json['VARCHAR2_VALUE'];
nUMBERVALUE = json['NUMBER_VALUE'];
dATEVALUE = json['DATE_VALUE'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['TRANSACTION_NUMBER'] = this.tRANSACTIONNUMBER;
data['NAME'] = this.nAME;
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
data['NUMBER_VALUE'] = this.nUMBERVALUE;
data['DATE_VALUE'] = this.dATEVALUE;
return data;
}
}

@ -1,9 +1,9 @@
class GET_EIT_Transactions_Model { class GetEitTransactionsModel {
List<CollectionTransaction>? collectionTransaction; List<CollectionTransaction>? collectionTransaction;
GET_EIT_Transactions_Model({this.collectionTransaction}); GetEitTransactionsModel({this.collectionTransaction});
GET_EIT_Transactions_Model.fromJson(Map<String, dynamic> json) { GetEitTransactionsModel.fromJson(Map<String, dynamic> json) {
if (json['Collection_Transaction'] != null) { if (json['Collection_Transaction'] != null) {
collectionTransaction = <CollectionTransaction>[]; collectionTransaction = <CollectionTransaction>[];
json['Collection_Transaction'].forEach((v) { json['Collection_Transaction'].forEach((v) {

@ -1,10 +1,20 @@
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_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_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/get_attachement_list_model.dart'; import 'package:mohem_flutter_app/models/get_attachement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_default_value_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
@ -12,6 +22,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_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_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_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_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_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
@ -20,31 +31,41 @@ 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_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_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_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/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';
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 '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_action_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_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';
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_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.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'; import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; import 'package:mohem_flutter_app/models/validate_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_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_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/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/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_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 { class GenericResponseModel {
String? date; String? date;
int? languageID; int? languageID;
@ -72,8 +93,8 @@ class GenericResponseModel {
String? successMsg; String? successMsg;
String? successMsgN; String? successMsgN;
String? vidaUpdatedResponse; String? vidaUpdatedResponse;
String? addAttSuccessList; List<AddAttSuccessList>? addAttSuccessList;
String? addAttachmentList; AddAttachmentList? addAttachmentList;
String? bCDomain; String? bCDomain;
String? bCLogo; String? bCLogo;
BasicMemberInformationModel? basicMemberInformation; BasicMemberInformationModel? basicMemberInformation;
@ -102,7 +123,7 @@ class GenericResponseModel {
List<GetActionHistoryList>? getActionHistoryList; List<GetActionHistoryList>? getActionHistoryList;
List<String>? getAddressDffStructureList; List<String>? getAddressDffStructureList;
List<String>? getAddressNotificationBodyList; List<String>? getAddressNotificationBodyList;
List<String>? getApprovesList; List<GetApprovesList>? getApprovesList;
List<GetAttachementList>? getAttachementList; List<GetAttachementList>? getAttachementList;
GetAttendanceTracking? getAttendanceTrackingList; GetAttendanceTracking? getAttendanceTrackingList;
List<GetBasicDetColsStructureList>? getBasicDetColsStructureList; List<GetBasicDetColsStructureList>? getBasicDetColsStructureList;
@ -122,12 +143,12 @@ class GenericResponseModel {
GetContactNotificationBodyList? getContactNotificationBodyList; GetContactNotificationBodyList? getContactNotificationBodyList;
List<String>? getCountriesList; List<String>? getCountriesList;
List<GetDayHoursTypeDetailsList>? getDayHoursTypeDetailsList; List<GetDayHoursTypeDetailsList>? getDayHoursTypeDetailsList;
List<String>? getDeductionsList; List<GetDeductionsList>? getDeductionsList;
List<String>? getDefaultValueList; GetDefaultValueList? getDefaultValueList;
List<GetEitCollectionNotificationBodyList>? getEITCollectionNotificationBodyList; List<GetEitCollectionNotificationBodyList>? getEITCollectionNotificationBodyList;
List<GetEITDFFStructureList>? getEITDFFStructureList; List<GetEITDFFStructureList>? getEITDFFStructureList;
List<GetEITTransactionList>? getEITTransactionList; List<GetEITTransactionList>? getEITTransactionList;
List<String>? getEarningsList; List<GetEarningsList>? getEarningsList;
List<GetEmployeeAddressList>? getEmployeeAddressList; List<GetEmployeeAddressList>? getEmployeeAddressList;
List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList; List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList;
List<GetEmployeeContactsList>? getEmployeeContactsList; List<GetEmployeeContactsList>? getEmployeeContactsList;
@ -151,10 +172,11 @@ class GenericResponseModel {
List<String>? getOpenNotificationsNumList; List<String>? getOpenNotificationsNumList;
List<String>? getOpenPeriodDatesList; List<String>? getOpenPeriodDatesList;
List<String>? getOrganizationsSalariesList; List<String>? getOrganizationsSalariesList;
List<String>? getPaymentInformationList; List<GetPaymentInformationList>? getPaymentInformationList;
List<String>? getPayslipList; List<GetPayslipList>? getPayslipList;
List<String>? getPendingReqDetailsList;
List<String>? getPendingReqFunctionsList; // List<String>? getPendingReqDetailsList;
// List<String>? getPendingReqFunctionsList;
List<String>? getPerformanceAppraisalList; List<String>? getPerformanceAppraisalList;
List<GetPhonesNotificationBodyList>? getPhonesNotificationBodyList; List<GetPhonesNotificationBodyList>? getPhonesNotificationBodyList;
List<GetPoItemHistoryList>? getPoItemHistoryList; List<GetPoItemHistoryList>? getPoItemHistoryList;
@ -173,12 +195,22 @@ class GenericResponseModel {
List<String>? getSubordinatesAttdStatusList; List<String>? getSubordinatesAttdStatusList;
List<SubordinatesLeavesList>? getSubordinatesLeavesList; List<SubordinatesLeavesList>? getSubordinatesLeavesList;
List<String>? getSubordinatesLeavesTotalVacationsList; List<String>? getSubordinatesLeavesTotalVacationsList;
List<String>? getSummaryOfPaymentList; List<GetSummaryOfPaymentList>? getSummaryOfPaymentList;
List<String>? getSwipesList; List<String>? getSwipesList;
List<String>? getTermColsStructureList; List<String>? getTermColsStructureList;
List<String>? getTermDffStructureList; List<String>? getTermDffStructureList;
List<String>? getTermNotificationBodyList; List<String>? getTermNotificationBodyList;
List<GetTimeCardSummaryList>? getTimeCardSummaryList; List<GetTimeCardSummaryList>? getTimeCardSummaryList;
List<GetTicketsByEmployeeList>? getTicketsByEmployeeList;
List<GetTicketDetailsByEmployee>? getTicketDetailsByEmployee;
List<GetTicketTransactions>? getTicketTransactions;
List<GetTicketTypes>? getTicketTypes;
List<GetSectionTopics>? getSectionTopics;
List<GetMowadhafhiProjects>? getMowadhafhiProjects;
List<GetProjectDepartments>? getProjectDepartments;
List<GetDepartmentSections>? getDepartmentSections;
List<GetPendingTransactionsFunctions>? getPendingTransactionsFunctions;
List<GetPendingTransactionsDetails>? getPendingTransactionsDetails;
List<String>? getUserItemTypesList; List<String>? getUserItemTypesList;
List<String>? getVacationRulesList; List<String>? getVacationRulesList;
List<String>? getVaccinationOnHandList; List<String>? getVaccinationOnHandList;
@ -257,7 +289,7 @@ class GenericResponseModel {
String? startBasicDetApprProcessList; String? startBasicDetApprProcessList;
String? startCeiApprovalProcess; String? startCeiApprovalProcess;
String? startContactApprovalProcessList; String? startContactApprovalProcessList;
String? startEitApprovalProcess; StartEitApprovalProcess? startEitApprovalProcess;
String? startHrApprovalProcessList; String? startHrApprovalProcessList;
String? startPhonesApprovalProcessList; String? startPhonesApprovalProcessList;
String? startSitApprovalProcess; String? startSitApprovalProcess;
@ -267,7 +299,7 @@ class GenericResponseModel {
String? submitCEITransactionList; String? submitCEITransactionList;
String? submitCcpTransactionList; String? submitCcpTransactionList;
String? submitContactTransactionList; String? submitContactTransactionList;
String? submitEITTransactionList; SubmitEITTransactionList? submitEITTransactionList;
String? submitHrTransactionList; String? submitHrTransactionList;
String? submitPhonesTransactionList; String? submitPhonesTransactionList;
String? submitSITTransactionList; String? submitSITTransactionList;
@ -286,7 +318,7 @@ class GenericResponseModel {
String? vHRGetProjectByCodeList; String? vHRGetProjectByCodeList;
bool? vHRIsVerificationCodeValid; bool? vHRIsVerificationCodeValid;
String? validateAbsenceTransactionList; String? validateAbsenceTransactionList;
String? validateEITTransactionList; ValidateEITTransactionList? validateEITTransactionList;
String? validatePhonesTransactionList; String? validatePhonesTransactionList;
String? vrItemTypesList; String? vrItemTypesList;
String? wFLookUpList; String? wFLookUpList;
@ -406,8 +438,8 @@ class GenericResponseModel {
this.getOrganizationsSalariesList, this.getOrganizationsSalariesList,
this.getPaymentInformationList, this.getPaymentInformationList,
this.getPayslipList, this.getPayslipList,
this.getPendingReqDetailsList, // this.getPendingReqDetailsList,
this.getPendingReqFunctionsList, // this.getPendingReqFunctionsList,
this.getPerformanceAppraisalList, this.getPerformanceAppraisalList,
this.getPhonesNotificationBodyList, this.getPhonesNotificationBodyList,
this.getPoItemHistoryList, this.getPoItemHistoryList,
@ -432,6 +464,16 @@ class GenericResponseModel {
this.getTermDffStructureList, this.getTermDffStructureList,
this.getTermNotificationBodyList, this.getTermNotificationBodyList,
this.getTimeCardSummaryList, this.getTimeCardSummaryList,
this.getTicketsByEmployeeList,
this.getTicketDetailsByEmployee,
this.getTicketTransactions,
this.getTicketTypes,
this.getSectionTopics,
this.getMowadhafhiProjects,
this.getProjectDepartments,
this.getDepartmentSections,
this.getPendingTransactionsFunctions,
this.getPendingTransactionsDetails,
this.getUserItemTypesList, this.getUserItemTypesList,
this.getVacationRulesList, this.getVacationRulesList,
this.getVaccinationOnHandList, this.getVaccinationOnHandList,
@ -578,8 +620,13 @@ class GenericResponseModel {
successMsg = json['SuccessMsg']; successMsg = json['SuccessMsg'];
successMsgN = json['SuccessMsgN']; successMsgN = json['SuccessMsgN'];
vidaUpdatedResponse = json['VidaUpdatedResponse']; vidaUpdatedResponse = json['VidaUpdatedResponse'];
addAttSuccessList = json['AddAttSuccessList']; if (json['AddAttSuccessList'] != null) {
addAttachmentList = json['AddAttachment_List']; addAttSuccessList = <AddAttSuccessList>[];
json['AddAttSuccessList'].forEach((v) {
addAttSuccessList!.add(new AddAttSuccessList.fromJson(v));
});
}
addAttachmentList = json['AddAttachment_List'] != null ? new AddAttachmentList.fromJson(json['AddAttachment_List']) : null;
bCDomain = json['BC_Domain']; bCDomain = json['BC_Domain'];
bCLogo = json['BC_Logo']; bCLogo = json['BC_Logo'];
basicMemberInformation = json['BasicMemberInformation'] != null ? new BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null; basicMemberInformation = json['BasicMemberInformation'] != null ? new BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null;
@ -622,7 +669,13 @@ class GenericResponseModel {
getAddressDffStructureList = json['GetAddressDffStructureList']; getAddressDffStructureList = json['GetAddressDffStructureList'];
getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; getAddressNotificationBodyList = json['GetAddressNotificationBodyList'];
getApprovesList = json['GetApprovesList'];
if (json['GetApprovesList'] != null) {
getApprovesList = <GetApprovesList>[];
json['GetApprovesList'].forEach((v) {
getApprovesList!.add(new GetApprovesList.fromJson(v));
});
}
if (json['GetAttachementList'] != null) { if (json['GetAttachementList'] != null) {
getAttachementList = <GetAttachementList>[]; getAttachementList = <GetAttachementList>[];
@ -662,7 +715,7 @@ class GenericResponseModel {
getContactColsStructureList = json['GetContactColsStructureList']; getContactColsStructureList = json['GetContactColsStructureList'];
getContactDetailsList = json['GetContactDetailsList']; getContactDetailsList = json['GetContactDetailsList'];
getContactDffStructureList = json['GetContactDffStructureList']; getContactDffStructureList = json['GetContactDffStructureList'];
getContactNotificationBodyList= json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]); getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]);
getCountriesList = json['GetCountriesList']; getCountriesList = json['GetCountriesList'];
if (json['GetDayHoursTypeDetailsList'] != null) { if (json['GetDayHoursTypeDetailsList'] != null) {
getDayHoursTypeDetailsList = <GetDayHoursTypeDetailsList>[]; getDayHoursTypeDetailsList = <GetDayHoursTypeDetailsList>[];
@ -670,8 +723,14 @@ class GenericResponseModel {
getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v)); getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v));
}); });
} }
getDeductionsList = json['GetDeductionsList'];
getDefaultValueList = json['GetDefaultValueList']; if (json['GetDeductionsList'] != null) {
getDeductionsList = <GetDeductionsList>[];
json['GetDeductionsList'].forEach((v) {
getDeductionsList!.add(new GetDeductionsList.fromJson(v));
});
}
getDefaultValueList = json['GetDefaultValueList'] != null ? GetDefaultValueList.fromJson(json['GetDefaultValueList']) : null;
getEITCollectionNotificationBodyList = json["GetEITCollectionNotificationBodyList"] == null getEITCollectionNotificationBodyList = json["GetEITCollectionNotificationBodyList"] == null
? null ? null
: List<GetEitCollectionNotificationBodyList>.from(json["GetEITCollectionNotificationBodyList"].map((x) => GetEitCollectionNotificationBodyList.fromJson(x))); : List<GetEitCollectionNotificationBodyList>.from(json["GetEITCollectionNotificationBodyList"].map((x) => GetEitCollectionNotificationBodyList.fromJson(x)));
@ -687,7 +746,13 @@ class GenericResponseModel {
getEITTransactionList!.add(new GetEITTransactionList.fromJson(v)); getEITTransactionList!.add(new GetEITTransactionList.fromJson(v));
}); });
} }
getEarningsList = json['GetEarningsList'];
if (json['GetEarningsList'] != null) {
getEarningsList = <GetEarningsList>[];
json['GetEarningsList'].forEach((v) {
getEarningsList!.add(new GetEarningsList.fromJson(v));
});
}
if (json['GetEmployeeAddressList'] != null) { if (json['GetEmployeeAddressList'] != null) {
getEmployeeAddressList = <GetEmployeeAddressList>[]; getEmployeeAddressList = <GetEmployeeAddressList>[];
json['GetEmployeeAddressList'].forEach((v) { json['GetEmployeeAddressList'].forEach((v) {
@ -756,12 +821,25 @@ class GenericResponseModel {
getOpenNotificationsNumList = json['GetOpenNotificationsNumList']; getOpenNotificationsNumList = json['GetOpenNotificationsNumList'];
getOpenPeriodDatesList = json['GetOpenPeriodDatesList']; getOpenPeriodDatesList = json['GetOpenPeriodDatesList'];
getOrganizationsSalariesList = json['GetOrganizationsSalariesList']; getOrganizationsSalariesList = json['GetOrganizationsSalariesList'];
getPaymentInformationList = json['GetPaymentInformationList'];
getPayslipList = json['GetPayslipList']; if (json['GetPaymentInformationList'] != null) {
getPendingReqDetailsList = json['GetPendingReqDetailsList']; getPaymentInformationList = <GetPaymentInformationList>[];
getPendingReqFunctionsList = json['GetPendingReqFunctionsList']; json['GetPaymentInformationList'].forEach((v) {
getPaymentInformationList!.add(new GetPaymentInformationList.fromJson(v));
});
}
if (json['GetPayslipList'] != null) {
getPayslipList = <GetPayslipList>[];
json['GetPayslipList'].forEach((v) {
getPayslipList!.add(new GetPayslipList.fromJson(v));
});
}
// getPendingReqDetailsList = json['GetPendingReqDetailsList'];
// getPendingReqFunctionsList = json['GetPendingReqFunctionsList'];
getPerformanceAppraisalList = json['GetPerformanceAppraisalList']; getPerformanceAppraisalList = json['GetPerformanceAppraisalList'];
getPhonesNotificationBodyList= json["GetPhonesNotificationBodyList"] == null ? null : List<GetPhonesNotificationBodyList>.from(json["GetPhonesNotificationBodyList"].map((x) => GetPhonesNotificationBodyList.fromJson(x))); getPhonesNotificationBodyList =
json["GetPhonesNotificationBodyList"] == null ? null : List<GetPhonesNotificationBodyList>.from(json["GetPhonesNotificationBodyList"].map((x) => GetPhonesNotificationBodyList.fromJson(x)));
if (json['GetPoItemHistoryList'] != null) { if (json['GetPoItemHistoryList'] != null) {
getPoItemHistoryList = <GetPoItemHistoryList>[]; getPoItemHistoryList = <GetPoItemHistoryList>[];
json['GetPoItemHistoryList'].forEach((v) { json['GetPoItemHistoryList'].forEach((v) {
@ -812,7 +890,12 @@ class GenericResponseModel {
} }
getSubordinatesLeavesTotalVacationsList = json['GetSubordinatesLeavesTotalVacationsList']; getSubordinatesLeavesTotalVacationsList = json['GetSubordinatesLeavesTotalVacationsList'];
getSummaryOfPaymentList = json['GetSummaryOfPaymentList']; if (json['GetSummaryOfPaymentList'] != null) {
getSummaryOfPaymentList = <GetSummaryOfPaymentList>[];
json['GetSummaryOfPaymentList'].forEach((v) {
getSummaryOfPaymentList!.add(new GetSummaryOfPaymentList.fromJson(v));
});
}
getSwipesList = json['GetSwipesList']; getSwipesList = json['GetSwipesList'];
getTermColsStructureList = json['GetTermColsStructureList']; getTermColsStructureList = json['GetTermColsStructureList'];
getTermDffStructureList = json['GetTermDffStructureList']; getTermDffStructureList = json['GetTermDffStructureList'];
@ -824,6 +907,77 @@ class GenericResponseModel {
getTimeCardSummaryList!.add(new GetTimeCardSummaryList.fromJson(v)); getTimeCardSummaryList!.add(new GetTimeCardSummaryList.fromJson(v));
}); });
} }
if (json['Mohemm_ITG_TicketsByEmployeeList'] != null) {
getTicketsByEmployeeList = <GetTicketsByEmployeeList>[];
json['Mohemm_ITG_TicketsByEmployeeList'].forEach((v) {
getTicketsByEmployeeList!.add(new GetTicketsByEmployeeList.fromJson(v));
});
}
if (json['Mohemm_ITG_TicketDetailsList'] != null) {
getTicketDetailsByEmployee = <GetTicketDetailsByEmployee>[];
json['Mohemm_ITG_TicketDetailsList'].forEach((v) {
getTicketDetailsByEmployee!.add(new GetTicketDetailsByEmployee.fromJson(v));
});
}
if (json['Mohemm_ITG_TicketTransactionsList'] != null) {
getTicketTransactions = <GetTicketTransactions>[];
json['Mohemm_ITG_TicketTransactionsList'].forEach((v) {
getTicketTransactions!.add(new GetTicketTransactions.fromJson(v));
});
}
if (json['Mohemm_Itg_TicketTypesList'] != null) {
getTicketTypes = <GetTicketTypes>[];
json['Mohemm_Itg_TicketTypesList'].forEach((v) {
getTicketTypes!.add(new GetTicketTypes.fromJson(v));
});
}
if (json['Mohemm_Itg_ProjectsList'] != null) {
getMowadhafhiProjects = <GetMowadhafhiProjects>[];
json['Mohemm_Itg_ProjectsList'].forEach((v) {
getMowadhafhiProjects!.add(new GetMowadhafhiProjects.fromJson(v));
});
}
if (json['Mohemm_ITG_ProjectDepartmentsList'] != null) {
getProjectDepartments = <GetProjectDepartments>[];
json['Mohemm_ITG_ProjectDepartmentsList'].forEach((v) {
getProjectDepartments!.add(new GetProjectDepartments.fromJson(v));
});
}
if (json['Mohemm_ITG_DepartmentSectionsList'] != null) {
getDepartmentSections = <GetDepartmentSections>[];
json['Mohemm_ITG_DepartmentSectionsList'].forEach((v) {
getDepartmentSections!.add(new GetDepartmentSections.fromJson(v));
});
}
if (json['Mohemm_ITG_SectionTopicsList'] != null) {
getSectionTopics = <GetSectionTopics>[];
json['Mohemm_ITG_SectionTopicsList'].forEach((v) {
getSectionTopics!.add(new GetSectionTopics.fromJson(v));
});
}
if (json['GetPendingReqFunctionsList'] != null) {
getPendingTransactionsFunctions = <GetPendingTransactionsFunctions>[];
json['GetPendingReqFunctionsList'].forEach((v) {
getPendingTransactionsFunctions!.add(new GetPendingTransactionsFunctions.fromJson(v));
});
}
if (json['GetPendingReqDetailsList'] != null) {
getPendingTransactionsDetails = <GetPendingTransactionsDetails>[];
json['GetPendingReqDetailsList'].forEach((v) {
getPendingTransactionsDetails!.add(new GetPendingTransactionsDetails.fromJson(v));
});
}
getUserItemTypesList = json['GetUserItemTypesList']; getUserItemTypesList = json['GetUserItemTypesList'];
getVacationRulesList = json['GetVacationRulesList']; getVacationRulesList = json['GetVacationRulesList'];
getVaccinationOnHandList = json['GetVaccinationOnHandList']; getVaccinationOnHandList = json['GetVaccinationOnHandList'];
@ -946,7 +1100,8 @@ class GenericResponseModel {
startBasicDetApprProcessList = json['StartBasicDetApprProcessList']; startBasicDetApprProcessList = json['StartBasicDetApprProcessList'];
startCeiApprovalProcess = json['StartCeiApprovalProcess']; startCeiApprovalProcess = json['StartCeiApprovalProcess'];
startContactApprovalProcessList = json['StartContactApprovalProcessList']; startContactApprovalProcessList = json['StartContactApprovalProcessList'];
startEitApprovalProcess = json['StartEitApprovalProcess'];
startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null;
startHrApprovalProcessList = json['StartHrApprovalProcessList']; startHrApprovalProcessList = json['StartHrApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList']; startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'];
startSitApprovalProcess = json['StartSitApprovalProcess']; startSitApprovalProcess = json['StartSitApprovalProcess'];
@ -956,7 +1111,8 @@ class GenericResponseModel {
submitCEITransactionList = json['SubmitCEITransactionList']; submitCEITransactionList = json['SubmitCEITransactionList'];
submitCcpTransactionList = json['SubmitCcpTransactionList']; submitCcpTransactionList = json['SubmitCcpTransactionList'];
submitContactTransactionList = json['SubmitContactTransactionList']; submitContactTransactionList = json['SubmitContactTransactionList'];
submitEITTransactionList = json['SubmitEITTransactionList']; submitEITTransactionList = json['SubmitEITTransactionList'] != null ? new SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null;
submitHrTransactionList = json['SubmitHrTransactionList']; submitHrTransactionList = json['SubmitHrTransactionList'];
submitPhonesTransactionList = json['SubmitPhonesTransactionList']; submitPhonesTransactionList = json['SubmitPhonesTransactionList'];
submitSITTransactionList = json['SubmitSITTransactionList']; submitSITTransactionList = json['SubmitSITTransactionList'];
@ -982,7 +1138,9 @@ class GenericResponseModel {
vHRGetProjectByCodeList = json['VHR_GetProjectByCodeList']; vHRGetProjectByCodeList = json['VHR_GetProjectByCodeList'];
vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid']; vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid'];
validateAbsenceTransactionList = json['ValidateAbsenceTransactionList']; validateAbsenceTransactionList = json['ValidateAbsenceTransactionList'];
validateEITTransactionList = json['ValidateEITTransactionList'];
validateEITTransactionList = json['ValidateEITTransactionList'] != null ? new ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null;
validatePhonesTransactionList = json['ValidatePhonesTransactionList']; validatePhonesTransactionList = json['ValidatePhonesTransactionList'];
vrItemTypesList = json['VrItemTypesList']; vrItemTypesList = json['VrItemTypesList'];
wFLookUpList = json['WFLookUpList']; wFLookUpList = json['WFLookUpList'];
@ -1023,8 +1181,14 @@ class GenericResponseModel {
data['SuccessMsg'] = this.successMsg; data['SuccessMsg'] = this.successMsg;
data['SuccessMsgN'] = this.successMsgN; data['SuccessMsgN'] = this.successMsgN;
data['VidaUpdatedResponse'] = this.vidaUpdatedResponse; data['VidaUpdatedResponse'] = this.vidaUpdatedResponse;
data['AddAttSuccessList'] = this.addAttSuccessList;
data['AddAttachment_List'] = this.addAttachmentList; if (this.addAttSuccessList != null) {
data['AddAttSuccessList'] = this.addAttSuccessList!.map((v) => v.toJson()).toList();
}
if (this.addAttachmentList != null) {
data['AddAttachment_List'] = this.addAttachmentList!.toJson();
}
data['BC_Domain'] = this.bCDomain; data['BC_Domain'] = this.bCDomain;
data['BC_Logo'] = this.bCLogo; data['BC_Logo'] = this.bCLogo;
if (this.basicMemberInformation != null) { if (this.basicMemberInformation != null) {
@ -1063,7 +1227,10 @@ class GenericResponseModel {
data['GetAddressDffStructureList'] = this.getAddressDffStructureList; data['GetAddressDffStructureList'] = this.getAddressDffStructureList;
data['GetAddressNotificationBodyList'] = this.getAddressNotificationBodyList; data['GetAddressNotificationBodyList'] = this.getAddressNotificationBodyList;
data['GetApprovesList'] = this.getApprovesList;
if (this.getApprovesList != null) {
data['GetApprovesList'] = this.getApprovesList!.map((v) => v.toJson()).toList();
}
if (this.getAttachementList != null) { if (this.getAttachementList != null) {
data['GetAttachementList'] = this.getAttachementList!.map((v) => v.toJson()).toList(); data['GetAttachementList'] = this.getAttachementList!.map((v) => v.toJson()).toList();
@ -1093,8 +1260,13 @@ class GenericResponseModel {
if (this.getDayHoursTypeDetailsList != null) { if (this.getDayHoursTypeDetailsList != null) {
data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList!.map((v) => v.toJson()).toList(); data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList!.map((v) => v.toJson()).toList();
} }
data['GetDeductionsList'] = this.getDeductionsList;
data['GetDefaultValueList'] = this.getDefaultValueList; if (this.getDeductionsList != null) {
data['GetDeductionsList'] = this.getDeductionsList!.map((v) => v.toJson()).toList();
}
if (this.getDefaultValueList != null) {
data['GetDefaultValueList'] = this.getDefaultValueList!.toJson();
}
data['GetEITCollectionNotificationBodyList'] = this.getEITCollectionNotificationBodyList; data['GetEITCollectionNotificationBodyList'] = this.getEITCollectionNotificationBodyList;
if (this.getEITDFFStructureList != null) { if (this.getEITDFFStructureList != null) {
data['GetEITDFFStructureList'] = this.getEITDFFStructureList!.map((v) => v.toJson()).toList(); data['GetEITDFFStructureList'] = this.getEITDFFStructureList!.map((v) => v.toJson()).toList();
@ -1102,7 +1274,10 @@ class GenericResponseModel {
if (this.getEITTransactionList != null) { if (this.getEITTransactionList != null) {
data['GetEITTransactionList'] = this.getEITTransactionList!.map((v) => v.toJson()).toList(); data['GetEITTransactionList'] = this.getEITTransactionList!.map((v) => v.toJson()).toList();
} }
data['GetEarningsList'] = this.getEarningsList;
if (this.getEarningsList != null) {
data['GetEarningsList'] = this.getEarningsList!.map((v) => v.toJson()).toList();
}
if (this.getEmployeeAddressList != null) { if (this.getEmployeeAddressList != null) {
data['GetEmployeeAddressList'] = this.getEmployeeAddressList!.map((v) => v.toJson()).toList(); data['GetEmployeeAddressList'] = this.getEmployeeAddressList!.map((v) => v.toJson()).toList();
} }
@ -1147,10 +1322,14 @@ class GenericResponseModel {
data['GetOpenNotificationsNumList'] = this.getOpenNotificationsNumList; data['GetOpenNotificationsNumList'] = this.getOpenNotificationsNumList;
data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList; data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList;
data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList; data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList;
data['GetPaymentInformationList'] = this.getPaymentInformationList; if (this.getPaymentInformationList != null) {
data['GetPayslipList'] = this.getPayslipList; data['GetPaymentInformationList'] = this.getPaymentInformationList!.map((v) => v.toJson()).toList();
data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList; }
data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList; if (this.getPayslipList != null) {
data['GetPayslipList'] = this.getPayslipList!.map((v) => v.toJson()).toList();
}
// data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList;
// data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList;
data['GetPerformanceAppraisalList'] = this.getPerformanceAppraisalList; data['GetPerformanceAppraisalList'] = this.getPerformanceAppraisalList;
data['GetPhonesNotificationBodyList'] = this.getPhonesNotificationBodyList; data['GetPhonesNotificationBodyList'] = this.getPhonesNotificationBodyList;
if (this.getPoItemHistoryList != null) { if (this.getPoItemHistoryList != null) {
@ -1191,7 +1370,9 @@ class GenericResponseModel {
} }
data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList; data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList;
data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList; if (this.getSummaryOfPaymentList != null) {
data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList();
}
data['GetSwipesList'] = this.getSwipesList; data['GetSwipesList'] = this.getSwipesList;
data['GetTermColsStructureList'] = this.getTermColsStructureList; data['GetTermColsStructureList'] = this.getTermColsStructureList;
data['GetTermDffStructureList'] = this.getTermDffStructureList; data['GetTermDffStructureList'] = this.getTermDffStructureList;
@ -1297,7 +1478,10 @@ class GenericResponseModel {
data['StartBasicDetApprProcessList'] = this.startBasicDetApprProcessList; data['StartBasicDetApprProcessList'] = this.startBasicDetApprProcessList;
data['StartCeiApprovalProcess'] = this.startCeiApprovalProcess; data['StartCeiApprovalProcess'] = this.startCeiApprovalProcess;
data['StartContactApprovalProcessList'] = this.startContactApprovalProcessList; data['StartContactApprovalProcessList'] = this.startContactApprovalProcessList;
data['StartEitApprovalProcess'] = this.startEitApprovalProcess;
if (this.startEitApprovalProcess != null) {
data['StartEitApprovalProcess'] = this.startEitApprovalProcess!.toJson();
}
data['StartHrApprovalProcessList'] = this.startHrApprovalProcessList; data['StartHrApprovalProcessList'] = this.startHrApprovalProcessList;
data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList; data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList;
data['StartSitApprovalProcess'] = this.startSitApprovalProcess; data['StartSitApprovalProcess'] = this.startSitApprovalProcess;
@ -1307,7 +1491,11 @@ class GenericResponseModel {
data['SubmitCEITransactionList'] = this.submitCEITransactionList; data['SubmitCEITransactionList'] = this.submitCEITransactionList;
data['SubmitCcpTransactionList'] = this.submitCcpTransactionList; data['SubmitCcpTransactionList'] = this.submitCcpTransactionList;
data['SubmitContactTransactionList'] = this.submitContactTransactionList; data['SubmitContactTransactionList'] = this.submitContactTransactionList;
data['SubmitEITTransactionList'] = this.submitEITTransactionList;
if (this.submitEITTransactionList != null) {
data['SubmitEITTransactionList'] = this.submitEITTransactionList!.toJson();
}
data['SubmitHrTransactionList'] = this.submitHrTransactionList; data['SubmitHrTransactionList'] = this.submitHrTransactionList;
data['SubmitPhonesTransactionList'] = this.submitPhonesTransactionList; data['SubmitPhonesTransactionList'] = this.submitPhonesTransactionList;
data['SubmitSITTransactionList'] = this.submitSITTransactionList; data['SubmitSITTransactionList'] = this.submitSITTransactionList;
@ -1331,7 +1519,11 @@ class GenericResponseModel {
data['VHR_GetProjectByCodeList'] = this.vHRGetProjectByCodeList; data['VHR_GetProjectByCodeList'] = this.vHRGetProjectByCodeList;
data['VHR_IsVerificationCodeValid'] = this.vHRIsVerificationCodeValid; data['VHR_IsVerificationCodeValid'] = this.vHRIsVerificationCodeValid;
data['ValidateAbsenceTransactionList'] = this.validateAbsenceTransactionList; data['ValidateAbsenceTransactionList'] = this.validateAbsenceTransactionList;
data['ValidateEITTransactionList'] = this.validateEITTransactionList;
if (this.validateEITTransactionList != null) {
data['ValidateEITTransactionList'] = this.validateEITTransactionList!.toJson();
}
data['ValidatePhonesTransactionList'] = this.validatePhonesTransactionList; data['ValidatePhonesTransactionList'] = this.validatePhonesTransactionList;
data['VrItemTypesList'] = this.vrItemTypesList; data['VrItemTypesList'] = this.vrItemTypesList;
data['WFLookUpList'] = this.wFLookUpList; data['WFLookUpList'] = this.wFLookUpList;

@ -1,4 +1,3 @@
class GetAbsenceCollectionNotificationBodyList { class GetAbsenceCollectionNotificationBodyList {
List<CollectionNotificationAbsence>? collectionNotification; List<CollectionNotificationAbsence>? collectionNotification;
@ -16,8 +15,7 @@ class GetAbsenceCollectionNotificationBodyList {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.collectionNotification != null) { if (this.collectionNotification != null) {
data['Collection_Notification'] = data['Collection_Notification'] = this.collectionNotification!.map((v) => v.toJson()).toList();
this.collectionNotification!.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -42,20 +40,20 @@ class CollectionNotificationAbsence {
CollectionNotificationAbsence( CollectionNotificationAbsence(
{this.aCTION, {this.aCTION,
this.aPPLICATIONCOLUMNNAME, this.aPPLICATIONCOLUMNNAME,
this.dATATYPE, this.dATATYPE,
this.dATEVALUE, this.dATEVALUE,
this.dESCFLEXCONTEXTCODE, this.dESCFLEXCONTEXTCODE,
this.dESCFLEXNAME, this.dESCFLEXNAME,
this.dISPLAYFLAG, this.dISPLAYFLAG,
this.nUMBERVALUE, this.nUMBERVALUE,
this.pREVSEGMENTVALUEDSP, this.pREVSEGMENTVALUEDSP,
this.sEGMENTNAME, this.sEGMENTNAME,
this.sEGMENTPROMPT, this.sEGMENTPROMPT,
this.sEGMENTSEQNUM, this.sEGMENTSEQNUM,
this.sEGMENTVALUEDSP, this.sEGMENTVALUEDSP,
this.tRANSACTIONNUMBER, this.tRANSACTIONNUMBER,
this.vARCHAR2VALUE}); this.vARCHAR2VALUE});
CollectionNotificationAbsence.fromJson(Map<String, dynamic> json) { CollectionNotificationAbsence.fromJson(Map<String, dynamic> json) {
aCTION = json['ACTION']; aCTION = json['ACTION'];
@ -94,4 +92,4 @@ class CollectionNotificationAbsence {
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE; data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data; return data;
} }
} }

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -0,0 +1,60 @@
class GetApprovesList {
String? aPPROVALSTATUS;
String? aPPROVER;
String? aPPROVERCATEGORY;
int? aPPROVERORDERNUMBER;
String? aPPROVERTYPE;
String? eMPLOYEEIMAGE;
int? fROMROWNUM;
int? lINENO;
int? nOOFROWS;
String? pOSITIONTITLE;
int? rOWNUM;
int? tOROWNUM;
GetApprovesList(
{this.aPPROVALSTATUS,
this.aPPROVER,
this.aPPROVERCATEGORY,
this.aPPROVERORDERNUMBER,
this.aPPROVERTYPE,
this.eMPLOYEEIMAGE,
this.fROMROWNUM,
this.lINENO,
this.nOOFROWS,
this.pOSITIONTITLE,
this.rOWNUM,
this.tOROWNUM});
GetApprovesList.fromJson(Map<String, dynamic> json) {
aPPROVALSTATUS = json['APPROVAL_STATUS'];
aPPROVER = json['APPROVER'];
aPPROVERCATEGORY = json['APPROVER_CATEGORY'];
aPPROVERORDERNUMBER = json['APPROVER_ORDER_NUMBER'];
aPPROVERTYPE = json['APPROVER_TYPE'];
eMPLOYEEIMAGE = json['EMPLOYEE_IMAGE'];
fROMROWNUM = json['FROM_ROW_NUM'];
lINENO = json['LINE_NO'];
nOOFROWS = json['NO_OF_ROWS'];
pOSITIONTITLE = json['POSITION_TITLE'];
rOWNUM = json['ROW_NUM'];
tOROWNUM = json['TO_ROW_NUM'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['APPROVAL_STATUS'] = this.aPPROVALSTATUS;
data['APPROVER'] = this.aPPROVER;
data['APPROVER_CATEGORY'] = this.aPPROVERCATEGORY;
data['APPROVER_ORDER_NUMBER'] = this.aPPROVERORDERNUMBER;
data['APPROVER_TYPE'] = this.aPPROVERTYPE;
data['EMPLOYEE_IMAGE'] = this.eMPLOYEEIMAGE;
data['FROM_ROW_NUM'] = this.fROMROWNUM;
data['LINE_NO'] = this.lINENO;
data['NO_OF_ROWS'] = this.nOOFROWS;
data['POSITION_TITLE'] = this.pOSITIONTITLE;
data['ROW_NUM'] = this.rOWNUM;
data['TO_ROW_NUM'] = this.tOROWNUM;
return data;
}
}

@ -1,14 +1,14 @@
class GetDayHoursTypeDetailsList { class GetDayHoursTypeDetailsList {
Null? aBSENCEATTENDANCEID; dynamic? aBSENCEATTENDANCEID;
Null? aBSENCEATTENDANCETYPEID; dynamic? aBSENCEATTENDANCETYPEID;
String? aBSENTFLAG; String? aBSENTFLAG;
String? aCTUALHRS; String? aCTUALHRS;
String? aNALAYZEDFLAG; String? aNALAYZEDFLAG;
String? aPPROVEDTIMEBACKHRS; String? aPPROVEDTIMEBACKHRS;
String? aPPRTIMEBACKFLAG; String? aPPRTIMEBACKFLAG;
int? aSSIGNMENTID; dynamic? aSSIGNMENTID;
String? aTTENDEDFLAG; String? aTTENDEDFLAG;
Null? cALENDARENTRYID; dynamic? cALENDARENTRYID;
String? cOMPOFFFLAG; String? cOMPOFFFLAG;
String? cOMPOFFHRS; String? cOMPOFFHRS;
String? cOMPOFFHHRS; String? cOMPOFFHHRS;
@ -19,18 +19,18 @@ class GetDayHoursTypeDetailsList {
String? eARLYOUTHRS; String? eARLYOUTHRS;
String? eXCESSFLAG; String? eXCESSFLAG;
String? eXCESSHRS; String? eXCESSHRS;
int? fROMROWNUM; dynamic? fROMROWNUM;
String? lATEINFLAG; String? lATEINFLAG;
String? lATEINHRS; String? lATEINHRS;
String? mISSINGSWIPEFLAG; String? mISSINGSWIPEFLAG;
String? nONSCHEDULEDFLAG; String? nONSCHEDULEDFLAG;
Null? nOOFROWS; dynamic? nOOFROWS;
String? oNCALLHRS; String? oNCALLHRS;
Null? pERSONEXTRAINFOID; dynamic? pERSONEXTRAINFOID;
String? pLANNEDOTHRS; String? pLANNEDOTHRS;
String? pLANNEDOTHRSFLAG; String? pLANNEDOTHRSFLAG;
String? rEMARKS; String? rEMARKS;
int? rOWNUM; dynamic? rOWNUM;
int? rTPID; int? rTPID;
String? sCHEDULEDHRS; String? sCHEDULEDHRS;
String? sCHEDULEDONCALLHRS; String? sCHEDULEDONCALLHRS;
@ -40,7 +40,7 @@ class GetDayHoursTypeDetailsList {
String? sHORTAGEHRS; String? sHORTAGEHRS;
String? tIMEBACKFLAG; String? tIMEBACKFLAG;
String? tIMEBACKHRS; String? tIMEBACKHRS;
int? tOROWNUM; dynamic? tOROWNUM;
GetDayHoursTypeDetailsList( GetDayHoursTypeDetailsList(
{this.aBSENCEATTENDANCEID, {this.aBSENCEATTENDANCEID,

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

@ -83,8 +83,6 @@ class GetEITDFFStructureList {
this.fieldAnswer}); this.fieldAnswer});
GetEITDFFStructureList.fromJson(Map<String, dynamic> json) { GetEITDFFStructureList.fromJson(Map<String, dynamic> json) {
print("----------------==============================");
print("----------------:$json");
aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG'];
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
cHILDSEGMENTSDV = json['CHILD_SEGMENTS_DV']; cHILDSEGMENTSDV = json['CHILD_SEGMENTS_DV'];
@ -207,6 +205,8 @@ class GetEITDFFStructureList {
data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP; data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP;
return data; return data;
} }
bool get isDefaultTypeIsCDPS => (dEFAULTTYPE == "C" || dEFAULTTYPE == "D" || dEFAULTTYPE == "P" || dEFAULTTYPE == "S");
} }
class ESERVICESDV { class ESERVICESDV {

@ -2,39 +2,39 @@
class GetTimeCardSummaryList { class GetTimeCardSummaryList {
int? aBSENTDAYS; int? aBSENTDAYS;
int? aCTUALHRS; dynamic? aCTUALHRS;
int? aPPROVEDTIMEBACKHRS; dynamic? aPPROVEDTIMEBACKHRS;
int? aSSIGNMENTID; int? aSSIGNMENTID;
int? aTTENDEDDAYS; int? aTTENDEDDAYS;
int? bUSINESSTRIP; int? bUSINESSTRIP;
int? cOMPOFFHHRS; dynamic? cOMPOFFHHRS;
int? cOMPOFFNHRS; dynamic? cOMPOFFNHRS;
int? cOMPOFFWHRS; dynamic? cOMPOFFWHRS;
int? dESIREDSCHEDULEDHRS; dynamic? dESIREDSCHEDULEDHRS;
int? eARLYOUTHRS; dynamic? eARLYOUTHRS;
int? eXCESSHRS; dynamic? eXCESSHRS;
int? hALFDAYLEAVE; int? hALFDAYLEAVE;
int? lATEINHRS; dynamic? lATEINHRS;
int? lEAVESHOLIDAYSHRS; dynamic? lEAVESHOLIDAYSHRS;
int? nONSCHEDULEDAYS; dynamic? nONSCHEDULEDAYS;
int? nOTANALYZEDDAYS; dynamic? nOTANALYZEDDAYS;
int? oFFDAYS; int? oFFDAYS;
int? oNCALLHRS; dynamic? oNCALLHRS;
int? pAIDLEAVE; dynamic? pAIDLEAVE;
int? pERIODDAYS; int? pERIODDAYS;
int? pLANNEDOTHRS; dynamic? pLANNEDOTHRS;
int? pUBLICHOLIDAY; int? pUBLICHOLIDAY;
int? sCHEDULEDHRS; dynamic? sCHEDULEDHRS;
int? sCHEDULEDONCALLHRS; dynamic? sCHEDULEDONCALLHRS;
int? sCHEDULEDPLANNEDOTHRS; dynamic? sCHEDULEDPLANNEDOTHRS;
int? sCHEDULEDAYS; int? sCHEDULEDAYS;
int? sHORTAGEHRS; dynamic? sHORTAGEHRS;
int? sHORTAGESCHEDULEHRS; dynamic? sHORTAGESCHEDULEHRS;
int? sICKLEAVE; int? sICKLEAVE;
int? tIMEBACKHRS; dynamic? tIMEBACKHRS;
double? tIMEBACKBALANCE; dynamic? tIMEBACKBALANCE;
int? uNAUTHORIZEDLEAVE; int? uNAUTHORIZEDLEAVE;
int? uNCOVERDSHORTAGEHRS; dynamic? uNCOVERDSHORTAGEHRS;
int? uNPAIDLEAVE; int? uNPAIDLEAVE;
GetTimeCardSummaryList( GetTimeCardSummaryList(

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> json) {
aCCOUNTNUMBER = json['ACCOUNT_NUMBER'];
aMOUNT = json['AMOUNT'];
bANKNAME = json['BANK_NAME'];
bRANCHNAME = json['BRANCH_NAME'];
pAYMENTMETHODNAME = json['PAYMENT_METHOD_NAME'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -0,0 +1,44 @@
class GetDepartmentSections {
int? departmentId;
String? departmentName;
int? departmentSectionId;
String? projectCode;
int? projectId;
String? projectName;
int? sectionId;
String? sectionName;
GetDepartmentSections(
{this.departmentId,
this.departmentName,
this.departmentSectionId,
this.projectCode,
this.projectId,
this.projectName,
this.sectionId,
this.sectionName});
GetDepartmentSections.fromJson(Map<String, dynamic> json) {
departmentId = json['departmentId'];
departmentName = json['departmentName'];
departmentSectionId = json['departmentSectionId'];
projectCode = json['projectCode'];
projectId = json['projectId'];
projectName = json['projectName'];
sectionId = json['sectionId'];
sectionName = json['sectionName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['departmentId'] = this.departmentId;
data['departmentName'] = this.departmentName;
data['departmentSectionId'] = this.departmentSectionId;
data['projectCode'] = this.projectCode;
data['projectId'] = this.projectId;
data['projectName'] = this.projectName;
data['sectionId'] = this.sectionId;
data['sectionName'] = this.sectionName;
return data;
}
}

@ -0,0 +1,32 @@
class GetProjectDepartments {
int? departmentId;
String? departmentName;
String? projectCode;
int? projectDepartmentId;
String? projectName;
GetProjectDepartments(
{this.departmentId,
this.departmentName,
this.projectCode,
this.projectDepartmentId,
this.projectName});
GetProjectDepartments.fromJson(Map<String, dynamic> json) {
departmentId = json['departmentId'];
departmentName = json['departmentName'];
projectCode = json['projectCode'];
projectDepartmentId = json['projectDepartmentId'];
projectName = json['projectName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['departmentId'] = this.departmentId;
data['departmentName'] = this.departmentName;
data['projectCode'] = this.projectCode;
data['projectDepartmentId'] = this.projectDepartmentId;
data['projectName'] = this.projectName;
return data;
}
}

@ -0,0 +1,18 @@
class GetMowadhafhiProjects {
int? projectId;
String? projectName;
GetMowadhafhiProjects({this.projectId, this.projectName});
GetMowadhafhiProjects.fromJson(Map<String, dynamic> json) {
projectId = json['projectId'];
projectName = json['projectName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['projectId'] = this.projectId;
data['projectName'] = this.projectName;
return data;
}
}

@ -0,0 +1,60 @@
class GetSectionTopics {
int? departmentId;
String? departmentName;
String? projectCode;
int? projectDepartmentId;
int? projectId;
String? projectName;
int? sectionId;
String? sectionName;
int? sectionTopicId;
int? tatInHours;
int? topicId;
String? topicName;
GetSectionTopics(
{this.departmentId,
this.departmentName,
this.projectCode,
this.projectDepartmentId,
this.projectId,
this.projectName,
this.sectionId,
this.sectionName,
this.sectionTopicId,
this.tatInHours,
this.topicId,
this.topicName});
GetSectionTopics.fromJson(Map<String, dynamic> json) {
departmentId = json['departmentId'];
departmentName = json['departmentName'];
projectCode = json['projectCode'];
projectDepartmentId = json['projectDepartmentId'];
projectId = json['projectId'];
projectName = json['projectName'];
sectionId = json['sectionId'];
sectionName = json['sectionName'];
sectionTopicId = json['sectionTopicId'];
tatInHours = json['tatInHours'];
topicId = json['topicId'];
topicName = json['topicName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['departmentId'] = this.departmentId;
data['departmentName'] = this.departmentName;
data['projectCode'] = this.projectCode;
data['projectDepartmentId'] = this.projectDepartmentId;
data['projectId'] = this.projectId;
data['projectName'] = this.projectName;
data['sectionId'] = this.sectionId;
data['sectionName'] = this.sectionName;
data['sectionTopicId'] = this.sectionTopicId;
data['tatInHours'] = this.tatInHours;
data['topicId'] = this.topicId;
data['topicName'] = this.topicName;
return data;
}
}

@ -0,0 +1,80 @@
class GetTicketDetailsByEmployee {
String? closedBy;
String? created;
int? departmentId;
String? departmentName;
String? description;
String? positionTitle;
int? projectId;
String? projectName;
int? sectionId;
String? sectionName;
String? ticketId;
String? ticketReferenceNo;
String? ticketStatusInternalName;
String? ticketStatusName;
int? ticketTypeId;
int? topicId;
String? topicName;
GetTicketDetailsByEmployee(
{this.closedBy,
this.created,
this.departmentId,
this.departmentName,
this.description,
this.positionTitle,
this.projectId,
this.projectName,
this.sectionId,
this.sectionName,
this.ticketId,
this.ticketReferenceNo,
this.ticketStatusInternalName,
this.ticketStatusName,
this.ticketTypeId,
this.topicId,
this.topicName});
GetTicketDetailsByEmployee.fromJson(Map<String, dynamic> json) {
closedBy = json['closedBy'];
created = json['created'];
departmentId = json['departmentId'];
departmentName = json['departmentName'];
description = json['description'];
positionTitle = json['positionTitle'];
projectId = json['projectId'];
projectName = json['projectName'];
sectionId = json['sectionId'];
sectionName = json['sectionName'];
ticketId = json['ticketId'];
ticketReferenceNo = json['ticketReferenceNo'];
ticketStatusInternalName = json['ticketStatusInternalName'];
ticketStatusName = json['ticketStatusName'];
ticketTypeId = json['ticketTypeId'];
topicId = json['topicId'];
topicName = json['topicName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['closedBy'] = this.closedBy;
data['created'] = this.created;
data['departmentId'] = this.departmentId;
data['departmentName'] = this.departmentName;
data['description'] = this.description;
data['positionTitle'] = this.positionTitle;
data['projectId'] = this.projectId;
data['projectName'] = this.projectName;
data['sectionId'] = this.sectionId;
data['sectionName'] = this.sectionName;
data['ticketId'] = this.ticketId;
data['ticketReferenceNo'] = this.ticketReferenceNo;
data['ticketStatusInternalName'] = this.ticketStatusInternalName;
data['ticketStatusName'] = this.ticketStatusName;
data['ticketTypeId'] = this.ticketTypeId;
data['topicId'] = this.topicId;
data['topicName'] = this.topicName;
return data;
}
}

@ -0,0 +1,40 @@
class GetTicketTransactions {
String? actionBy;
String? actionDate;
String? comments;
String? statusDisplayText;
String? statusName;
String? ticketId;
int? ticketTransactionId;
GetTicketTransactions(
{this.actionBy,
this.actionDate,
this.comments,
this.statusDisplayText,
this.statusName,
this.ticketId,
this.ticketTransactionId});
GetTicketTransactions.fromJson(Map<String, dynamic> json) {
actionBy = json['actionBy'];
actionDate = json['actionDate'];
comments = json['comments'];
statusDisplayText = json['statusDisplayText'];
statusName = json['statusName'];
ticketId = json['ticketId'];
ticketTransactionId = json['ticketTransactionId'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['actionBy'] = this.actionBy;
data['actionDate'] = this.actionDate;
data['comments'] = this.comments;
data['statusDisplayText'] = this.statusDisplayText;
data['statusName'] = this.statusName;
data['ticketId'] = this.ticketId;
data['ticketTransactionId'] = this.ticketTransactionId;
return data;
}
}

@ -0,0 +1,21 @@
class GetTicketTypes {
String? ticketIdPrefix;
int? ticketTypeId;
String? typeName;
GetTicketTypes({this.ticketIdPrefix, this.ticketTypeId, this.typeName});
GetTicketTypes.fromJson(Map<String, dynamic> json) {
ticketIdPrefix = json['ticketIdPrefix'];
ticketTypeId = json['ticketTypeId'];
typeName = json['typeName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ticketIdPrefix'] = this.ticketIdPrefix;
data['ticketTypeId'] = this.ticketTypeId;
data['typeName'] = this.typeName;
return data;
}
}

@ -0,0 +1,184 @@
class GetTicketsByEmployeeList {
dynamic agentRating;
dynamic assignedSpecialist;
String? assignedSpecialistName;
String? assignedToSpecialistAt;
int? channelId;
String? channelName;
String? closedBy;
String? closedDate;
String? created;
int? departmentId;
String? departmentName;
String? description;
String? employeeEmail;
String? employeeName;
int? employeeNumber;
String? firstName;
dynamic isActive;
bool? isClosedDirectly;
dynamic isEscalated;
bool? isExceedTAT;
String? lastName;
String? mobileNumber;
dynamic pageNo;
dynamic pageSize;
String? positionTitle;
int? projectId;
String? projectManager;
String? projectName;
String? providedSolution;
int? sectionId;
String? sectionName;
dynamic serviceRating;
String? specialistDeadline;
String? ticketId;
String? ticketReferenceNo;
int? ticketStatusId;
String? ticketStatusInternalName;
String? ticketStatusName;
int? ticketTypeId;
String? ticketTypeName;
int? topicId;
String? topicName;
int? totalItemsCount;
GetTicketsByEmployeeList(
{this.agentRating,
this.assignedSpecialist,
this.assignedSpecialistName,
this.assignedToSpecialistAt,
this.channelId,
this.channelName,
this.closedBy,
this.closedDate,
this.created,
this.departmentId,
this.departmentName,
this.description,
this.employeeEmail,
this.employeeName,
this.employeeNumber,
this.firstName,
this.isActive,
this.isClosedDirectly,
this.isEscalated,
this.isExceedTAT,
this.lastName,
this.mobileNumber,
this.pageNo,
this.pageSize,
this.positionTitle,
this.projectId,
this.projectManager,
this.projectName,
this.providedSolution,
this.sectionId,
this.sectionName,
this.serviceRating,
this.specialistDeadline,
this.ticketId,
this.ticketReferenceNo,
this.ticketStatusId,
this.ticketStatusInternalName,
this.ticketStatusName,
this.ticketTypeId,
this.ticketTypeName,
this.topicId,
this.topicName,
this.totalItemsCount});
GetTicketsByEmployeeList.fromJson(Map<String, dynamic> json) {
agentRating = json['agentRating'];
assignedSpecialist = json['assignedSpecialist'];
assignedSpecialistName = json['assignedSpecialistName'];
assignedToSpecialistAt = json['assignedToSpecialistAt'];
channelId = json['channelId'];
channelName = json['channelName'];
closedBy = json['closedBy'];
closedDate = json['closedDate'];
created = json['created'];
departmentId = json['departmentId'];
departmentName = json['departmentName'];
description = json['description'];
employeeEmail = json['employeeEmail'];
employeeName = json['employeeName'];
employeeNumber = json['employeeNumber'];
firstName = json['firstName'];
isActive = json['isActive'];
isClosedDirectly = json['isClosedDirectly'];
isEscalated = json['isEscalated'];
isExceedTAT = json['isExceedTAT'];
lastName = json['lastName'];
mobileNumber = json['mobileNumber'];
pageNo = json['pageNo'];
pageSize = json['pageSize'];
positionTitle = json['positionTitle'];
projectId = json['projectId'];
projectManager = json['projectManager'];
projectName = json['projectName'];
providedSolution = json['providedSolution'];
sectionId = json['sectionId'];
sectionName = json['sectionName'];
serviceRating = json['serviceRating'];
specialistDeadline = json['specialistDeadline'];
ticketId = json['ticketId'];
ticketReferenceNo = json['ticketReferenceNo'];
ticketStatusId = json['ticketStatusId'];
ticketStatusInternalName = json['ticketStatusInternalName'];
ticketStatusName = json['ticketStatusName'];
ticketTypeId = json['ticketTypeId'];
ticketTypeName = json['ticketTypeName'];
topicId = json['topicId'];
topicName = json['topicName'];
totalItemsCount = json['totalItemsCount'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['agentRating'] = agentRating;
data['assignedSpecialist'] = assignedSpecialist;
data['assignedSpecialistName'] = assignedSpecialistName;
data['assignedToSpecialistAt'] = assignedToSpecialistAt;
data['channelId'] = channelId;
data['channelName'] = channelName;
data['closedBy'] = closedBy;
data['closedDate'] = closedDate;
data['created'] = created;
data['departmentId'] = departmentId;
data['departmentName'] = departmentName;
data['description'] = description;
data['employeeEmail'] = employeeEmail;
data['employeeName'] = employeeName;
data['employeeNumber'] = employeeNumber;
data['firstName'] = firstName;
data['isActive'] = isActive;
data['isClosedDirectly'] = isClosedDirectly;
data['isEscalated'] = isEscalated;
data['isExceedTAT'] = isExceedTAT;
data['lastName'] = lastName;
data['mobileNumber'] = mobileNumber;
data['pageNo'] = pageNo;
data['pageSize'] = pageSize;
data['positionTitle'] = positionTitle;
data['projectId'] = projectId;
data['projectManager'] = projectManager;
data['projectName'] = projectName;
data['providedSolution'] = providedSolution;
data['sectionId'] = sectionId;
data['sectionName'] = sectionName;
data['serviceRating'] = serviceRating;
data['specialistDeadline'] = specialistDeadline;
data['ticketId'] = ticketId;
data['ticketReferenceNo'] = ticketReferenceNo;
data['ticketStatusId'] = ticketStatusId;
data['ticketStatusInternalName'] = ticketStatusInternalName;
data['ticketStatusName'] = ticketStatusName;
data['ticketTypeId'] = ticketTypeId;
data['ticketTypeName'] = ticketTypeName;
data['topicId'] = topicId;
data['topicName'] = topicName;
data['totalItemsCount'] = totalItemsCount;
return data;
}
}

@ -0,0 +1,22 @@
class MowadhafhiRequestAttachment {
String? base64Data;
String? fileName;
String? contentType;
MowadhafhiRequestAttachment(
{this.base64Data, this.fileName, this.contentType});
MowadhafhiRequestAttachment.fromJson(Map<String, dynamic> json) {
base64Data = json['Base64Data'];
fileName = json['FileName'];
contentType = json['ContentType'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Base64Data'] = this.base64Data;
data['FileName'] = this.fileName;
data['ContentType'] = this.contentType;
return data;
}
}

@ -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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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;
}
}

@ -0,0 +1,22 @@
class GetPendingTransactionsFunctions {
int? fUNCTIONID;
String? fUNCTIONNAME;
String? fUNCTIONPROMPT;
GetPendingTransactionsFunctions(
{this.fUNCTIONID, this.fUNCTIONNAME, this.fUNCTIONPROMPT});
GetPendingTransactionsFunctions.fromJson(Map<String, dynamic> json) {
fUNCTIONID = json['FUNCTION_ID'];
fUNCTIONNAME = json['FUNCTION_NAME'];
fUNCTIONPROMPT = json['FUNCTION_PROMPT'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['FUNCTION_ID'] = this.fUNCTIONID;
data['FUNCTION_NAME'] = this.fUNCTIONNAME;
data['FUNCTION_PROMPT'] = this.fUNCTIONPROMPT;
return data;
}
}

@ -9,6 +9,8 @@ class PostParamsModel {
String? pEmailAddress; String? pEmailAddress;
String? pUserName; String? pUserName;
String? pSelectedEmployeeNumber; String? pSelectedEmployeeNumber;
String? pLegislationCode;
String? payrollCodeStr;
int? pSessionId; int? pSessionId;
String? userName; String? userName;
@ -25,6 +27,8 @@ class PostParamsModel {
this.pSessionId, this.pSessionId,
this.pUserName, this.pUserName,
this.pSelectedEmployeeNumber, this.pSelectedEmployeeNumber,
this.payrollCodeStr,
this.pLegislationCode,
}); });
PostParamsModel.fromJson(Map<String, dynamic> json) { PostParamsModel.fromJson(Map<String, dynamic> json) {
@ -33,6 +37,8 @@ class PostParamsModel {
languageID = json['LanguageID']; languageID = json['LanguageID'];
mobileType = json['MobileType']; mobileType = json['MobileType'];
logInTokenID = json['LogInTokenID']; logInTokenID = json['LogInTokenID'];
payrollCodeStr = json['payrollCodeStr'];
pLegislationCode = json['LegislationCodeStr'];
tokenID = json['TokenID']; tokenID = json['TokenID'];
} }
@ -43,6 +49,8 @@ class PostParamsModel {
data['LanguageID'] = this.languageID; data['LanguageID'] = this.languageID;
data['MobileType'] = this.mobileType; data['MobileType'] = this.mobileType;
data['LogInTokenID'] = this.logInTokenID; data['LogInTokenID'] = this.logInTokenID;
data['payrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['TokenID'] = this.tokenID; data['TokenID'] = this.tokenID;
return data; return data;
} }
@ -59,9 +67,10 @@ class PostParamsModel {
data['UserName'] = this.userName; data['UserName'] = this.userName;
data['P_EMAIL_ADDRESS'] = this.pEmailAddress; data['P_EMAIL_ADDRESS'] = this.pEmailAddress;
data['P_SESSION_ID'] = this.pSessionId; data['P_SESSION_ID'] = this.pSessionId;
data['payrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['P_SELECTED_EMPLOYEE_NUMBER'] = this.pSelectedEmployeeNumber; data['P_SELECTED_EMPLOYEE_NUMBER'] = this.pSelectedEmployeeNumber;
data['P_USER_NAME'] = this.pUserName; data['P_USER_NAME'] = this.pUserName;
return data; return data;
} }
@ -80,4 +89,8 @@ class PostParamsModel {
set setPUserName(String? v) => pUserName = v; set setPUserName(String? v) => pUserName = v;
set setPSelectedEmployeeNumber(String? v) => pSelectedEmployeeNumber = v; set setPSelectedEmployeeNumber(String? v) => pSelectedEmployeeNumber = v;
set setPLegislationCode(String? v) => pLegislationCode = v;
set setPayrollCodeStr(String? v) => payrollCodeStr = v;
} }

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

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

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

@ -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/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.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/models/generic_response_model.dart';
import 'package:mohem_flutter_app/widgets/Updater.dart';
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
// ignore: prefer_mixin // ignore: prefer_mixin
@ -71,7 +70,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
return ((hour * 60 * 60) + (mints * 60) + seconds); return ((hour * 60 * 60) + (mints * 60) + seconds);
} }
update(context) { void update(context) {
fetchAttendanceTracking(context); fetchAttendanceTracking(context);
// isAttendanceTrackingLoading = !isAttendanceTrackingLoading; // isAttendanceTrackingLoading = !isAttendanceTrackingLoading;
// isWorkListLoading = !isWorkListLoading; // isWorkListLoading = !isWorkListLoading;
@ -137,7 +136,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
//List Menu API's & Methods //List Menu API's & Methods
fetchListMenu() async { void fetchListMenu() async {
try { try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu(); GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu();
Map<String, String> map = {}; Map<String, String> map = {};
@ -156,7 +155,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
//Menu Entries API's & Methods //Menu Entries API's & Methods
fetchMenuEntries() async { void fetchMenuEntries() async {
try { try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries(); GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries();
getMenuEntriesList = genericResponseModel!.getMenuEntriesList; getMenuEntriesList = genericResponseModel!.getMenuEntriesList;

@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/theme/colors.dart'; import 'package:mohem_flutter_app/theme/colors.dart';
class AppTheme { class AppTheme {
static getTheme(isArabic) => ThemeData( static ThemeData getTheme(isArabic) => ThemeData(
fontFamily: isArabic ? 'Cairo' : 'Poppins', fontFamily: isArabic ? 'Cairo' : 'Poppins',
primarySwatch: Colors.red, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,

@ -1,22 +1,23 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/painting.dart'; import 'package:flutter/painting.dart';
import 'package:intl/intl.dart';
import 'package:mohem_flutter_app/api/monthlyAttendance_api_client.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/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.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/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_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_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_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_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:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:provider/provider.dart'; import 'package:month_picker_dialog/month_picker_dialog.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:pie_chart/pie_chart.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
class MonthlyAttendance extends StatefulWidget { class MonthlyAttendance extends StatefulWidget {
MonthlyAttendance({Key? key}) : super(key: key); MonthlyAttendance({Key? key}) : super(key: key);
@ -27,13 +28,15 @@ class MonthlyAttendance extends StatefulWidget {
} }
} }
// todo '@fatima' use extension methods for widgets
class _MonthlyAttendanceState extends State<MonthlyAttendance> { class _MonthlyAttendanceState extends State<MonthlyAttendance> {
bool isPresent = true; bool isPresent = false;
bool isAbsent = true; bool isAbsent = false;
bool isMissingDays = true; bool isMissing = false;
bool isOffDays = true; bool isOff = false;
DateTime date = DateTime.now(); DateTime date = DateTime.now();
late var formattedDate; late DateTime formattedDate;
var currentMonth = DateTime.now().month; var currentMonth = DateTime.now().month;
String searchMonth = getMonth(DateTime.now().month); String searchMonth = getMonth(DateTime.now().month);
int searchYear = DateTime.now().year; int searchYear = DateTime.now().year;
@ -41,84 +44,41 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
List<GetDayHoursTypeDetailsList> getDayHoursTypeDetailsList = []; List<GetDayHoursTypeDetailsList> getDayHoursTypeDetailsList = [];
GetTimeCardSummaryList? getTimeCardSummaryList; GetTimeCardSummaryList? getTimeCardSummaryList;
// GetDayHoursTypeDetailsList? getDayHoursTypeDetailsList;
GetScheduleShiftsDetailsList? getScheduleShiftsDetailsList; GetScheduleShiftsDetailsList? getScheduleShiftsDetailsList;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
getTimeCardSummary(searchMonth, searchYear); formattedDate = date;
getDayHoursTypeDetails(date.day, searchMonth, searchYear); callTimeCardAndHourDetails(date.day, searchMonth, searchYear);
formattedDate = DateFormat('MMM-yyyy').format(date);
} }
void getTimeCardSummary(searchMonth, searchYear) async { void callTimeCardAndHourDetails(index, searchMonth, searchYear) async {
try { try {
Utils.showLoading(context); Utils.showLoading(context);
getTimeCardSummaryList = await MonthlyAttendanceApiClient().getTimeCardSummary(searchMonth, searchYear); getTimeCardSummaryList = await MonthlyAttendanceApiClient().getTimeCardSummary(searchMonth, searchYear);
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getDayHoursTypeDetails(index, searchMonth, searchYear) async {
try {
Utils.showLoading(context);
getDayHoursTypeDetailsList = await MonthlyAttendanceApiClient().getDayHoursTypeDetails(searchMonth, searchYear); getDayHoursTypeDetailsList = await MonthlyAttendanceApiClient().getDayHoursTypeDetails(searchMonth, searchYear);
Utils.hideLoading(context); Utils.hideLoading(context);
pRTPID = getDayHoursTypeDetailsList[index].rTPID; _calendarController.displayDate = formattedDate;
setState(() {}); setState(() {});
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, null); Utils.handleException(ex, context, null);
} }
countAllAttendDays();
getScheduleShiftsDetails(pRTPID);
} }
getScheduleShiftsDetails(pRTPID) async { Future getScheduleShiftsDetails(index, pRTPID) async {
try { try {
Utils.showLoading(context); Utils.showLoading(context);
getScheduleShiftsDetailsList = await MonthlyAttendanceApiClient().getScheduleShiftsDetails(pRTPID); getScheduleShiftsDetailsList = await MonthlyAttendanceApiClient().getScheduleShiftsDetails(pRTPID);
Utils.hideLoading(context); Utils.hideLoading(context);
setState(() {}); //setState(() {});
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, null); Utils.handleException(ex, context, null);
} }
} }
countAllAttendDays() {
// print(getDayHoursTypeDetailsList.length);
for (int i = 0; i < getDayHoursTypeDetailsList.length; i++) {
if (getDayHoursTypeDetailsList[i].aTTENDEDFLAG == 'Y') {
isPresent = true;
isAbsent = false;
isMissingDays = false;
isOffDays = false;
} else if (getDayHoursTypeDetailsList[i].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[i].aBSENTFLAG == 'Y') {
isPresent = false;
isAbsent = true;
isMissingDays = false;
isOffDays = false;
} else if (getDayHoursTypeDetailsList[i].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[i].dAYTYPE == 'OFF') {
isPresent = false;
isAbsent = false;
isMissingDays = false;
isOffDays = true;
} else {
isPresent = false;
isAbsent = false;
isMissingDays = true;
isOffDays = false;
}
}
}
final CalendarController _calendarController = CalendarController(); final CalendarController _calendarController = CalendarController();
final List<Color> _colorList = [Color(0xff2AB2AB), Color(0xff202529)]; final List<Color> _colorList = [Color(0xff2AB2AB), Color(0xff202529)];
@ -126,8 +86,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Map<String, double> dataMap = { Map<String, double> dataMap = {
"Present": getTimeCardSummaryList!.aTTENDEDDAYS!.toDouble(), "Present": getTimeCardSummaryList?.aTTENDEDDAYS != null ? getTimeCardSummaryList!.aTTENDEDDAYS!.toDouble() : 0,
"Absent": getTimeCardSummaryList!.aBSENTDAYS!.toDouble(), "Absent": getTimeCardSummaryList?.aBSENTDAYS != null ? getTimeCardSummaryList!.aBSENTDAYS!.toDouble() : 0,
}; };
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
@ -150,61 +110,42 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Attendance".toText24(isBold: true, color: MyColors.darkIconColor), LocaleKeys.attendance.tr().toText24(isBold: true, color: MyColors.darkIconColor),
Row( Row(
children: [ children: [
Text(formattedDate), "${DateFormat("MMMM-yyyy").format(formattedDate)}".toText16(color: MyColors.greyACColor),
const Icon(Icons.keyboard_arrow_down_rounded, color: MyColors.greyACColor), const Icon(Icons.keyboard_arrow_down_rounded, color: MyColors.greyACColor),
], ],
).onPress(() async { ).onPress(() async {
await showDatePicker( showMonthPicker(
context: context, context: context, //locale: EasyLocalization.of(context)?.locale,
initialDate: DateTime.now(), initialDate: formattedDate,
firstDate: DateTime(2021), firstDate: DateTime(searchYear - 2),
lastDate: DateTime.now(), lastDate: DateTime.now(),
builder: (context, child) {
return Theme(
data: ThemeData.dark().copyWith(
colorScheme: const ColorScheme.dark(
primary: MyColors.lightGreenColor,
onPrimary: MyColors.white,
surface: MyColors.lightGreenColor,
onSurface: MyColors.darkTextColor,
),
dialogBackgroundColor: Colors.white,
),
child: child!,
);
},
).then((selectedDate) { ).then((selectedDate) {
if (selectedDate != null) { if (selectedDate != null) {
var selectedMonth = DateFormat('MMMM').format(selectedDate); searchMonth = getMonth(selectedDate.month);
var selectedYear = DateFormat('yyyy').format(selectedDate); searchYear = selectedDate.year;
searchMonth = selectedMonth; formattedDate = selectedDate; //DateFormat('MMMM-yyyy').format(selectedDate);
searchYear = int.parse(selectedYear); // _calendarController.selectedDate = formattedDate;
setState(() { callTimeCardAndHourDetails(selectedDate.day, searchMonth, searchYear);
// date = selectedDate;
formattedDate = DateFormat('MMMM-yyyy').format(selectedDate);
getTimeCardSummary(searchMonth, searchYear);
getDayHoursTypeDetails(selectedDate.day, searchMonth, searchYear);
});
} }
}); });
}) })
], ],
).paddingOnly(left: 21, right: 21), ).paddingOnly(left: 21, right: 21),
18.height, 18.height,
AspectRatio(aspectRatio: 333 / 270, child: calendarWidget()).paddingOnly(left: 21, right: 21), AspectRatio(aspectRatio: 333 / 270, child: calendarWidget()).paddingOnly(left: 18, right: 25),
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
optionUI("Schedule\nDays", "${getTimeCardSummaryList!.sCHEDULEDAYS}"), optionUI(LocaleKeys.scheduleDays.tr(), "${getTimeCardSummaryList?.sCHEDULEDAYS}"),
6.width, 6.width,
optionUI("Off\nDays", "${getTimeCardSummaryList!.oFFDAYS}"), optionUI(LocaleKeys.offDays.tr(), "${getTimeCardSummaryList?.oFFDAYS}"),
6.width, 6.width,
optionUI("Non\nAnalyzed", "${getTimeCardSummaryList!.uNAUTHORIZEDLEAVE}"), optionUI(LocaleKeys.nonAnalyzed.tr(), "${getTimeCardSummaryList?.uNAUTHORIZEDLEAVE}"),
6.width, 6.width,
optionUI("Shortage\nHour", "${getTimeCardSummaryList!.sHORTAGEHRS}"), optionUI(LocaleKeys.shortageHour.tr(), "${getTimeCardSummaryList?.sHORTAGEHRS}"),
], ],
).paddingOnly(left: 21, right: 21), ).paddingOnly(left: 21, right: 21),
35.height, 35.height,
@ -229,10 +170,10 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
children: <Widget>[ children: <Widget>[
Column( Column(
children: [ children: [
"Attendance".toText12(isBold: true, color: MyColors.grey3AColor), LocaleKeys.attendance.tr().toText12(isBold: true, color: MyColors.grey3AColor),
"Stats".toText24(isBold: true, color: MyColors.grey3AColor), LocaleKeys.stats.tr().toText24(isBold: true, color: MyColors.grey3AColor),
], ],
).paddingOnly(left: 21, top: 29, bottom: 36), ).paddingOnly(left: 21, top: 29, bottom: 36, right: 23),
Row( Row(
children: [ children: [
Container( Container(
@ -245,7 +186,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
), ),
Container( Container(
margin: const EdgeInsets.only(left: 5, right: 5), margin: const EdgeInsets.only(left: 5, right: 5),
child: "PRESENT ${getTimeCardSummaryList!.aTTENDEDDAYS}".toText16(isBold: true, color: MyColors.lightGreenColor), child: "${LocaleKeys.present.tr()} ${getTimeCardSummaryList!.aTTENDEDDAYS}".toText16(isBold: true, color: MyColors.lightGreenColor),
), ),
], ],
).paddingOnly(left: 21, right: 23), ).paddingOnly(left: 21, right: 23),
@ -262,13 +203,13 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
), ),
Container( Container(
margin: const EdgeInsets.only(left: 5, right: 5), margin: const EdgeInsets.only(left: 5, right: 5),
child: "ABSENT ${getTimeCardSummaryList!.aBSENTDAYS}".toText16( child: "${LocaleKeys.absent.tr()} ${getTimeCardSummaryList!.aBSENTDAYS}".toText16(
isBold: true, isBold: true,
color: MyColors.backgroundBlackColor, color: MyColors.backgroundBlackColor,
), ),
) )
], ],
).paddingOnly(left: 21, top: 8), ).paddingOnly(left: 21, top: 8, right: 23),
], ],
), ),
Column( Column(
@ -342,70 +283,116 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Widget calendarWidget() { Widget calendarWidget() {
return SfCalendar( return SfCalendar(
view: CalendarView.month, view: CalendarView.month,
// onViewChanged: viewChanged, showDatePickerButton: false,
controller: _calendarController, controller: _calendarController,
headerHeight: 0, headerHeight: 0,
todayHighlightColor: MyColors.grey3AColor, todayHighlightColor: MyColors.grey3AColor,
showNavigationArrow: false,
showCurrentTimeIndicator: false,
showWeekNumber: false,
cellBorderColor: Colors.white,
selectionDecoration: BoxDecoration(
border: Border.all(color: MyColors.white, width: 10),
borderRadius: const BorderRadius.all(Radius.circular(100)),
shape: BoxShape.circle,
),
dataSource: MeetingDataSource(_getDataSource()),
onTap: calendarTapped,
monthViewSettings: const MonthViewSettings(
dayFormat: 'EEE',
showTrailingAndLeadingDates: false,
showAgenda: false,
navigationDirection: MonthNavigationDirection.horizontal,
monthCellStyle: MonthCellStyle(
textStyle: TextStyle(
fontStyle: FontStyle.normal,
fontSize: 13,
color: Colors.white,
),
),
),
viewHeaderStyle: const ViewHeaderStyle( viewHeaderStyle: const ViewHeaderStyle(
dayTextStyle: TextStyle(color: MyColors.grey3AColor, fontSize: 13, fontWeight: FontWeight.w600), dayTextStyle: TextStyle(color: MyColors.grey3AColor, fontSize: 13, fontWeight: FontWeight.w600),
), ),
monthCellBuilder: (cxt, build) { monthCellBuilder: (build, details) {
int val = build.date.day; if (details.date.month == formattedDate.month && details.date.year == formattedDate.year) {
val == countAllAttendDays(); int val = details.date.day;
if (isPresent) { //check day is off
return Container( if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].dAYTYPE == 'OFF') {
margin: const EdgeInsets.all(4), return Container(
decoration: BoxDecoration( margin: const EdgeInsets.all(4),
gradient: const LinearGradient( decoration: BoxDecoration(
transform: GradientRotation(.46), color: MyColors.greyACColor.withOpacity(.12),
begin: Alignment.topRight, shape: BoxShape.circle,
end: Alignment.bottomLeft,
colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
), ),
shape: BoxShape.circle, alignment: Alignment.center,
boxShadow: [ child: Text(
BoxShadow( "$val",
offset: const Offset(0, 2), style: const TextStyle(
blurRadius: 26, fontSize: 13,
color: MyColors.blackColor.withOpacity(0.100), fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
), ),
],
),
alignment: Alignment.center,
child: Text(
"${build.date.day}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
), ),
), );
); }
} else if (isAbsent) { //check day is Present
return Container( else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'Y') {
margin: const EdgeInsets.all(4), return Container(
decoration: BoxDecoration( margin: const EdgeInsets.all(4),
color: MyColors.backgroundBlackColor, decoration: BoxDecoration(
shape: BoxShape.circle, gradient: const LinearGradient(
boxShadow: [ transform: GradientRotation(.46),
BoxShadow( begin: Alignment.topRight,
offset: const Offset(0, 2), end: Alignment.bottomLeft,
blurRadius: 26, colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
color: MyColors.blackColor.withOpacity(0.100),
), ),
], shape: BoxShape.circle,
), boxShadow: [
alignment: Alignment.center, BoxShadow(
child: Text( offset: const Offset(0, 2),
"${build.date.day}", blurRadius: 26,
style: const TextStyle( color: MyColors.blackColor.withOpacity(0.100),
fontSize: 13, ),
fontWeight: FontWeight.w500, ],
color: MyColors.white,
), ),
), alignment: Alignment.center,
); child: Text(
} else if (isMissingDays) { "$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
//check day is Absent
else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].aBSENTFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.backgroundBlackColor,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
return Container( return Container(
margin: const EdgeInsets.all(4), margin: const EdgeInsets.all(4),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -421,7 +408,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
"${build.date.day}", "$val",
style: const TextStyle( style: const TextStyle(
fontSize: 13, fontSize: 13,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -429,66 +416,35 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
), ),
), ),
); );
} else if (isOffDays) { // return Container(
return Container( // alignment: Alignment.center,
margin: const EdgeInsets.all(4), // child: Text("$val"),
decoration: BoxDecoration( // );
color: MyColors.greyACColor.withOpacity(.12),
shape: BoxShape.circle,
),
alignment: Alignment.center,
child: Text(
"${build.date.day}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
),
),
);
} else { } else {
return Container(); return const SizedBox();
} }
}, },
monthViewSettings: const MonthViewSettings(
dayFormat: 'EEE',
showTrailingAndLeadingDates: false,
appointmentDisplayMode: MonthAppointmentDisplayMode.appointment,
showAgenda: false,
navigationDirection: MonthNavigationDirection.horizontal,
monthCellStyle: MonthCellStyle(
textStyle: TextStyle(
fontStyle: FontStyle.normal,
fontSize: 13,
color: Colors.white,
),
),
),
showNavigationArrow: false,
showDatePickerButton: false,
showCurrentTimeIndicator: false,
showWeekNumber: false,
cellBorderColor: Colors.white,
selectionDecoration: BoxDecoration(
border: Border.all(color: MyColors.white, width: 10),
borderRadius: const BorderRadius.all(Radius.circular(100)),
shape: BoxShape.circle,
),
dataSource: MeetingDataSource(_getDataSource()),
onTap: calendarTapped,
); );
} }
calendarTapped(CalendarTapDetails details) { void calendarTapped(CalendarTapDetails details) async {
dynamic string = getScheduleShiftsDetailsList!.pERCENTAGE; dynamic index = details.date?.day;
dynamic percentage = string!.indexOf('%');
print(percentage);
print(details.date?.day.toString());
int? index = details.date?.day;
if (index != null) { if (index != null) {
index = index - 1; index = index - 1;
} }
getDayHoursTypeDetails(index, getMonth(details.date!.month), details.date?.year); pRTPID = getDayHoursTypeDetailsList[index].rTPID;
await getScheduleShiftsDetails(index, pRTPID);
dynamic value = getScheduleShiftsDetailsList!.pERCENTAGE;
dynamic percentage;
if (value!.indexOf('%') == 3) {
percentage = int.parse(value!.substring(0, 3));
} else if (value!.indexOf('%') == 2) {
percentage = int.parse(value!.substring(0, 2));
} else if (value!.indexOf('%') == 1 && value!.indexOf('%') != 0 && value!.indexOf('%') != "") {
percentage = int.parse(value!.substring(0, 1));
} else if (value!.indexOf('%') == 0 || value!.indexOf('%') == "") {
percentage = 0;
}
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(25)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(25)),
@ -499,6 +455,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
maxChildSize: 0.9, maxChildSize: 0.9,
expand: false, expand: false,
builder: (_, controller) { builder: (_, controller) {
dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
return Column( return Column(
children: [ children: [
Container( Container(
@ -524,11 +482,12 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Column(children: [ Container(
"${getScheduleShiftsDetailsList!.sCHEDULEDATE!.substring(0, 9)}".toText24(isBold: true, color: Colors.white), child: "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
"Attendance Details".tr().toText16(color: MyColors.lightGreyEFColor), ).paddingOnly(top: 26, left: 21, right: 21),
21.height, Container(
]).paddingOnly(top: 25, left: 21, right: 21, bottom: 10), child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21, bottom: 16),
),
Center( Center(
child: CircularStepProgressBar( child: CircularStepProgressBar(
totalSteps: 16 * 4, totalSteps: 16 * 4,
@ -542,9 +501,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
"${getScheduleShiftsDetailsList!.pERCENTAGE}".toText44(color: Colors.white, isBold: true), "${getScheduleShiftsDetailsList!.pERCENTAGE}".toText44(color: Colors.white, isBold: true),
"Completed".tr().toText11(color: MyColors.greyACColor), LocaleKeys.completed.tr().toText11(color: MyColors.greyACColor),
19.height, 19.height,
"Shift Time".tr().toText11(color: MyColors.greyACColor), LocaleKeys.shiftTime.tr().toText11(color: MyColors.greyACColor),
"${getScheduleShiftsDetailsList!.sHTNAME}".toText22(color: Colors.white, isBold: true), "${getScheduleShiftsDetailsList!.sHTNAME}".toText22(color: Colors.white, isBold: true),
], ],
), ),
@ -574,11 +533,13 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Actual Check In ".tr().toText11( LocaleKeys.actualCheckIn.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true), "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
], ],
), ),
), ),
@ -586,11 +547,13 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Actual Check Out".tr().toText11( LocaleKeys.actualCheckOut.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true), "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
], ],
), ),
], ],
@ -609,11 +572,13 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Approved Check In".tr().toText11( LocaleKeys.approvedCheckIn.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true), "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
: "__".toText22(color: MyColors.greenColor, isBold: true),
], ],
), ),
), ),
@ -621,11 +586,13 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Approved Check Out".tr().toText11( LocaleKeys.approvedCheckOut.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true), "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
: "__".toText22(color: MyColors.greenColor, isBold: true),
], ],
), ),
], ],
@ -644,11 +611,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Late In".tr().toText11( LocaleKeys.lateIn.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getDayHoursTypeDetailsList[i].lATEINHRS}".toText22(color: MyColors.redColor, isBold: true), "${getDayHoursTypeDetailsList[index].lATEINHRS}".toText22(color: MyColors.redColor, isBold: true),
], ],
), ),
), ),
@ -656,11 +623,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Excess".tr().toText11( LocaleKeys.excess.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getDayHoursTypeDetailsList[i].eXCESSHRS}".toText22(color: Colors.black, isBold: true), "${getDayHoursTypeDetailsList[index].eXCESSHRS}".toText22(color: Colors.black, isBold: true),
], ],
), ),
], ],
@ -679,11 +646,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Shortage".tr().toText11( LocaleKeys.shortage.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getDayHoursTypeDetailsList[i].sHORTAGEHRS}".toText22(color: Colors.black, isBold: true), "${getDayHoursTypeDetailsList[index].sHORTAGEHRS}".toText22(color: Colors.black, isBold: true),
], ],
), ),
), ),
@ -691,11 +658,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Early Out".tr().toText11( LocaleKeys.earlyOut.tr().toText11(
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getDayHoursTypeDetailsList[i].eARLYOUTHRS}".toText22(color: Colors.black, isBold: true), "${getDayHoursTypeDetailsList[index].eARLYOUTHRS}".toText22(color: Colors.black, isBold: true),
], ],
), ),
], ],
@ -723,7 +690,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return meetings; return meetings;
} }
static getMonth(int month) { static String getMonth(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -749,6 +716,39 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
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 "";
} }
} }
} }

@ -51,275 +51,342 @@ class _DashboardScreenState extends State<DashboardScreen> {
List<String> namesD = ["Nostalgia Perfume Perfume", "Al Nafoura", "AlJadi", "Nostalgia Perfume"]; List<String> namesD = ["Nostalgia Perfume Perfume", "Al Nafoura", "AlJadi", "Nostalgia Perfume"];
final GlobalKey<ScaffoldState> _key = GlobalKey(); // final GlobalKey<ScaffoldState> _key = GlobalKey(); //
return Scaffold( return Scaffold(
key: _scaffoldState, key: _scaffoldState,
body: Column( body: Column(
children: [ children: [
Row( Row(
children: [ children: [
Builder(builder: (context) { Builder(builder: (context) {
return Row( return Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
CircularAvatar( CircularAvatar(
width: 34, width: 34,
height: 34, height: 34,
url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png", 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( ).onPress(() async {
width: 36, await Navigator.pushNamed(context, AppRoutes.announcements);
height: 36,
child: Stack( })
alignment: Alignment.centerLeft, ],
).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SvgPicture.asset("assets/images/announcements.svg"), LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
Positioned( "Mahmoud Shrouf".toText24(isBold: true),
right: 0, 16.height,
top: 0, Row(
child: Container( children: [
padding: const EdgeInsets.only(left: 5, right: 5), Expanded(
decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)), child: AspectRatio(
child: "3".toText12(color: Colors.white), aspectRatio: 159 / 159,
), child: Consumer<DashboardProviderModel>(
) builder: (context, model, child) {
], return (model.isAttendanceTrackingLoading
), ? GetAttendanceTrackingShimmer()
).onPress(() { : Container(
data.update(context); decoration: BoxDecoration(
}) borderRadius: BorderRadius.circular(15),
], gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), MyColors.gradiantEndColor,
Expanded( MyColors.gradiantStartColor,
child: SingleChildScrollView( ]),
child: Column( ),
children: [ child: Stack(
Column( alignment: Alignment.center,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"),
LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), Column(
"Mahmoud Shrouf".toText24(isBold: true), crossAxisAlignment: CrossAxisAlignment.start,
16.height, children: [
Row( Expanded(
children: [ child: Column(
Expanded( mainAxisSize: MainAxisSize.min,
child: AspectRatio( crossAxisAlignment: CrossAxisAlignment.start,
aspectRatio: 159 / 159,
child: Consumer<DashboardProviderModel>(
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<Color>(Colors.white),
backgroundColor: const Color(0xff196D73),
),
),
],
),
],
).paddingOnly(top: 12, right: 15, left: 12),
),
Row(
children: [ children: [
Expanded( LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true),
child: Column( if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white),
if (model.isTimeRemainingInSeconds != 0)
Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.checkIn.tr().toText12(color: Colors.white), 9.height,
(model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn) CountdownTimer(
.toString() endTime: model.endTime,
.toText14(color: Colors.white, isBold: true), onEnd: null,
4.height, 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<Color>(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"),
),
], ],
), ).paddingOnly(top: 12, right: 15, left: 12),
], ),
), Row(
], children: [
), Expanded(
).onPress(() { child: Column(
Navigator.pushNamed(context, AppRoutes.todayAttendance); mainAxisSize: MainAxisSize.min,
})) crossAxisAlignment: CrossAxisAlignment.start,
.animatedSwither(); 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( 9.width,
child: MenusWidget(), 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),
), ),
child: Column( ],
mainAxisSize: MainAxisSize.min, ).paddingOnly(left: 21, right: 21, top: 7),
children: [ ServicesWidget(),
Row( 8.height,
crossAxisAlignment: CrossAxisAlignment.center, Container(
children: [ width: double.infinity,
Expanded( padding: EdgeInsets.only(top: 31),
child: Column( decoration: BoxDecoration(
crossAxisAlignment: CrossAxisAlignment.start, color: Colors.white,
mainAxisSize: MainAxisSize.min, borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
children: [ border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
LocaleKeys.offers.tr().toText12(), ),
Row( child: Column(
children: [ mainAxisSize: MainAxisSize.min,
LocaleKeys.discounts.tr().toText24(isBold: true), children: [
6.width, Row(
Container( crossAxisAlignment: CrossAxisAlignment.center,
padding: const EdgeInsets.only(left: 8, right: 8), children: [
decoration: BoxDecoration( Expanded(
color: MyColors.yellowColor, child: Column(
borderRadius: BorderRadius.circular(10), crossAxisAlignment: CrossAxisAlignment.start,
), mainAxisSize: MainAxisSize.min,
child: LocaleKeys.newString.tr().toText10(isBold: true)), children: [
], LocaleKeys.offers.tr().toText12(),
), Row(
], children: [
), LocaleKeys.discounts.tr().toText24(isBold: true),
), 6.width,
LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true), Container(
], padding: const EdgeInsets.only(left: 8, right: 8),
).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( decoration: BoxDecoration(
borderRadius: const BorderRadius.all( color: MyColors.yellowColor,
Radius.circular(100), borderRadius: BorderRadius.circular(10),
),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
), ),
child: ClipRRect( child: LocaleKeys.newString.tr().toText10(isBold: true)),
borderRadius: const BorderRadius.all( ],
Radius.circular(50), ),
), ],
child: Image.network( ),
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo", ),
fit: BoxFit.cover, 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, child: ClipRRect(
Expanded( borderRadius: const BorderRadius.all(
child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2), Radius.circular(50),
),
child: Image.network(
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
fit: BoxFit.cover,
),
), ),
], ),
), 4.height,
); Expanded(
}, child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
separatorBuilder: (cxt, index) => 8.width, ),
itemCount: 6), ],
), ),
], );
), },
) separatorBuilder: (cxt, index) => 8.width,
], itemCount: 6),
), ),
],
),
)
],
),
),
)
],
),
drawer: SafeArea(
child: AppDrawer(),
),
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
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) {},
),
);
} }
} }

@ -14,8 +14,10 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_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/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/generic_response_model.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/circular_step_progress_bar.dart';
import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart'; import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart';
import 'package:mohem_flutter_app/widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart'; import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save