Merge branch 'master' into development_haroon

# Conflicts:
#	lib/config/routes.dart
#	lib/models/generic_response_model.dart
#	lib/ui/landing/widget/app_drawer.dart
#	lib/ui/screens/announcements/announcement_details.dart
#	pubspec.yaml
faiz_marathon_signalR_critical
haroon amjad 4 years ago
commit 1719c7029e

@ -9,6 +9,17 @@
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
analyzer:
errors:
always_use_package_imports: error
camel_case_types: error
always_declare_return_types: error
null_check_on_nullable_type_parameter: error
avoid_annotating_with_dynamic: error
unnecessary_null_checks: error
unnecessary_brace_in_string_interps: error
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
@ -25,8 +36,19 @@ linter:
always_specify_types: true
always_declare_return_types: true
always_use_package_imports: true
avoid_unnecessary_containers: true
unnecessary_this: true
unnecessary_new: true
camel_case_types: true
null_check_on_nullable_type_parameter: true
sort_child_properties_last: true
camel_case_extensions: true
require_trailing_commas: true
avoid_empty_else: true
avoid_annotating_with_dynamic: true
unnecessary_null_checks: true
unnecessary_brace_in_string_interps: true
unnecessary_string_interpolations: true
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule

@ -27,7 +27,7 @@ apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 31
compileSdkVersion 32
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@ -46,7 +46,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "hmg.cloudSolutions.mohem"
minSdkVersion 21
targetSdkVersion 30
targetSdkVersion 32
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:icon="@mipmap/ic_launcher"
@ -15,6 +16,7 @@
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<rect x="38" y="23" width="2" height="5"/>
<rect x="42" y="23" width="2" height="5"/>
<rect x="38" y="30" width="2" height="2"/>
<rect x="42" y="30" width="2" height="2"/>
<rect x="31" y="34" width="2" height="2"/>
<rect x="26" y="54" width="2" height="2"/>
<rect x="42" y="34" width="2" height="2"/>
<rect x="38" y="38" width="2" height="2"/>
<rect x="42" y="38" width="2" height="2"/>
<path d="M2,2h3V0H1C0.448,0,0,0.448,0,1v4h2V2z"/>
<path d="M63,0h-4v2h3v3h2V1C64,0.448,63.552,0,63,0z"/>
<path d="M2,59H0v4c0,0.552,0.448,1,1,1h4v-2H2V59z"/>
<path d="M62,62h-3v2h4c0.552,0,1-0.448,1-1v-4h-2V62z"/>
<path d="M4,5v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H5C4.448,4,4,4.448,4,5z M6,6h10v10H6V6z"/>
<path d="M13,8H9C8.448,8,8,8.448,8,9v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C14,8.448,13.552,8,13,8z M12,12h-2v-2h2V12z"
/>
<path d="M47,18h12c0.552,0,1-0.448,1-1V5c0-0.552-0.448-1-1-1H47c-0.552,0-1,0.448-1,1v12C46,17.552,46.448,18,47,18z M48,6h10v10
H48V6z"/>
<path d="M55,8h-4c-0.552,0-1,0.448-1,1v4c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1V9C56,8.448,55.552,8,55,8z M54,12h-2v-2h2V12z
"/>
<path d="M17,46H5c-0.552,0-1,0.448-1,1v12c0,0.552,0.448,1,1,1h12c0.552,0,1-0.448,1-1V47C18,46.448,17.552,46,17,46z M16,58H6V48
h10V58z"/>
<path d="M9,56h4c0.552,0,1-0.448,1-1v-4c0-0.552-0.448-1-1-1H9c-0.552,0-1,0.448-1,1v4C8,55.552,8.448,56,9,56z M10,52h2v2h-2V52z"
/>
<path d="M44,19h-7V7h-2v13c0,0.552,0.448,1,1,1h8V19z"/>
<rect x="22" y="12" width="7" height="2"/>
<rect x="26" y="8" width="7" height="2"/>
<rect x="4" y="19" width="2" height="9"/>
<path d="M18,25H8v2h9v4h2v-5C19,25.448,18.552,25,18,25z"/>
<rect x="9" y="20" width="2" height="2"/>
<rect x="21" y="18" width="2" height="8"/>
<rect x="21" y="28" width="9" height="2"/>
<path d="M61,29h-2v10h-3v2h4c0.552,0,1-0.448,1-1V29z"/>
<rect x="26" y="18" width="2" height="2"/>
<rect x="4" y="33" width="2" height="8"/>
<rect x="4" y="42" width="9" height="2"/>
<path d="M50,28h2v-4c0-0.552-0.448-1-1-1h-5v2h4V28z"/>
<rect x="9" y="33" width="2" height="2"/>
<rect x="20" y="32" width="2" height="8"/>
<rect x="20" y="42" width="9" height="2"/>
<rect x="8" y="38" width="9" height="2"/>
<rect x="21" y="52" width="2" height="4"/>
<rect x="20" y="48" width="9" height="2"/>
<path d="M36,44v-5c0-0.552-0.448-1-1-1H25v2h9v4H36z"/>
<rect x="26" y="32" width="2" height="2"/>
<rect x="15" y="34" width="2" height="2"/>
<rect x="59" y="53" width="2" height="7"/>
<rect x="54" y="58" width="3" height="2"/>
<rect x="54" y="52" width="2" height="4"/>
<path d="M61,44c0-0.552-0.448-1-1-1H49v2h10v6h2V44z"/>
<path d="M48,56v-5c0-0.552-0.448-1-1-1H36v2h10v4H48z"/>
<rect x="50" y="47" width="7" height="2"/>
<rect x="20" y="58" width="7" height="2"/>
<rect x="30" y="51" width="2" height="9"/>
<rect x="32" y="46" width="4" height="2"/>
<path d="M47,36h5v-2h-4v-6h-2v7C46,35.552,46.448,36,47,36z"/>
<rect x="50" y="30" width="5" height="2"/>
<rect x="54" y="20" width="3" height="2"/>
<rect x="59" y="20" width="2" height="5"/>
<rect x="54" y="25" width="2" height="2"/>
<path d="M39,17h4c0.552,0,1-0.448,1-1V3h-2v12h-3V17z"/>
<path d="M24,5h15V3H23c-0.552,0-1,0.448-1,1v5h2V5z"/>
<path d="M25,24h7c0.552,0,1-0.448,1-1v-8h-2v7h-6V24z"/>
<rect x="34" y="23" width="2" height="4"/>
<rect x="36" y="54" width="7" height="2"/>
<rect x="36" y="58" width="9" height="2"/>
<path d="M50,58h-2v2h3c0.552,0,1-0.448,1-1v-8h-2V58z"/>
<rect x="16" y="42" width="2" height="2"/>
<rect x="39" y="42" width="4" height="2"/>
<rect x="46" y="38" width="2" height="3"/>
<rect x="45" y="43" width="2" height="2"/>
<rect x="39" y="46" width="3" height="2"/>
<rect x="50" y="38" width="2" height="2"/>
<rect x="54" y="34" width="3" height="2"/>
<rect x="35" y="34" width="5" height="2"/>
<rect x="34" y="29" width="2" height="3"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 161.9 115.9" style="enable-background:new 0 0 161.9 115.9;" xml:space="preserve">
<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 26.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
viewBox="0 0 161.9 115.9" style="enable-background:new 0 0 161.9 115.9;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_1_);}
@ -9,54 +8,51 @@
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000167385588366204257280000005677836094560819131_);}
.st4{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000030484853887028042530000009742356117098638990_);}
</style>
<g id="Layer_2_00000008146416357898561640000016925561153751568014_">
<g id="Layer_2_00000008146416357898561640000016925561153751568014_">
<g id="Cover_Page">
<path class="st0" d="M23.5,110.2h4.3v-27h-5L14,95.9L5,83.2H0v27h4.3V89.5l9.1,12.8h0.9l9.2-12.8V110.2z"/>
<path class="st0" d="M41.2,90.8c-5.5,0-9.9,4.4-9.9,9.9c0,5.5,4.4,9.9,9.9,9.9c5.2,0.2,9.7-3.8,9.9-9c0-0.3,0-0.6,0-0.9
c0.2-5.3-4-9.7-9.3-9.9C41.6,90.8,41.4,90.8,41.2,90.8z M41.2,94.4c3.3,0.1,5.9,2.8,5.9,6.1c0,0.1,0,0.1,0,0.2
c0.2,3.2-2.3,6-5.6,6.1c-3.2,0.2-6-2.3-6.1-5.6c0-0.2,0-0.4,0-0.6c-0.2-3.2,2.2-6,5.4-6.2C40.9,94.4,41,94.4,41.2,94.4z"/>
<path class="st0" d="M54.2,83.1v27.1h4v-9.9c-0.2-3,2.1-5.5,5-5.7c0.1,0,0.2,0,0.2,0c2.9,0,4.8,1.8,4.8,5.4v10.2h4V99.9
c0-5.5-2.5-9.1-7.8-9.1c-2.5-0.1-4.8,1.1-6.2,3.1V83.1H54.2z"/>
<path class="st0" d="M94.8,102.2c0.7-7.8-3.4-11.5-9.6-11.5c-5.3-0.2-9.8,3.9-10,9.2c0,0.3,0,0.5,0,0.8c0,6.1,4,10.1,10.3,10.1
c3.1,0.1,6-1.1,8.2-3.3l-2.6-2.5c-1.5,1.4-3.5,2.1-5.5,2.1c-3.5,0-5.9-1.9-6.2-4.8L94.8,102.2z M79.4,98.8
c0.5-2.8,3.1-4.8,5.9-4.6c3.2,0,5.4,1.6,5.7,4.6H79.4z"/>
<path class="st0" d="M114.9,110.2V99.8c-0.2-2.6,1.7-4.9,4.3-5.1c0.1,0,0.2,0,0.3,0c2.8,0,4.2,2.2,4.2,5.1v10.5h4V99.7
c0-5.5-2.8-8.8-8.1-8.8c-2.7-0.1-5.3,1.3-6.5,3.8c-0.9-2.5-3.4-4-6-3.8c-2.2-0.1-4.2,1-5.3,2.9l-0.3-2.6h-3.7v19.1h4V99.8
c0-2.8,1.8-5.2,4.6-5.2c2.8,0,4.4,2.4,4.4,5.2v10.5H114.9z"/>
<path class="st0" d="M149,110.2V99.8c-0.2-2.6,1.7-4.9,4.4-5.1c0.1,0,0.2,0,0.3,0c2.8,0,4.2,2.2,4.2,5.1v10.5h4V99.7
c0-5.5-2.8-8.8-8.1-8.8c-2.7-0.1-5.3,1.3-6.5,3.8c-0.9-2.4-3.3-4-6-3.8c-2.2-0.1-4.2,1-5.3,2.9l-0.3-2.6h-3.8v19.1h4V99.8
c0-2.8,1.8-5.2,4.6-5.2c2.8,0,4.4,2.4,4.4,5.2v10.5H149z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="55.98" y1="-10.0986" x2="163.1928" y2="72.1628" gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8"/>
<stop offset="1" style="stop-color:#C1D967"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="55.98" y1="-10.0986"
x2="163.1928" y2="72.1628" gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8" />
<stop offset="1" style="stop-color:#C1D967" />
</linearGradient>
<path class="st1" d="M117.4,20.5c-4.2,0-7.6-3.4-7.6-7.6c0-4.2,3.4-7.6,7.6-7.6c4.2,0,7.6,3.4,7.6,7.6c0,0,0,0,0,0
C125,17.1,121.6,20.5,117.4,20.5z"/>
<linearGradient id="SVGID_00000026872133431724139420000015295225800217450885_" gradientUnits="userSpaceOnUse" x1="72.1783" y1="-15.2775" x2="150.1874" y2="44.584" gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8"/>
<stop offset="1" style="stop-color:#C1D967"/>
<path class="st1" d="M117.4,20.5c-4.2,0-7.6-3.4-7.6-7.6c0-4.2,3.4-7.6,7.6-7.6c4.2,0,7.6,3.4,7.6,7.6c0,0,0,0,0,0
C125,17.1,121.6,20.5,117.4,20.5z" />
<linearGradient id="SVGID_00000026872133431724139420000015295225800217450885_"
gradientUnits="userSpaceOnUse" x1="72.1783" y1="-15.2775" x2="150.1874" y2="44.584"
gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8" />
<stop offset="1" style="stop-color:#C1D967" />
</linearGradient>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000026872133431724139420000015295225800217450885_);" d="
<path
style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000026872133431724139420000015295225800217450885_);"
d="
M99.2,12.7c-5.7,1.8-9.5,7.1-9.5,13.1v5.1h2.4c4.7,0,8.5,3.8,8.5,8.5c0,0.1,0,0.1,0,0.2v8.6C100.7,61,109,64,114.4,64h1.8V30.8
C107.1,30.8,99.6,21.8,99.2,12.7z"/>
<linearGradient id="SVGID_00000029033238716987721520000004689211043976606898_" gradientUnits="userSpaceOnUse" x1="54.3473" y1="-8.6399" x2="132.3564" y2="51.2215" gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8"/>
<stop offset="1" style="stop-color:#C1D967"/>
C107.1,30.8,99.6,21.8,99.2,12.7z" />
<linearGradient id="SVGID_00000029033238716987721520000004689211043976606898_"
gradientUnits="userSpaceOnUse" x1="54.3473" y1="-8.6399" x2="132.3564" y2="51.2215"
gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8" />
<stop offset="1" style="stop-color:#C1D967" />
</linearGradient>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000029033238716987721520000004689211043976606898_);" d="
<path
style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000029033238716987721520000004689211043976606898_);"
d="
M72.8,12.7c-5.7,1.8-9.5,7.1-9.5,13.1v5.1h2.4c4.7,0,8.5,3.8,8.5,8.4c0,0.1,0,0.1,0,0.2v8.6C74.2,61,82.5,64,87.9,64h1.8V30.8
C80.6,30.8,73.1,21.8,72.8,12.7z"/>
<linearGradient id="SVGID_00000113332780290425602090000015103686907198383032_" gradientUnits="userSpaceOnUse" x1="36.5148" y1="-2.0006" x2="114.524" y2="57.8471" gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8"/>
<stop offset="1" style="stop-color:#C1D967"/>
C80.6,30.8,73.1,21.8,72.8,12.7z" />
<linearGradient id="SVGID_00000113332780290425602090000015103686907198383032_"
gradientUnits="userSpaceOnUse" x1="36.5148" y1="-2.0006" x2="114.524" y2="57.8471"
gradientTransform="matrix(1 0 0 -1 0 49.8898)">
<stop offset="0" style="stop-color:#0086C8" />
<stop offset="1" style="stop-color:#C1D967" />
</linearGradient>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000113332780290425602090000015103686907198383032_);" d="
<path
style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_00000113332780290425602090000015103686907198383032_);"
d="
M46.3,12.7c-5.7,1.8-9.5,7.1-9.5,13.1v5.1h2.4c4.7,0,8.5,3.8,8.5,8.4c0,0.1,0,0.1,0,0.2v8.6C47.7,61,56,64,61.4,64h1.8V30.8
C54.1,30.8,46.6,21.8,46.3,12.7z"/>
C54.1,30.8,46.6,21.8,46.3,12.7z" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -30,6 +30,9 @@
"services": "خدمات",
"viewAllServices": "عرض جميع الخدمات",
"monthlyAttendance": "الحضور الشهري",
"vacationRule": "حكم اجازة",
"startDateT": "تاريخ البدء",
"endDateT": "تاريخ الانتهاء",
"workFromHome": "العمل من المنزل",
"ticketRequest": "طلب تذكرة",
"viewAllOffers": "مشاهدة جميع العروض",
@ -41,7 +44,7 @@
"confirmPassword": "تأكيد كلمة المرور",
"update": "تحديث",
"title": "عنوان",
"home": "مسكن",
"home": "الرئيسية",
"mySalary": "راتبي",
"createRequest": "إنشاء طلب",
"forgotPassword": "هل نسيت كلمة السر",
@ -231,17 +234,18 @@
"myAttendance": "حضوري",
"workOnBreak": "التعويض عن العمل اثناءالاستراحه",
"next": "التالي",
"apply": "يتقدم",
"mobile": "التليفون المحمول",
"completingYear": "نحن نقدر لك لاستكمال خدمة",
"year": "سنة",
"month": "شهر",
"day": "يوم",
"address" : "العنوان",
"address": "العنوان",
"phoneNumber": "رقم الجوال",
"businessGroup": "مجموعة العمل",
"Payroll": "الراتب",
"civilIdentityNumber": "رقم الهويه",
"dateOfBirth" : "تاريخ الميلاد",
"dateOfBirth": "تاريخ الميلاد",
"maritalStatus ": "الحالة الاجتماعية",
"fullName": "الأسم الكامل",
"remove": "حذف",
@ -251,6 +255,66 @@
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
"monthlyPaySlip": "قسيمة الراتب الشهرية",
"particular": "خاص",
"earnings": "أرباح",
"deductions": "الخصومات",
"paymentMethodName": "اسم طريقة الدفع",
"bankName": "اسم البنك",
"branchCode": "رمز الفرع",
"accountNo": "رقم الحساب",
"summaryOfInformation": "ملخص المعلومات",
"totalPayAmount": "المبلغ الإجمالي للدفع",
"paymentInformation": "معلومات الدفع",
"amount": "مقدار",
"correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية",
"selectType": " حدد نوع التغيير الذي تريد القيام به",
"enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية",
"endDate": "تاريخ الانتهاء",
"removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟",
"updateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟",
"addNewFamilyMember": "اضافة عضو جديد",
"addRow": "اضافة صف جديد",
"pleaseSelect": "الرجاء اختيار",
"delete": "حذف",
"edit": "تعديل",
"add": "اضافه",
"myProfile": "معلوماتي",
"mowadhafhi": "موظفي",
"searchAnnouncements": "بحث الاعلانات",
"announcements": "اعلانات",
"swipeRequest": "طلب تسجيل حضور",
"serviceType": "نوع الخدمه",
"departmentName": "اسم القسم",
"selectDepartment": "اختر القسم",
"relatedSection": "قسم ذو صله",
"selectSection": "اختيار القسم",
"relatedTopic": "عنوان ذو صله",
"selectTopic": "اختر العنوان",
"supportingDocument": "ارفاق مستند",
"mowadhafhiRequest": "طلب موظفي",
"ticketReference": "مرجع التذكره",
"section": "القسم",
"topic": "العنوان",
"actionBy": "الرد بواسطة",
"pending": "معلق",
"pendingTransactions": "المعاملات المعلقه",
"selectRequestType": "الرجاء اختيار نوع الطلب",
"dateFrom": "من تاريخ",
"dateTo": "الى تاريخ",
"requestName": "اسم الطلب",
"createdFor": "انشاء لأجل",
"requestCreatedSuccessfully": "تم انشاء الطلب بنجاح",
"search": "بحث",
"wantToReject": "هل انت متأكد تريد الرفض",
"requestType": "نوع الطلب",
"employeeDigitalID": "هويةالموظف الرقمية",
"businessCard": "بطاقة العمل",
"checkOut":"وقت الخروج",
"regular":"منتظم",
"mark" : "علامة",
"selectMethodOfAttendance":"اختر طريقة تسجيل الحضور",
"comeNearHMGWifi": "HMG wifi من فضلك اقترب من",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -261,8 +325,11 @@
"completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية",
"basicDetails": "تفاصيل أساسية",
"address": "تبوك",
"contactDetails": "بيانات التواصل",
"familyDetails": "تفاصيل عائلية"
"familyDetails": "تفاصيل عائلية",
"effectiveDate": "تاريخ النفاذ",
"country": "دولة"
},
"clicked": {
"zero": "You clicked {} times!",
@ -272,14 +339,6 @@
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",

@ -30,6 +30,9 @@
"services": "Services",
"viewAllServices": "View All Services",
"monthlyAttendance": "Monthly Attendance",
"vacationRule": "Vacation Rule",
"startDateT": "Start Date",
"endDateT": "End Date",
"workFromHome": "Work From Home",
"ticketRequest": "Ticket Request",
"viewAllOffers": "View All Offers",
@ -231,6 +234,7 @@
"myAttendance": "My Attendance",
"workOnBreak": "Work On Break",
"next": "Next",
"apply": "Apply",
"mobile": "Mobile",
"year": "Year",
"month": "Month",
@ -245,13 +249,72 @@
"maritalStatus ": "Marital Status ",
"fullName": "Full Name",
"remove": "Remove",
"Attendance":"Attendance",
"Attendance": "Attendance",
"submit": "Submit",
"areYouSureYouWantToSubmit": "Are you sure you want to submit?",
"comments": "Comments",
"writeComment": "Write a comment",
"approversList": "Approvers List",
"yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals",
"monthlyPaySlip": "Monthly Pay Slip",
"particular": "Particular",
"earnings": "Earnings",
"deductions": "Deductions",
"paymentMethodName": "Payment Method Name",
"bankName": "Bank Name",
"branchCode": "Branch Code",
"accountNo": "Account No",
"summaryOfInformation": "Summary of Information",
"totalPayAmount": "Total Pay Amount",
"paymentInformation": "Payment Information",
"amount": "Amount",
"correctCurrentDatails": "correct or complete the current details",
"selectType": "Select the type of change you want to make",
"enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)",
"endDate": "*End Date",
"removeThisMember": "Are You Sure You Want to Remove this Member?",
"updateThisMember": "Are You Sure You Want to Update this Member?",
"addNewFamilyMember": "Add New Family Member",
"addRow": "Add new row",
"pleaseSelect": "Please Select *",
"delete": "delete",
"add": "Add",
"edit": "Edit",
"myProfile": "My Profile",
"mowadhafhi": "Mowadhafhi",
"searchAnnouncements": "Search Announcements",
"announcements": "Announcements",
"swipeRequest": "Swipe Request",
"serviceType": "Service Type",
"departmentName": "Department Name",
"selectDepartment": "Select Department",
"relatedSection": "Related Section",
"selectSection": "Select Section",
"relatedTopic": "Related Topic",
"selectTopic": "Select Topic",
"supportingDocument": "Supporting Document",
"mowadhafhiRequest": "Mowadhafhi Request",
"ticketReference": "Ticket Reference",
"section": "Section",
"topic": "Topic",
"actionBy": "Action By",
"pendingTransactions": "Pending Transactions",
"selectRequestType": "Please select request type",
"dateFrom": "Date From",
"dateTo": "Date To",
"requestName": "Request Name",
"createdFor": "Created For",
"requestType": "Request Type",
"requestCreatedSuccessfully": "Request created successfully",
"search": "Search",
"wantToReject": "Are you sure want to reject?",
"employeeDigitalID": "Employee Digital ID",
"businessCard": "Business Card",
"checkOut":"Check Out",
"regular":"Regular",
"mark" : "Mark",
"selectMethodOfAttendance":"Select the method to mark the attendance",
"comeNearHMGWifi": "Please come near to HMG wifi",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -262,8 +325,11 @@
"completeProfile": "Complete Profile",
"personalInformation": "Personal Information",
"basicDetails": "Basic Details",
"address": "Address",
"contactDetails": "Contact Details",
"familyDetails": "Family Members"
"familyDetails": "Family Members",
"effectiveDate": "Effective Date",
"country": "Country"
},
"clicked": {
"zero": "You clicked {} times!",
@ -273,14 +339,6 @@
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",

@ -7,8 +7,8 @@ import 'package:http/http.dart';
import 'package:http/io_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart';
import '../main.dart';
import 'package:mohem_flutter_app/main.dart';
// ignore_for_file: avoid_annotating_with_dynamic
typedef FactoryConstructor<U> = U Function(dynamic);

@ -1,17 +1,13 @@
import 'dart:async';
import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:uuid/uuid.dart';
import 'api_client.dart';
class DashboardApiClient {
static final DashboardApiClient _instance = DashboardApiClient._internal();
@ -92,7 +88,7 @@ class DashboardApiClient {
}
//Mark Attendance
Future<GenericResponseModel?> markAttendance({String lat = "0", String? long = "0", required int pointType, String nfcValue = "", bool isGpsRequired = false}) async {
Future<GenericResponseModel?> markAttendance({String lat = "0", String? long = "0", required int pointType, String nfcValue = "", bool isGpsRequired = false, String QRValue = ""}) async {
String url = "${ApiConsts.swpRest}AuthenticateAndSwipeUserSupportNFC";
var uuid = Uuid();
// Generate a v4 (random) id
@ -101,7 +97,7 @@ class DashboardApiClient {
"UID": uuid.v4(), //Mobile Id
"Latitude": lat,
"Longitude": long,
"QRValue": "",
"QRValue": QRValue,
"PointType": pointType, // NFC=2, Wifi = 3, QR= 1,
"NFCValue": nfcValue,
"WifiValue": pointType == 3 ? "100" : "",

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

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
@ -8,8 +9,6 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'api_client.dart';
class LoginApiClient {
static final LoginApiClient _instance = LoginApiClient._internal();

@ -8,8 +8,9 @@ import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.d
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'api_client.dart';
import 'package:mohem_flutter_app/api/api_client.dart';
// todo '@fatima' change file name according to structure
class MonthlyAttendanceApiClient {
static final MonthlyAttendanceApiClient _instance = MonthlyAttendanceApiClient._internal();
@ -17,7 +18,6 @@ class MonthlyAttendanceApiClient {
factory MonthlyAttendanceApiClient() => _instance;
Future<GetTimeCardSummaryList?> getTimeCardSummary(String month, int year) async {
String url = "${ApiConsts.erpRest}GET_TIME_CARD_SUMMARY";
Map<String, dynamic> 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);
}
}

@ -9,8 +9,7 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_section_topics.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_details.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart';
import '../../models/mowadhafhi/get_tickets_list.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
class MowadhafhiApiClient {
static final MowadhafhiApiClient _instance = MowadhafhiApiClient._internal();
@ -115,7 +114,7 @@ class MowadhafhiApiClient {
String url = "${ApiConsts.cocRest}Mohemm_ITG_CreateTicketMobile";
Map<String, dynamic> postParams = {
"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
"ItgImageCollList" : attachmentList,
"ItgImageCollList": attachmentList,
"channelId": 3,
"departmentId": departmentID,
"description": description,

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
@ -9,8 +10,6 @@ import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
import 'api_client.dart';
class MyAttendanceApiClient {
static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal();
@ -83,12 +82,8 @@ class MyAttendanceApiClient {
"P_MENU_TYPE": "E",
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
// "EITTransactionTBL": list,
"EITTransactionTBL": list,
};
print(postParams);
postParams["EITTransactionTBL"] =list;
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
@ -103,13 +98,10 @@ class MyAttendanceApiClient {
"P_MENU_TYPE": "E",
"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode,
"P_FUNCTION_NAME": pFunctionName,
//"EITTransactionTBL": list,
// "EITTransactionTBLModel": list,
"EITTransactionTBL": list,
"EITTransactionTBLModel": list,
};
postParams.addAll(AppState().postParamsJson);
print("postParams:$postParams");
postParams["EITTransactionTBL"] = list;
postParams["EITTransactionTBLModel"] = list;
return await ApiClient().postJsonForObject((json) {
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());

@ -5,6 +5,8 @@ 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();
@ -37,7 +39,6 @@ class PendingTransactionsApiClient {
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);

@ -3,13 +3,28 @@ import 'dart:async';
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/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'api_client.dart';
import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/api/api_client.dart';
class ProfileApiClient {
static final ProfileApiClient _instance = ProfileApiClient._internal();
@ -83,7 +98,7 @@ class ProfileApiClient {
Future<GenericResponseModel> getDffStructure(String pFunctionName, String uRL, String requestType) async {
String url = ApiConsts.erpRest + uRL;
Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName, "P_REQUEST_TYPE": requestType};
Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_REQUEST_TYPE": pFunctionName, "P_COUNTRY_CODE": "SA"};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
@ -130,4 +145,254 @@ class ProfileApiClient {
return responseData.getObjectValuesList ?? [];
}, url, postParams);
}
Future<SubmitContactTransactionList?> submetConatctTransaction(
String pFunctionName,
String actionType,
int contactRelationId,
String date,
) async {
String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME": pFunctionName,
"EITTransactionTBL": [
{
"TRANSACTION_NUMBER": 1,
"NAME": "DATE_END",
"VARCHAR2_VALUE": null,
"NUMBER_VALUE": null,
"DATE_VALUE": date,
}
],
"P_CONTACT_RELATIONSHIP_ID": contactRelationId,
"P_ACTION": actionType,
"PayrollCodeStr": "CS",
"LegislationCodeStr": "SA",
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.submitContactTransactionList;
}, url, postParams);
}
Future<GetApprovesList?> getApproves(String action, String comments, int transactionId, String itemKey) async {
String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST";
Map<String, dynamic> postParams = {
"P_AME_TRANSACTION_TYPE": "SSHRMS",
"P_PAGE_LIMIT": 1000,
"P_PAGE_NUM": 1,
"P_TRANSACTION_ID": transactionId,
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
// return responseData.getApprovesList;
return (responseData.getApprovesList?.length ?? 0) > 0 ? responseData.getApprovesList!.first : null;
}, url, postParams);
}
Future<SubmitPhonesTransactionList> submitPhoneNumbers(List<GetEmployeePhonesList> empList) async {
String url = "${ApiConsts.erpRest}SUBMIT_PHONES_TRANSACTION";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME": "HR_PERINFO_SS",
"P_MBL_PHONES_TBL": empList.map((element) {
return element.toJson();
}).toList()
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return SubmitPhonesTransactionList.fromJson(responseData.submitPhonesTransactionList ?? {});
}, url, postParams);
}
Future<StartPhoneApprovalProcess?> startPhoneApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_PHONES_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"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.startPhonesApprovalProcessList;
}, url, postParams);
}
Future<StartAddressApprovalProcess?> startAddressApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_ADDRESS_APPROVAL_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
"P_ITEM_KEY": itemKey,
"P_TRANSACTION_ID": transactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startAddressApprovalProcessList;
}, url, postParams);
}
Future<SubmitBasicDetailsTransactionList> submitBasicDetailsTransaction(String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list, int correctOrNew) async {
String url = "${ApiConsts.erpRest}SUBMIT_BASIC_DET_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_FUNCTION_NAME": pFunctionName,
"P_ACTION_TYPE": correctOrNew == 1 ? 'CORRECT' : 'CHANGE',
//"EITTransactionTBL": list,
// "EITTransactionTBLModel": list,
};
postParams.addAll(AppState().postParamsJson);
print("postParams:$postParams");
postParams["EITTransactionTBL"] = list;
postParams["EITTransactionTBLModel"] = list;
return await ApiClient().postJsonForObject((json) {
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
return responseData.submitBasicDetTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<StartAddressApprovalProcess?> startBasicDetailsApprovalProcess(String action, String comments, String itemKey, int transactionId) async {
String url = "${ApiConsts.erpRest}START_BASIC_DET_APPR_PROCESS";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_ACTION_MODE": action,
"P_COMMENTS": comments,
"P_ITEM_KEY": itemKey,
"P_TRANSACTION_ID": transactionId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.startAddressApprovalProcessList;
}, url, postParams);
}
Future<SubmitAddressTransaction> submitAddressTransaction(
String pDescFlexContextCode, String pFunctionName, List<Map<String, dynamic>> list, int correctOrNew, String countryCode, String effectiveDate) async {
String url = "${ApiConsts.erpRest}SUBMIT_ADDRESS_TRANSACTION";
Map<String, dynamic> postParams = {
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_COUNTRY_CODE": countryCode, //"SA",
"P_DESC_FLEX_CONTEXT_CODE": "SA",
"P_FUNCTION_NAME": pFunctionName,
"P_ACTION": correctOrNew == 1 ? 'CORRECT' : 'NEW',
"P_EFFECTIVE_DATE": effectiveDate,
//"EITTransactionTBL": list,
// "EITTransactionTBLModel": list,
};
postParams.addAll(AppState().postParamsJson);
print("postParams:$postParams");
postParams["EITTransactionTBL"] = list;
// postParams["EITTransactionTBLModel"] = list;
return await ApiClient().postJsonForObject((json) {
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
return responseData.submitAddressTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson());
}, url, postParams);
}
Future<List<GetCountriesListModel>> getCountriesList() async {
String url = "${ApiConsts.erpRest}GET_COUNTRIES";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getCountriesList ?? [];
}, url, postParams);
}
// add & update family member
Future<List<GetBasicDetDffStructureList>> getBasicDetDffStructure() async {
String url = "${ApiConsts.erpRest}GET_BASIC_DET_DFF_STRUCTURE";
Map<String, dynamic> postParams = {"P_FUNCTION_NAME": "HR_PERINFO_SS", "P_MENU_TYPE": "E", "P_REQUEST_TYPE": "CONTACT", "P_SELECTED_RESP_ID": -999};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getBasicDetDffStructureList ?? [];
}, url, postParams);
}
// add & update family member
Future<List<GetContactColsStructureList>> getContactColsStructureList(String actionType) async {
String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE";
Map<String, dynamic> postParams = {
"P_ACTION": actionType,
"P_FUNCTION_NAME": "HR_PERINFO_SS",
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getContactColsStructureList ?? [];
}, url, postParams);
}
// update family member
Future<List<GetContactDetailsList>> getContactDetailsList(int contactRelationId) async {
String url = "${ApiConsts.erpRest}GET_CONTACT_DETAILS";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_CONTACT_RELATIONSHIP_ID": contactRelationId,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getContactDetailsList ?? [];
}, url, postParams);
}
// add & update family member
Future<List<GetContactDffStructureList>> getContactDffStructureList() async {
String url = "${ApiConsts.erpRest}GET_CONTACT_DFF_STRUCTURE";
Map<String, dynamic> postParams = {
"P_DESC_FLEX_CONTEXT_CODE": "HMG_ADD_CONTACT_DETAILS",
"P_FUNCTION_NAME": "HR_PERINFO_SS",
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getContactDffStructureList ?? [];
}, url, postParams);
}
Future<SubmitContactTransactionList?> submetConatctTransactionAddAndUpdate(String actionType, int relationId, List<Map<String, dynamic>> list) async {
String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_FUNCTION_NAME": "HR_PERINFO_SS",
"P_ACTION": actionType,
"P_CONTACT_RELATIONSHIP_ID": relationId,
};
postParams["EITTransactionTBL"] = list;
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.submitContactTransactionList;
}, url, postParams);
}
}

@ -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);
// }
}

@ -0,0 +1,78 @@
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/vacation_rule/get_item_type_notifications_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart';
class VacationRuleApiClient {
static final VacationRuleApiClient _instance = VacationRuleApiClient._internal();
VacationRuleApiClient._internal();
factory VacationRuleApiClient() => _instance;
Future<List<GetVacationRulesList>> getVacationRules() async {
String url = "${ApiConsts.erpRest}GET_VACATION_RULES";
Map<String, dynamic> postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getVacationRulesList ?? [];
}, url, postParams);
}
Future<List<VrItemTypesList>> getVrItemTypes() async {
String url = "${ApiConsts.erpRest}GET_VR_ITEM_TYPES";
Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.vrItemTypesList ?? [];
}, url, postParams);
}
Future<List<GetItemTypeNotificationsList>> getItemTypeNotifications(String pItemType) async {
String url = "${ApiConsts.erpRest}GET_ITEM_TYPE_NOTIFICATIONS";
Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getItemTypeNotificationsList ?? [];
}, url, postParams);
}
Future<List<GetNotificationReassignModeList>> getNotificationReassignMode() async {
String url = "${ApiConsts.erpRest}GET_NOTIFICATION_REASSIGN_MODE";
Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.getNotificationReassignModeList ?? [];
}, url, postParams);
}
Future<List<RespondAttributesList>> getRespondAttributes(String pItemType, String pNotificationName) async {
String url = "${ApiConsts.erpRest}GET_RESPOND_ATTRIBUTES";
Map<String, dynamic> postParams = {"P_ITEM_TYPE": pItemType, "P_NOTIFICATION_NAME": pNotificationName};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.respondAttributesList ?? [];
}, url, postParams);
}
Future<List<WFLookUpList>> getWfLookup(String pLookupType) async {
String url = "${ApiConsts.erpRest}GET_WF_LOOKUP";
Map<String, dynamic> postParams = {"P_LOOKUP_TYPE": pLookupType};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return responseData.wFLookUpList ?? [];
}, 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/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import '../../models/worklist/hr/eit_otification_body_model.dart';
import '../../models/worklist/get_favorite_replacements_model.dart';
import '../../models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import '../../models/worklist/hr/get_contact_notification_body_list_model.dart';
import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
class WorkListApiClient {
static final WorkListApiClient _instance = WorkListApiClient._internal();

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

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

@ -9,7 +9,7 @@ class FileProcess {
static bool isFolderCreated = false;
static Directory? directory;
static checkDocumentFolder() async {
static Future checkDocumentFolder() async {
try {
if (!isFolderCreated) {
directory = await getApplicationDocumentsDirectory();
@ -24,7 +24,7 @@ class FileProcess {
}
static void openFile(String fileName) {
String dir = directory!.path + "/${fileName}.pdf";
String dir = directory!.path + "/$fileName.pdf";
OpenFile.open(dir);
}

@ -1,17 +1,22 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart';
// import 'package:fluttertoast/fluttertoast.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart';
import 'package:mohem_flutter_app/widgets/loading_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';
// ignore_for_file: avoid_annotating_with_dynamic
class Utils {
static bool _isLoadingVisible = false;
@ -120,33 +125,29 @@ class Utils {
}
static Widget getNoDataWidget(BuildContext context) {
return Container(
child: Center(
child: 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: const Text("No Result Found", style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xFFBABABA)))),
],
),
),
);
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 getPostBytes(img) {
static Uint8List getPostBytes(img) {
try {
var b64 = img.replaceFirst('data:image/png;base64,', '');
if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64);
} catch (e) {}
return null;
return Uint8List.fromList([]);
}
static getBase64FromJpeg(img) {
static String getBase64FromJpeg(img) {
try {
var b64 = img.replaceFirst('data:image/jpeg;base64,', '');
return b64;
} catch (e) {}
return null;
return "";
}
static bool isBase64(String str) {
@ -157,4 +158,38 @@ class Utils {
static Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
static Widget tableColumnTitle(String? text, {bool showDivider = true, bool alignCenter = false}) {
text ??= "";
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
6.height,
alignCenter ? text.toText12().center : text.toText12(),
5.height,
if (showDivider)
const Divider(
height: 1,
color: Color(0xff2E303A),
thickness: 1,
)
],
);
}
static Widget tableColumnValue(String text, {bool isCapitable = true, bool alignCenter = false}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
12.height,
if (alignCenter)
(isCapitable ? text.toLowerCase().capitalizeFirstofEach : text).toText12(color: MyColors.normalTextColor).center
else
(isCapitable ? text.toLowerCase().capitalizeFirstofEach : text).toText12(color: MyColors.normalTextColor),
12.height,
],
);
}
}

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/ui/attendance/monthly_attendance.dart';
import 'package:mohem_flutter_app/ui/attendance/add_vacation_rule_screen.dart';
import 'package:mohem_flutter_app/ui/attendance/monthly_attendance_screen.dart';
import 'package:mohem_flutter_app/ui/attendance/vacation_rule_screen.dart';
import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart';
@ -12,10 +14,13 @@ import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/my_attendance_screen.dart';
import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart';
import 'package:mohem_flutter_app/ui/profile/add_update_family_member.dart';
import 'package:mohem_flutter_app/ui/profile/basic_details.dart';
import 'package:mohem_flutter_app/ui/profile/contact_details.dart';
import 'package:mohem_flutter_app/ui/profile/delete_familyMember.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart';
import 'package:mohem_flutter_app/ui/profile/family_members.dart';
import 'package:mohem_flutter_app/ui/profile/personal_info.dart';
import 'package:mohem_flutter_app/ui/screens/announcements/announcement_details.dart';
@ -23,6 +28,7 @@ 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/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/my_requests/my_requests.dart';
@ -36,8 +42,6 @@ import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
import '../ui/screens/mowadhafhi/mowadhafhi_home.dart';
class AppRoutes {
static const String splash = "/splash";
static const String registerSelection = "/registerSelection";
@ -68,10 +72,13 @@ class AppRoutes {
//profile
static const String addDynamicInputProfile = 'addDynamicInputProfile';
static const String addDynamicAddressScreen = 'addDynamicAddressProfile';
//Attendance
static const String attendance = "/attendance";
static const String monthlyAttendance = "/monthlyAttendance";
static const String vacationRule = "/vacationRule";
static const String addVacationRule = "/addVacationRule";
//Bottom Sheet
static const String attendanceDetailsBottomSheet = "/attendanceDetailsBottomSheet";
@ -83,6 +90,7 @@ class AppRoutes {
static const String contactDetails = "/contactDetails";
static const String familyMembers = "/familyMembers";
static const String deleteFamilyMember = "/deleteFamilyMember";
static const String addUpdateFamilyMember = "/addUpdateFamilyMember";
// Mowadhafhi
static const String mowadhafhi = "/mowadhafhi";
@ -101,7 +109,8 @@ class AppRoutes {
static const String myRequests = "/myRequests";
static const String newRequest = "/newRequests";
//Pay slip
static const String monthlyPaySlip = "/monthlyPaySlip";
static final Map<String, WidgetBuilder> routes = {
login: (context) => LoginScreen(),
@ -128,7 +137,9 @@ class AppRoutes {
// addWorkFromHome: (context) => AddWorkFromHomeScreen(),
profile: (context) => ProfileScreen(),
//Attendance
monthlyAttendance: (context) => MonthlyAttendance(),
monthlyAttendance: (context) => MonthlyAttendanceScreen(),
vacationRule: (context) => VacationRuleScreen(),
addVacationRule: (context) => AddVacationRuleScreen(),
//Bottom Sheet
attendanceDetailsBottomSheet: (context) => AttendenceDetailsBottomSheet(),
@ -143,8 +154,11 @@ class AppRoutes {
dynamicScreen: (context) => DynamicListViewScreen(),
addDynamicInput: (context) => DynamicInputScreen(),
addDynamicInputProfile: (context) => DynamicInputScreenProfile(),
deleteFamilyMember: (context) => DeleteFamilyMember(),
addDynamicAddressScreen: (context) => DynamicInputScreenAddress(),
deleteFamilyMember: (context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int),
requestSubmitScreen: (context) => RequestSubmitScreen(),
addUpdateFamilyMember: (context) => AddUpdateFamilyMember(),
//mowadhafhi
mowadhafhi: (context) => MowadhafhiHome(),
@ -161,5 +175,7 @@ class AppRoutes {
myRequests: (context) => MyRequests(),
newRequest: (context) => NewRequest(),
//pay slip
monthlyPaySlip: (context) => MonthlyPaySlipScreen(),
};
}

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

@ -23,11 +23,12 @@ extension EmailValidator on String {
Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text(
this,
style: TextStyle(
fontSize: 11,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor,
letterSpacing: -0.33,
decoration: isUnderLine ? TextDecoration.underline : null),
fontSize: 11,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor,
letterSpacing: -0.33,
decoration: isUnderLine ? TextDecoration.underline : null,
),
);
Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text(
@ -35,11 +36,12 @@ extension EmailValidator on String {
textAlign: isCenter ? TextAlign.center : null,
maxLines: (maxLine > 0) ? maxLine : null,
style: TextStyle(
fontSize: 12,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor,
letterSpacing: -0.72,
decoration: isUnderLine ? TextDecoration.underline : null),
fontSize: 12,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor,
letterSpacing: -0.72,
decoration: isUnderLine ? TextDecoration.underline : null,
),
);
Widget toText13({Color? color, bool isUnderLine = false}) => Text(
@ -52,7 +54,7 @@ extension EmailValidator on String {
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 14, letterSpacing: -0.48, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
);
Widget toText16({Color? color, bool isBold = false,int? maxlines}) => Text(
Widget toText16({Color? color, bool isBold = false, int? maxlines}) => Text(
this,
maxLines: maxlines,
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
@ -131,7 +133,7 @@ extension EmailValidator on String {
return "${dates[2]} ${getMonth(int.parse(dates[1]))} ${dates[0]} ${DateFormat('hh:mm a').format(DateFormat('hh:mm:ss').parse(time))}";
}
getMonth(int month) {
String getMonth(int month) {
switch (month) {
case 1:
return "January";
@ -157,6 +159,8 @@ extension EmailValidator on String {
return "November";
case 12:
return "December";
default:
return "";
}
}
}

@ -11,6 +11,8 @@ extension WidgetExtensions on Widget {
Widget get center => Center(child: this);
Widget circle(double _value) => ClipRRect(borderRadius: BorderRadius.circular(_value), child: this);
Widget paddingAll(double _value) => Padding(padding: EdgeInsets.all(_value), child: this);
Widget paddingOnly({double left = 0.0, double right = 0.0, double top = 0.0, double bottom = 0.0}) =>
@ -21,8 +23,8 @@ extension WidgetExtensions on Widget {
baseColor: Color(0xffe8eff0),
highlightColor: Colors.white,
child: Container(
child: this,
color: Colors.white,
child: this,
),
)
: Container(

@ -46,6 +46,7 @@ class CodegenLoader extends AssetLoader{
"services": "خدمات",
"viewAllServices": "عرض جميع الخدمات",
"monthlyAttendance": "الحضور الشهري",
"vacationRule": "حكم اجازة",
"workFromHome": "العمل من المنزل",
"ticketRequest": "طلب تذكرة",
"viewAllOffers": "مشاهدة جميع العروض",
@ -57,7 +58,7 @@ class CodegenLoader extends AssetLoader{
"confirmPassword": "تأكيد كلمة المرور",
"update": "تحديث",
"title": "عنوان",
"home": "مسكن",
"home": "الرئيسية",
"mySalary": "راتبي",
"createRequest": "إنشاء طلب",
"forgotPassword": "هل نسيت كلمة السر",
@ -267,6 +268,66 @@ class CodegenLoader extends AssetLoader{
"writeComment": "أكتب تعليقا",
"approversList": "قائمة الموافقين",
"yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات",
"monthlyPaySlip": "قسيمة الراتب الشهرية",
"particular": "خاص",
"earnings": "أرباح",
"deductions": "الخصومات",
"paymentMethodName": "اسم طريقة الدفع",
"bankName": "اسم البنك",
"branchCode": "رمز الفرع",
"accountNo": "رقم الحساب",
"summaryOfInformation": "ملخص المعلومات",
"totalPayAmount": "المبلغ الإجمالي للدفع",
"paymentInformation": "معلومات الدفع",
"amount": "مقدار",
"correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية",
"selectType": " حدد نوع التغيير الذي تريد القيام به",
"enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية",
"endDate": "تاريخ الانتهاء",
"removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟",
"updateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟",
"addNewFamilyMember": "اضافة عضو جديد",
"addRow": "اضافة صف جديد",
"pleaseSelect": "الرجاء اختيار",
"delete": "حذف",
"edit": "تعديل",
"add": "اضافه",
"myProfile": "معلوماتي",
"mowadhafhi": "موظفي",
"searchAnnouncements": "بحث الاعلانات",
"announcements": "اعلانات",
"swipeRequest": "طلب تسجيل حضور",
"serviceType": "نوع الخدمه",
"departmentName": "اسم القسم",
"selectDepartment": "اختر القسم",
"relatedSection": "قسم ذو صله",
"selectSection": "اختيار القسم",
"relatedTopic": "عنوان ذو صله",
"selectTopic": "اختر العنوان",
"supportingDocument": "ارفاق مستند",
"mowadhafhiRequest": "طلب موظفي",
"ticketReference": "مرجع التذكره",
"section": "القسم",
"topic": "العنوان",
"actionBy": "الرد بواسطة",
"pending": "معلق",
"pendingTransactions": "المعاملات المعلقه",
"selectRequestType": "الرجاء اختيار نوع الطلب",
"dateFrom": "من تاريخ",
"dateTo": "الى تاريخ",
"requestName": "اسم الطلب",
"createdFor": "انشاء لأجل",
"requestCreatedSuccessfully": "تم انشاء الطلب بنجاح",
"search": "بحث",
"wantToReject": "هل انت متأكد تريد الرفض",
"requestType": "نوع الطلب",
"employeeDigitalID": "هويةالموظف الرقمية",
"businessCard": "بطاقة العمل",
"checkOut": "وقت الخروج",
"regular": "منتظم",
"mark": "علامة",
"selectMethodOfAttendance": "اختر طريقة تسجيل الحضور",
"comeNearHMGWifi": "HMG wifi من فضلك اقترب من",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -277,8 +338,11 @@ class CodegenLoader extends AssetLoader{
"completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية",
"basicDetails": "تفاصيل أساسية",
"address": "تبوك",
"contactDetails": "بيانات التواصل",
"familyDetails": "تفاصيل عائلية"
"familyDetails": "تفاصيل عائلية",
"effectiveDate": "تاريخ النفاذ",
"country": "دولة"
},
"clicked": {
"zero": "You clicked {} times!",
@ -288,14 +352,6 @@ class CodegenLoader extends AssetLoader{
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
@ -338,6 +394,7 @@ static const Map<String,dynamic> en_US = {
"services": "Services",
"viewAllServices": "View All Services",
"monthlyAttendance": "Monthly Attendance",
"vacationRule": "Vacation Rule",
"workFromHome": "Work From Home",
"ticketRequest": "Ticket Request",
"viewAllOffers": "View All Offers",
@ -560,6 +617,65 @@ static const Map<String,dynamic> en_US = {
"writeComment": "Write a comment",
"approversList": "Approvers List",
"yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals",
"monthlyPaySlip": "Monthly Pay Slip",
"particular": "Particular",
"earnings": "Earnings",
"deductions": "Deductions",
"paymentMethodName": "Payment Method Name",
"bankName": "Bank Name",
"branchCode": "Branch Code",
"accountNo": "Account No",
"summaryOfInformation": "Summary of Information",
"totalPayAmount": "Total Pay Amount",
"paymentInformation": "Payment Information",
"amount": "Amount",
"correctCurrentDatails": "correct or complete the current details",
"selectType": "Select the type of change you want to make",
"enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)",
"endDate": "*End Date",
"removeThisMember": "Are You Sure You Want to Remove this Member?",
"updateThisMember": "Are You Sure You Want to Update this Member?",
"addNewFamilyMember": "Add New Family Member",
"addRow": "Add new row",
"pleaseSelect": "Please Select *",
"delete": "delete",
"add": "Add",
"edit": "Edit",
"myProfile": "My Profile",
"mowadhafhi": "Mowadhafhi",
"searchAnnouncements": "Search Announcements",
"announcements": "Announcements",
"swipeRequest": "Swipe Request",
"serviceType": "Service Type",
"departmentName": "Department Name",
"selectDepartment": "Select Department",
"relatedSection": "Related Section",
"selectSection": "Select Section",
"relatedTopic": "Related Topic",
"selectTopic": "Select Topic",
"supportingDocument": "Supporting Document",
"mowadhafhiRequest": "Mowadhafhi Request",
"ticketReference": "Ticket Reference",
"section": "Section",
"topic": "Topic",
"actionBy": "Action By",
"pendingTransactions": "Pending Transactions",
"selectRequestType": "Please select request type",
"dateFrom": "Date From",
"dateTo": "Date To",
"requestName": "Request Name",
"createdFor": "Created For",
"requestType": "Request Type",
"requestCreatedSuccessfully": "Request created successfully",
"search": "Search",
"wantToReject": "Are you sure want to reject?",
"employeeDigitalID": "Employee Digital ID",
"businessCard": "Business Card",
"checkOut": "Check Out",
"regular": "Regular",
"mark": "Mark",
"selectMethodOfAttendance": "Select the method to mark the attendance",
"comeNearHMGWifi": "Please come near to HMG wifi",
"profile": {
"reset_password": {
"label": "Reset Password",
@ -570,8 +686,11 @@ static const Map<String,dynamic> en_US = {
"completeProfile": "Complete Profile",
"personalInformation": "Personal Information",
"basicDetails": "Basic Details",
"address": "Address",
"contactDetails": "Contact Details",
"familyDetails": "Family Members"
"familyDetails": "Family Members",
"effectiveDate": "Effective Date",
"country": "Country"
},
"clicked": {
"zero": "You clicked {} times!",
@ -581,14 +700,6 @@ static const Map<String,dynamic> en_US = {
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",

@ -31,6 +31,9 @@ abstract class LocaleKeys {
static const services = 'services';
static const viewAllServices = 'viewAllServices';
static const monthlyAttendance = 'monthlyAttendance';
static const vacationRule = 'vacationRule';
static const startDateT = 'startDateT';
static const endDateT = 'endDateT';
static const workFromHome = 'workFromHome';
static const ticketRequest = 'ticketRequest';
static const viewAllOffers = 'viewAllOffers';
@ -232,6 +235,7 @@ abstract class LocaleKeys {
static const myAttendance = 'myAttendance';
static const workOnBreak = 'workOnBreak';
static const next = 'next';
static const apply = 'apply';
static const mobile = 'mobile';
static const completingYear = 'completingYear';
static const year = 'year';
@ -252,6 +256,66 @@ abstract class LocaleKeys {
static const writeComment = 'writeComment';
static const approversList = 'approversList';
static const yourRequestHasBeenSubmittedForApprovals = 'yourRequestHasBeenSubmittedForApprovals';
static const monthlyPaySlip = 'monthlyPaySlip';
static const particular = 'particular';
static const earnings = 'earnings';
static const deductions = 'deductions';
static const paymentMethodName = 'paymentMethodName';
static const bankName = 'bankName';
static const branchCode = 'branchCode';
static const accountNo = 'accountNo';
static const summaryOfInformation = 'summaryOfInformation';
static const totalPayAmount = 'totalPayAmount';
static const paymentInformation = 'paymentInformation';
static const amount = 'amount';
static const correctCurrentDatails = 'correctCurrentDatails';
static const selectType = 'selectType';
static const enterNewInfo = 'enterNewInfo';
static const endDate = 'endDate';
static const removeThisMember = 'removeThisMember';
static const updateThisMember = 'updateThisMember ';
static const addNewFamilyMember = 'addNewFamilyMember';
static const addRow = 'addRow';
static const pleaseSelect = 'pleaseSelect';
static const delete = 'delete';
static const edit = 'edit';
static const add = 'add';
static const myProfile = 'myProfile';
static const mowadhafhi = 'mowadhafhi';
static const searchAnnouncements = 'searchAnnouncements';
static const announcements = 'announcements';
static const swipeRequest = 'swipeRequest';
static const serviceType = 'serviceType';
static const departmentName = 'departmentName';
static const selectDepartment = 'selectDepartment';
static const relatedSection = 'relatedSection';
static const selectSection = 'selectSection';
static const relatedTopic = 'relatedTopic';
static const selectTopic = 'selectTopic';
static const supportingDocument = 'supportingDocument';
static const mowadhafhiRequest = 'mowadhafhiRequest';
static const ticketReference = 'ticketReference';
static const section = 'section';
static const topic = 'topic';
static const actionBy = 'actionBy';
static const pending = 'pending';
static const pendingTransactions = 'pendingTransactions';
static const selectRequestType = 'selectRequestType';
static const dateFrom = 'dateFrom';
static const dateTo = 'dateTo';
static const requestName = 'requestName';
static const createdFor = 'createdFor';
static const requestCreatedSuccessfully = 'requestCreatedSuccessfully';
static const search = 'search';
static const wantToReject = 'wantToReject';
static const requestType = 'requestType';
static const employeeDigitalID = 'employeeDigitalID';
static const businessCard = 'businessCard';
static const checkOut = 'checkOut';
static const regular = 'regular';
static const mark = 'mark';
static const selectMethodOfAttendance = 'selectMethodOfAttendance';
static const comeNearHMGWifi = 'comeNearHMGWifi';
static const profile_reset_password_label = 'profile.reset_password.label';
static const profile_reset_password_username = 'profile.reset_password.username';
static const profile_reset_password_password = 'profile.reset_password.password';
@ -260,11 +324,13 @@ abstract class LocaleKeys {
static const profile_completeProfile = 'profile.completeProfile';
static const profile_personalInformation = 'profile.personalInformation';
static const profile_basicDetails = 'profile.basicDetails';
static const profile_address = 'profile.address';
static const profile_contactDetails = 'profile.contactDetails';
static const profile_familyDetails = 'profile.familyDetails';
static const profile_effectiveDate = 'profile.effectiveDate';
static const profile_country = 'profile.country';
static const profile = 'profile';
static const clicked = 'clicked';
static const amount = 'amount';
static const gender_with_arg = 'gender.with_arg';
static const gender = 'gender';
static const reset_locale = 'reset_locale';

@ -5,20 +5,16 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/theme/app_theme.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:month_year_picker/month_year_picker.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:nfc_manager/platform_tags.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
import 'config/routes.dart';
var logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode)
printer: PrettyPrinter(lineLength: 0), // Use the PrettyPrinter to format and print log
@ -68,22 +64,17 @@ class MyApp extends StatelessWidget {
builder: (context, orientation, deviceType) {
print(AppState().postParamsObject?.toJson());
var obj = AppState().postParamsObject;
obj?.languageID = EasyLocalization
.of(context)
?.locale
.languageCode == "ar" ? 1 : 2;
obj?.languageID = EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2;
AppState().setPostParamsModel(obj!);
List<LocalizationsDelegate> delegates = context.localizationDelegates;
// delegates.add(GlobalMaterialLocalizations.delegate);
delegates.add(MonthYearPickerLocalizations.delegate,);
// delegates.add(GlobalMaterialLocalizations.delegate);
delegates.add(
MonthYearPickerLocalizations.delegate,
);
return MaterialApp(
theme: AppTheme.getTheme(EasyLocalization
.of(context)
?.locale
.languageCode == "ar"),
theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
debugShowCheckedModeBanner: false,
localizationsDelegates
:delegates,
localizationsDelegates: delegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
initialRoute: AppRoutes.initialRoute,

@ -1,9 +1,9 @@
class GET_EIT_Transactions_Model {
class GetEitTransactionsModel {
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) {
collectionTransaction = <CollectionTransaction>[];
json['Collection_Transaction'].forEach((v) {

@ -1,9 +1,17 @@
import 'package:mohem_flutter_app/models/add_att_success_list_model.dart';
import 'package:mohem_flutter_app/models/add_attachment_list_model.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_open_missing_swipes_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_open_notifications_list.dart';
import 'package:mohem_flutter_app/models/dashboard/list_menu.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_absence_collection_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/get_attachement_list_model.dart';
import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.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';
@ -15,6 +23,7 @@ import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_notification_buttons_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
@ -23,7 +32,13 @@ import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.
import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_deductions_List_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_earnings_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_pay_slip_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_payment_information_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_summary_of_payment_list_model.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_department_sections.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_project_departments.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_projects.dart';
@ -40,12 +55,28 @@ 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/pending_transactions/get_pending_transactions_details.dart';
import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.dart';
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/models/profile/get_address_dff_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_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/hr/eit_otification_body_model.dart';
@ -55,17 +86,6 @@ import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_bod
import 'package:mohem_flutter_app/models/worklist/replacement_list_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 {
String? date;
int? languageID;
@ -107,13 +127,15 @@ class GenericResponseModel {
String? companyImageDescription;
String? companyImageURL;
String? companyMainCompany;
String? countryList;
List<GetCountriesListModel>? countryList;
String? createVacationRuleList;
String? deleteAttachmentList;
String? deleteVacationRuleList;
String? disableSessionList;
String? employeeQR;
String? forgetPasswordTokenID;
List<String>? getCcpTransactionsListNew;
List<String>? getConcurrentProgramsList;
List<String>? getAbsenceAttachmentsList;
List<String>? getAbsenceAttendanceTypesList;
List<GetAbsenceCollectionNotificationBodyList>? getAbsenceCollectionNotificationBodyList;
@ -121,7 +143,7 @@ class GenericResponseModel {
List<String>? getAbsenceTransactionList;
List<GetAccrualBalancesList>? getAccrualBalancesList;
List<GetActionHistoryList>? getActionHistoryList;
List<String>? getAddressDffStructureList;
List<GetAddressDffStructureList>? getAddressDffStructureList;
List<String>? getAddressNotificationBodyList;
List<GetApprovesList>? getApprovesList;
List<GetAttachementList>? getAttachementList;
@ -133,18 +155,18 @@ class GenericResponseModel {
List<String>? getCEIDFFStructureList;
List<String>? getCEITransactionList;
List<String>? getCcpTransactionsList;
List<String>? getContactColsStructureList;
List<String>? getContactDetailsList;
List<String>? getContactDffStructureList;
List<GetContactColsStructureList>? getContactColsStructureList;
List<GetContactDetailsList>? getContactDetailsList;
List<GetContactDffStructureList>? getContactDffStructureList;
GetContactNotificationBodyList? getContactNotificationBodyList;
List<String>? getCountriesList;
List<GetCountriesListModel>? getCountriesList;
List<GetDayHoursTypeDetailsList>? getDayHoursTypeDetailsList;
List<String>? getDeductionsList;
List<GetDeductionsList>? getDeductionsList;
GetDefaultValueList? getDefaultValueList;
List<GetEitCollectionNotificationBodyList>? getEITCollectionNotificationBodyList;
List<GetEITDFFStructureList>? getEITDFFStructureList;
List<GetEITTransactionList>? getEITTransactionList;
List<String>? getEarningsList;
List<GetEarningsList>? getEarningsList;
List<GetEmployeeAddressList>? getEmployeeAddressList;
List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList;
List<GetEmployeeContactsList>? getEmployeeContactsList;
@ -154,22 +176,22 @@ class GenericResponseModel {
List<String>? getHrCollectionNotificationBodyList;
List<String>? getHrTransactionList;
GetItemCreationNtfBodyList? getItemCreationNtfBodyList;
List<String>? getItemTypeNotificationsList;
List<GetItemTypeNotificationsList>? getItemTypeNotificationsList;
List<String>? getItemTypesList;
List<String>? getLookupValuesList;
List<GetMenuEntriesList>? getMenuEntriesList;
List<GetMoItemHistoryList>? getMoItemHistoryList;
List<GetMoNotificationBodyList>? getMoNotificationBodyList;
List<GetNotificationButtonsList>? getNotificationButtonsList;
List<String>? getNotificationReassignModeList;
List<GetNotificationReassignModeList>? getNotificationReassignModeList;
List<GetPhoneNumberTypesModel>? getObjectValuesList;
GetOpenMissingSwipesList? getOpenMissingSwipesList;
List<GetOpenNotificationsList>? getOpenNotificationsList;
List<String>? getOpenNotificationsNumList;
List<String>? getOpenPeriodDatesList;
List<String>? getOrganizationsSalariesList;
List<String>? getPaymentInformationList;
List<String>? getPayslipList;
List<GetPaymentInformationList>? getPaymentInformationList;
List<GetPayslipList>? getPayslipList;
List<String>? getPerformanceAppraisalList;
List<GetPhonesNotificationBodyList>? getPhonesNotificationBodyList;
List<GetPoItemHistoryList>? getPoItemHistoryList;
@ -185,10 +207,14 @@ class GenericResponseModel {
List<String>? getShiftTypesList;
List<GetStampMsNotificationBodyList>? getStampMsNotificationBodyList;
List<GetStampNsNotificationBodyList>? getStampNsNotificationBodyList;
List<GetConcurrentProgramsModel>? getConcurrentProgramsModel;
List<GetCCPTransactionsModel>? getCCPTransactionsModel;
GetCCPOutputModel? getCCPOutputModel;
List<GetCCPDFFStructureModel>? getCCPDFFStructureModel;
List<String>? getSubordinatesAttdStatusList;
List<SubordinatesLeavesList>? getSubordinatesLeavesList;
List<String>? getSubordinatesLeavesTotalVacationsList;
List<String>? getSummaryOfPaymentList;
List<GetSummaryOfPaymentList>? getSummaryOfPaymentList;
List<String>? getSwipesList;
List<String>? getTermColsStructureList;
List<String>? getTermDffStructureList;
@ -204,12 +230,8 @@ class GenericResponseModel {
List<GetDepartmentSections>? getDepartmentSections;
List<GetPendingTransactionsFunctions>? getPendingTransactionsFunctions;
List<GetPendingTransactionsDetails>? getPendingTransactionsDetails;
List<GetConcurrentProgramsModel>? getConcurrentProgramsModel;
List<GetCCPTransactionsModel>? getCCPTransactionsModel;
GetCCPOutputModel? getCCPOutputModel;
List<GetCCPDFFStructureModel>? getCCPDFFStructureModel;
List<String>? getUserItemTypesList;
List<String>? getVacationRulesList;
List<GetVacationRulesList>? getVacationRulesList;
List<String>? getVaccinationOnHandList;
List<String>? getVaccinationsList;
List<ESERVICESVS>? getValueSetValuesList;
@ -274,7 +296,7 @@ class GenericResponseModel {
String? processTransactions;
String? registerUserNameList;
List<ReplacementList>? replacementList;
String? respondAttributesList;
List<RespondAttributesList>? respondAttributesList;
String? respondRolesList;
String? resubmitAbsenceTransactionList;
String? resubmitEITTransactionList;
@ -282,23 +304,23 @@ class GenericResponseModel {
String? sFHGetPoNotificationBodyList;
String? sFHGetPrNotificationBodyList;
String? startAbsenceApprovalProccess;
String? startAddressApprovalProcessList;
StartAddressApprovalProcess? startAddressApprovalProcessList;
String? startBasicDetApprProcessList;
String? startCeiApprovalProcess;
String? startContactApprovalProcessList;
StartEitApprovalProcess? startEitApprovalProcess;
String? startHrApprovalProcessList;
String? startPhonesApprovalProcessList;
StartPhoneApprovalProcess? startPhonesApprovalProcessList;
String? startSitApprovalProcess;
String? startTermApprovalProcessList;
String? submitAddressTransactionList;
String? submitBasicDetTransactionList;
SubmitAddressTransaction? submitAddressTransactionList;
SubmitBasicDetailsTransactionList? submitBasicDetTransactionList;
String? submitCEITransactionList;
String? submitCcpTransactionList;
String? submitContactTransactionList;
SubmitContactTransactionList? submitContactTransactionList;
SubmitEITTransactionList? submitEITTransactionList;
String? submitHrTransactionList;
String? submitPhonesTransactionList;
Map<String, dynamic>? submitPhonesTransactionList;
String? submitSITTransactionList;
String? submitTermTransactionList;
List<SubordinatesLeavesList>? subordinatesOnLeavesList;
@ -317,8 +339,8 @@ class GenericResponseModel {
String? validateAbsenceTransactionList;
ValidateEITTransactionList? validateEITTransactionList;
String? validatePhonesTransactionList;
String? vrItemTypesList;
String? wFLookUpList;
List<VrItemTypesList>? vrItemTypesList;
List<WFLookUpList>? wFLookUpList;
String? eLearningGETEMPLOYEEPROFILEList;
String? eLearningLOGINList;
String? eLearningValidateLoginList;
@ -394,6 +416,8 @@ class GenericResponseModel {
this.getCEIDFFStructureList,
this.getCEITransactionList,
this.getCcpTransactionsList,
this.getCcpTransactionsListNew,
this.getConcurrentProgramsList,
this.getContactColsStructureList,
this.getContactDetailsList,
this.getContactDffStructureList,
@ -634,7 +658,13 @@ class GenericResponseModel {
companyImageDescription = json['CompanyImageDescription'];
companyImageURL = json['CompanyImageURL'];
companyMainCompany = json['CompanyMainCompany'];
countryList = json['CountryList'];
if (json['CountryList'] != null) {
countryList = <GetCountriesListModel>[];
json['CountryList'].forEach((v) {
countryList!.add(new GetCountriesListModel.fromJson(v));
});
}
createVacationRuleList = json['CreateVacationRuleList'];
deleteAttachmentList = json['DeleteAttachmentList'];
deleteVacationRuleList = json['DeleteVacationRuleList'];
@ -662,7 +692,12 @@ class GenericResponseModel {
});
}
getAddressDffStructureList = json['GetAddressDffStructureList'];
if (json['GetAddressDffStructureList'] != null) {
getAddressDffStructureList = <GetAddressDffStructureList>[];
json['GetAddressDffStructureList'].forEach((v) {
getAddressDffStructureList!.add(new GetAddressDffStructureList.fromJson(v));
});
}
getAddressNotificationBodyList = json['GetAddressNotificationBodyList'];
if (json['GetApprovesList'] != null) {
@ -692,6 +727,13 @@ class GenericResponseModel {
getBasicDetDffStructureList!.add(new GetBasicDetDffStructureList.fromJson(v));
});
}
if (json['GetContactDffStructureList'] != null) {
getContactDffStructureList = <GetContactDffStructureList>[];
json['GetContactDffStructureList'].forEach((v) {
getContactDffStructureList!.add(new GetContactDffStructureList.fromJson(v));
});
}
if (json['GetBasicDetNtfBodyList'] != null) {
getBasicDetNtfBodyList = <GetBasicDetNtfBodyList>[];
json['GetBasicDetNtfBodyList'].forEach((v) {
@ -703,18 +745,45 @@ class GenericResponseModel {
getCEIDFFStructureList = json['GetCEIDFFStructureList'];
getCEITransactionList = json['GetCEITransactionList'];
getCcpTransactionsList = json['GetCcpTransactionsList'];
getCcpTransactionsListNew = json['GetCcpTransactionsList_New'];
getConcurrentProgramsList = json['GetConcurrentProgramsList'];
if (json['GetContactDetailsList'] != null) {
getContactDetailsList = <GetContactDetailsList>[];
json['GetContactDetailsList'].forEach((v) {
getContactDetailsList!.add(new GetContactDetailsList.fromJson(v));
});
}
if (json['GetContactColsStructureList'] != null) {
getContactColsStructureList = <GetContactColsStructureList>[];
json['GetContactColsStructureList'].forEach((v) {
getContactColsStructureList!.add(new GetContactColsStructureList.fromJson(v));
});
}
getContactColsStructureList = json['GetContactColsStructureList'];
getContactDetailsList = json['GetContactDetailsList'];
getContactDffStructureList = json['GetContactDffStructureList'];
getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]);
getCountriesList = json['GetCountriesList'];
if (json['GetCountriesList'] != null) {
getCountriesList = <GetCountriesListModel>[];
json['GetCountriesList'].forEach((v) {
getCountriesList!.add(new GetCountriesListModel.fromJson(v));
});
}
if (json['GetDayHoursTypeDetailsList'] != null) {
getDayHoursTypeDetailsList = <GetDayHoursTypeDetailsList>[];
json['GetDayHoursTypeDetailsList'].forEach((v) {
getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v));
});
}
getDeductionsList = json['GetDeductionsList'];
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
? null
@ -731,7 +800,13 @@ class GenericResponseModel {
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) {
getEmployeeAddressList = <GetEmployeeAddressList>[];
json['GetEmployeeAddressList'].forEach((v) {
@ -763,7 +838,13 @@ class GenericResponseModel {
getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList'] != null ? new GetItemCreationNtfBodyList.fromJson(json['GetItemCreationNtfBodyList']) : null;
getItemTypeNotificationsList = json['GetItemTypeNotificationsList'];
if (json['GetItemTypeNotificationsList'] != null) {
getItemTypeNotificationsList = <GetItemTypeNotificationsList>[];
json['GetItemTypeNotificationsList'].forEach((v) {
getItemTypeNotificationsList!.add(new GetItemTypeNotificationsList.fromJson(v));
});
}
getItemTypesList = json['GetItemTypesList'];
getLookupValuesList = json['GetLookupValuesList'];
getMenuEntriesList = json["GetMenuEntriesList"] == null ? null : List<GetMenuEntriesList>.from(json["GetMenuEntriesList"].map((x) => GetMenuEntriesList.fromJson(x)));
@ -784,14 +865,21 @@ class GenericResponseModel {
if (json['GetNotificationButtonsList'] != null) {
getNotificationButtonsList = <GetNotificationButtonsList>[];
json['GetNotificationButtonsList'].forEach((v) {
getNotificationButtonsList!.add(new GetNotificationButtonsList.fromJson(v));
getNotificationButtonsList!.add(GetNotificationButtonsList.fromJson(v));
});
}
if (json['GetNotificationReassignModeList'] != null) {
getNotificationReassignModeList = <GetNotificationReassignModeList>[];
json['GetNotificationReassignModeList'].forEach((v) {
getNotificationReassignModeList!.add(GetNotificationReassignModeList.fromJson(v));
});
}
if (json['GetObjectValuesList'] != null) {
getObjectValuesList = <GetPhoneNumberTypesModel>[];
json['GetObjectValuesList'].forEach((v) {
getObjectValuesList!.add(new GetPhoneNumberTypesModel.fromJson(v));
getObjectValuesList!.add(GetPhoneNumberTypesModel.fromJson(v));
});
}
@ -800,8 +888,20 @@ class GenericResponseModel {
getOpenNotificationsNumList = json['GetOpenNotificationsNumList'];
getOpenPeriodDatesList = json['GetOpenPeriodDatesList'];
getOrganizationsSalariesList = json['GetOrganizationsSalariesList'];
getPaymentInformationList = json['GetPaymentInformationList'];
getPayslipList = json['GetPayslipList'];
if (json['GetPaymentInformationList'] != null) {
getPaymentInformationList = <GetPaymentInformationList>[];
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'];
@ -857,7 +957,12 @@ class GenericResponseModel {
}
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'];
getTermColsStructureList = json['GetTermColsStructureList'];
getTermDffStructureList = json['GetTermDffStructureList'];
@ -966,7 +1071,12 @@ class GenericResponseModel {
}
getUserItemTypesList = json['GetUserItemTypesList'];
getVacationRulesList = json['GetVacationRulesList'];
if (json['GetVacationRulesList'] != null) {
getVacationRulesList = <GetVacationRulesList>[];
json['GetVacationRulesList'].forEach((v) {
getVacationRulesList!.add(GetVacationRulesList.fromJson(v));
});
}
getVaccinationOnHandList = json['GetVaccinationOnHandList'];
getVaccinationsList = json['GetVaccinationsList'];
@ -1075,7 +1185,13 @@ class GenericResponseModel {
processTransactions = json['ProcessTransactions'];
registerUserNameList = json['RegisterUserNameList'];
replacementList = json["ReplacementList"] == null ? null : List<ReplacementList>.from(json["ReplacementList"].map((x) => ReplacementList.fromJson(x)));
respondAttributesList = json['RespondAttributesList'];
if (json['RespondAttributesList'] != null) {
respondAttributesList = <RespondAttributesList>[];
json['RespondAttributesList'].forEach((v) {
respondAttributesList!.add(new RespondAttributesList.fromJson(v));
});
}
respondRolesList = json['RespondRolesList'];
resubmitAbsenceTransactionList = json['ResubmitAbsenceTransactionList'];
resubmitEITTransactionList = json['ResubmitEITTransactionList'];
@ -1083,25 +1199,29 @@ class GenericResponseModel {
sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList'];
sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList'];
startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'];
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'];
startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? new StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null;
startBasicDetApprProcessList = json['StartBasicDetApprProcessList'];
startCeiApprovalProcess = json['StartCeiApprovalProcess'];
startContactApprovalProcessList = json['StartContactApprovalProcessList'];
startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null;
startHrApprovalProcessList = json['StartHrApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'];
startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? new StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null;
startSitApprovalProcess = json['StartSitApprovalProcess'];
startTermApprovalProcessList = json['StartTermApprovalProcessList'];
submitAddressTransactionList = json['SubmitAddressTransactionList'];
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'];
submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? new SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null;
submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? new SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null;
submitCEITransactionList = json['SubmitCEITransactionList'];
submitCcpTransactionList = json['SubmitCcpTransactionList'];
submitContactTransactionList = json['SubmitContactTransactionList'];
submitContactTransactionList = json['SubmitContactTransactionList'] != null ? new SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null;
submitEITTransactionList = json['SubmitEITTransactionList'] != null ? new SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null;
submitHrTransactionList = json['SubmitHrTransactionList'];
submitPhonesTransactionList = json['SubmitPhonesTransactionList'];
submitSITTransactionList = json['SubmitSITTransactionList'];
submitTermTransactionList = json['SubmitTermTransactionList'];
@ -1129,8 +1249,18 @@ class GenericResponseModel {
validateEITTransactionList = json['ValidateEITTransactionList'] != null ? new ValidateEITTransactionList.fromJson(json['ValidateEITTransactionList']) : null;
validatePhonesTransactionList = json['ValidatePhonesTransactionList'];
vrItemTypesList = json['VrItemTypesList'];
wFLookUpList = json['WFLookUpList'];
if (json['VrItemTypesList'] != null) {
vrItemTypesList = <VrItemTypesList>[];
json['VrItemTypesList'].forEach((v) {
vrItemTypesList!.add(VrItemTypesList.fromJson(v));
});
}
if (json['WFLookUpList'] != null) {
wFLookUpList = <WFLookUpList>[];
json['WFLookUpList'].forEach((v) {
wFLookUpList!.add(new WFLookUpList.fromJson(v));
});
}
eLearningGETEMPLOYEEPROFILEList = json['eLearning_GET_EMPLOYEE_PROFILEList'];
eLearningLOGINList = json['eLearning_LOGINList'];
eLearningValidateLoginList = json['eLearning_ValidateLoginList'];
@ -1190,7 +1320,9 @@ class GenericResponseModel {
data['CompanyImageDescription'] = this.companyImageDescription;
data['CompanyImageURL'] = this.companyImageURL;
data['CompanyMainCompany'] = this.companyMainCompany;
data['CountryList'] = this.countryList;
if (this.countryList != null) {
data['CountryList'] = this.countryList!.map((v) => v.toJson()).toList();
}
data['CreateVacationRuleList'] = this.createVacationRuleList;
data['DeleteAttachmentList'] = this.deleteAttachmentList;
data['DeleteVacationRuleList'] = this.deleteVacationRuleList;
@ -1235,6 +1367,17 @@ class GenericResponseModel {
data['GetCEIDFFStructureList'] = this.getCEIDFFStructureList;
data['GetCEITransactionList'] = this.getCEITransactionList;
data['GetCcpTransactionsList'] = this.getCcpTransactionsList;
data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew;
data['GetConcurrentProgramsList'] = this.getConcurrentProgramsList;
if (this.getContactDetailsList != null) {
data['GetContactDetailsList'] = this.getContactDetailsList!.map((v) => v.toJson()).toList();
}
if (this.getContactColsStructureList != null) {
data['GetContactColsStructureList'] = this.getContactColsStructureList!.map((v) => v.toJson()).toList();
}
if (this.getContactDffStructureList != null) {
data['GetContactDffStructureList'] = this.getContactDffStructureList!.map((v) => v.toJson()).toList();
}
// data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew;
data['GetContactColsStructureList'] = this.getContactColsStructureList;
data['GetContactDetailsList'] = this.getContactDetailsList;
@ -1244,7 +1387,10 @@ class GenericResponseModel {
if (this.getDayHoursTypeDetailsList != null) {
data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList!.map((v) => v.toJson()).toList();
}
data['GetDeductionsList'] = this.getDeductionsList;
if (this.getDeductionsList != null) {
data['GetDeductionsList'] = this.getDeductionsList!.map((v) => v.toJson()).toList();
}
if (this.getDefaultValueList != null) {
data['GetDefaultValueList'] = this.getDefaultValueList!.toJson();
}
@ -1255,7 +1401,10 @@ class GenericResponseModel {
if (this.getEITTransactionList != null) {
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) {
data['GetEmployeeAddressList'] = this.getEmployeeAddressList!.map((v) => v.toJson()).toList();
}
@ -1277,7 +1426,10 @@ class GenericResponseModel {
data['GetItemCreationNtfBodyList'] = this.getItemCreationNtfBodyList!.toJson();
}
data['GetItemTypeNotificationsList'] = this.getItemTypeNotificationsList;
if (this.getItemTypeNotificationsList != null) {
data['GetItemTypeNotificationsList'] = this.getItemTypeNotificationsList!.map((v) => v.toJson()).toList();
}
data['GetItemTypesList'] = this.getItemTypesList;
data['GetLookupValuesList'] = this.getLookupValuesList;
data['GetMenuEntriesList'] = this.getMenuEntriesList;
@ -1293,15 +1445,22 @@ class GenericResponseModel {
data['GetNotificationButtonsList'] = this.getNotificationButtonsList!.map((v) => v.toJson()).toList();
}
data['GetNotificationReassignModeList'] = this.getNotificationReassignModeList;
if (getNotificationReassignModeList != null) {
data['GetNotificationReassignModeList'] = getNotificationReassignModeList!.map((v) => v.toJson()).toList();
}
data['GetObjectValuesList'] = this.getObjectValuesList;
data['GetOpenMissingSwipesList'] = this.getOpenMissingSwipesList;
data['GetOpenNotificationsList'] = this.getOpenNotificationsList;
data['GetOpenNotificationsNumList'] = this.getOpenNotificationsNumList;
data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList;
data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList;
data['GetPaymentInformationList'] = this.getPaymentInformationList;
data['GetPayslipList'] = this.getPayslipList;
if (this.getPaymentInformationList != null) {
data['GetPaymentInformationList'] = this.getPaymentInformationList!.map((v) => v.toJson()).toList();
}
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;
@ -1344,7 +1503,9 @@ class GenericResponseModel {
}
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['GetTermColsStructureList'] = this.getTermColsStructureList;
data['GetTermDffStructureList'] = this.getTermDffStructureList;
@ -1353,7 +1514,9 @@ class GenericResponseModel {
data['GetTimeCardSummaryList'] = this.getTimeCardSummaryList!.map((v) => v.toJson()).toList();
}
data['GetUserItemTypesList'] = this.getUserItemTypesList;
data['GetVacationRulesList'] = this.getVacationRulesList;
if (this.getVacationRulesList != null) {
data['GetVacationRulesList'] = this.getVacationRulesList!.map((v) => v.toJson()).toList();
}
data['GetVaccinationOnHandList'] = this.getVaccinationOnHandList;
data['GetVaccinationsList'] = this.getVaccinationsList;
if (getValueSetValuesList != null) {
@ -1438,7 +1601,10 @@ class GenericResponseModel {
data['ProcessTransactions'] = this.processTransactions;
data['RegisterUserNameList'] = this.registerUserNameList;
data['ReplacementList'] = this.replacementList;
data['RespondAttributesList'] = this.respondAttributesList;
if (respondAttributesList != null) {
data['RespondAttributesList'] = respondAttributesList!.map((v) => v.toJson()).toList();
}
data['RespondRolesList'] = this.respondRolesList;
data['ResubmitAbsenceTransactionList'] = this.resubmitAbsenceTransactionList;
data['ResubmitEITTransactionList'] = this.resubmitEITTransactionList;
@ -1458,8 +1624,14 @@ class GenericResponseModel {
data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList;
data['StartSitApprovalProcess'] = this.startSitApprovalProcess;
data['StartTermApprovalProcessList'] = this.startTermApprovalProcessList;
data['SubmitAddressTransactionList'] = this.submitAddressTransactionList;
data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList;
if (this.submitAddressTransactionList != null) {
data['SubmitAddressTransactionList'] = this.submitAddressTransactionList!.toJson();
}
if (this.submitBasicDetTransactionList != null) {
data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList!.toJson();
}
data['SubmitCEITransactionList'] = this.submitCEITransactionList;
data['SubmitCcpTransactionList'] = this.submitCcpTransactionList;
data['SubmitContactTransactionList'] = this.submitContactTransactionList;
@ -1492,13 +1664,16 @@ class GenericResponseModel {
data['VHR_IsVerificationCodeValid'] = this.vHRIsVerificationCodeValid;
data['ValidateAbsenceTransactionList'] = this.validateAbsenceTransactionList;
if (this.validateEITTransactionList != null) {
data['ValidateEITTransactionList'] = this.validateEITTransactionList!.toJson();
if (validateEITTransactionList != null) {
data['ValidateEITTransactionList'] = validateEITTransactionList!.toJson();
}
data['ValidatePhonesTransactionList'] = this.validatePhonesTransactionList;
data['VrItemTypesList'] = this.vrItemTypesList;
data['WFLookUpList'] = this.wFLookUpList;
if (vrItemTypesList != null) {
data['VrItemTypesList'] = vrItemTypesList!.map((v) => v.toJson()).toList();
}
if (wFLookUpList != null) {
data['WFLookUpList'] = wFLookUpList!.map((v) => v.toJson()).toList();
}
data['eLearning_GET_EMPLOYEE_PROFILEList'] = this.eLearningGETEMPLOYEEPROFILEList;
data['eLearning_LOGINList'] = this.eLearningLOGINList;
data['eLearning_ValidateLoginList'] = this.eLearningValidateLoginList;

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

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

@ -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,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,37 @@
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,33 @@
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,38 @@
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,38 @@
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;
}
}

@ -37,7 +37,7 @@ class PostParamsModel {
languageID = json['LanguageID'];
mobileType = json['MobileType'];
logInTokenID = json['LogInTokenID'];
payrollCodeStr = json['payrollCodeStr'];
payrollCodeStr = json['PayrollCodeStr'];
pLegislationCode = json['LegislationCodeStr'];
tokenID = json['TokenID'];
}
@ -49,7 +49,7 @@ class PostParamsModel {
data['LanguageID'] = this.languageID;
data['MobileType'] = this.mobileType;
data['LogInTokenID'] = this.logInTokenID;
data['payrollCodeStr'] = this.payrollCodeStr;
data['PayrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['TokenID'] = this.tokenID;
return data;
@ -67,7 +67,7 @@ class PostParamsModel {
data['UserName'] = this.userName;
data['P_EMAIL_ADDRESS'] = this.pEmailAddress;
data['P_SESSION_ID'] = this.pSessionId;
data['payrollCodeStr'] = this.payrollCodeStr;
data['PayrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['P_SELECTED_EMPLOYEE_NUMBER'] = this.pSelectedEmployeeNumber;
data['P_USER_NAME'] = this.pUserName;

@ -1,11 +1,12 @@
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
class GetBasicDetDffStructureList {
String? aLPHANUMERICALLOWEDFLAG;
String? aPPLICATIONCOLUMNNAME;
String? cHILDSEGMENTSVS;
Null? cHILDSEGMENTSVSSplited;
dynamic? cHILDSEGMENTSVSSplited;
String? dEFAULTTYPE;
String? dEFAULTVALUE;
String? dESCFLEXCONTEXTCODE;
@ -27,9 +28,9 @@ class GetBasicDetDffStructureList {
String? nUMBERPRECISION;
String? nUMERICMODEENABLEDFLAG;
String? pARENTSEGMENTSDV;
List<Null>? pARENTSEGMENTSDVSplited;
List<dynamic>? pARENTSEGMENTSDVSplited;
String? pARENTSEGMENTSVS;
List<Null>? pARENTSEGMENTSVSSplitedVS;
List<dynamic>? pARENTSEGMENTSVSSplitedVS;
String? rEADONLY;
String? rEQUIREDFLAG;
String? sEGMENTNAME;
@ -40,6 +41,7 @@ class GetBasicDetDffStructureList {
String? vALIDATIONTYPE;
String? vALIDATIONTYPEDSP;
GetEmployeeBasicDetailsList? userBasicDetail;
GetContactDetailsList? getContactDetailsList;
GetBasicDetDffStructureList(
{this.aLPHANUMERICALLOWEDFLAG,
@ -79,7 +81,9 @@ class GetBasicDetDffStructureList {
this.uSEDFLAG,
this.vALIDATIONTYPE,
this.vALIDATIONTYPEDSP,
this.userBasicDetail});
this.userBasicDetail,
this.getContactDetailsList
});
GetBasicDetDffStructureList.fromJson(Map<String, dynamic> json) {
aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG'];
@ -134,6 +138,7 @@ class GetBasicDetDffStructureList {
uSEDFLAG = json['USED_FLAG'];
vALIDATIONTYPE = json['VALIDATION_TYPE'];
vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP'];
}
Map<String, dynamic> toJson() {

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

@ -0,0 +1,93 @@
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
class GetContactColsStructureList {
String? aPPLICATIONCOLUMNNAME;
String? dATATYPE;
String? dISPLAYFLAG;
int? gROUPNUM;
dynamic? mAXIMUMSIZE;
String? oBJECTNAME;
String? oBJECTTYPE;
List<ObjectValuesList>? objectValuesList;
//List<dynamic>? objectValuesList;
String? rEQUIREDFLAG;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
GetContactDetailsList? getContactDetailsList;
GetContactColsStructureList(
{this.aPPLICATIONCOLUMNNAME,
this.dATATYPE,
this.dISPLAYFLAG,
this.gROUPNUM,
this.mAXIMUMSIZE,
this.oBJECTNAME,
this.oBJECTTYPE,
this.objectValuesList,
this.rEQUIREDFLAG,
this.sEGMENTPROMPT,
this.sEGMENTSEQNUM,
this.getContactDetailsList});
GetContactColsStructureList.fromJson(Map<String, dynamic> json) {
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
dATATYPE = json['DATATYPE'];
dISPLAYFLAG = json['DISPLAY_FLAG'];
gROUPNUM = json['GROUP_NUM'];
mAXIMUMSIZE = json['MAXIMUM_SIZE'];
oBJECTNAME = json['OBJECT_NAME'];
oBJECTTYPE = json['OBJECT_TYPE'];
if (json['ObjectValuesList'] != null) {
objectValuesList = <ObjectValuesList>[];
json['ObjectValuesList'].forEach((v) {
objectValuesList!.add(new ObjectValuesList.fromJson(v));
});
}
rEQUIREDFLAG = json['REQUIRED_FLAG'];
sEGMENTPROMPT = json['SEGMENT_PROMPT'];
sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['DATATYPE'] = this.dATATYPE;
data['DISPLAY_FLAG'] = this.dISPLAYFLAG;
data['GROUP_NUM'] = this.gROUPNUM;
data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE;
data['OBJECT_NAME'] = this.oBJECTNAME;
data['OBJECT_TYPE'] = this.oBJECTTYPE;
if (this.objectValuesList != null) {
data['ObjectValuesList'] =
this.objectValuesList!.map((v) => v.toJson()).toList();
}
data['REQUIRED_FLAG'] = this.rEQUIREDFLAG;
data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT;
data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM;
return data;
}
}
class ObjectValuesList {
String? cODE;
String? dESCRIPTION;
String? mEANING;
ObjectValuesList({this.cODE, this.dESCRIPTION, this.mEANING});
ObjectValuesList.fromJson(Map<String, dynamic> json) {
cODE = json['CODE'];
dESCRIPTION = json['DESCRIPTION'];
mEANING = json['MEANING'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['CODE'] = this.cODE;
data['DESCRIPTION'] = this.dESCRIPTION;
data['MEANING'] = this.mEANING;
return data;
}
}

@ -0,0 +1,54 @@
class GetContactDetailsList {
String? aPPLICATIONCOLUMNNAME;
String? dATATYPE;
String? dATEVALUE;
String? dISPLAYFLAG;
int? gROUPNUM;
dynamic? nUMBERVALUE;
String? sEGMENTPROMPT;
int? sEGMENTSEQNUM;
String? sEGMENTVALUEDSP;
String? vARCHAR2VALUE;
GetContactDetailsList(
{this.aPPLICATIONCOLUMNNAME,
this.dATATYPE,
this.dATEVALUE,
this.dISPLAYFLAG,
this.gROUPNUM,
this.nUMBERVALUE,
this.sEGMENTPROMPT,
this.sEGMENTSEQNUM,
this.sEGMENTVALUEDSP,
this.vARCHAR2VALUE});
GetContactDetailsList.fromJson(Map<String, dynamic> json) {
aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME'];
dATATYPE = json['DATATYPE'];
dATEVALUE = json['DATE_VALUE'];
dISPLAYFLAG = json['DISPLAY_FLAG'];
gROUPNUM = json['GROUP_NUM'];
nUMBERVALUE = json['NUMBER_VALUE'];
sEGMENTPROMPT = json['SEGMENT_PROMPT'];
sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM'];
sEGMENTVALUEDSP = json['SEGMENT_VALUE_DSP'];
vARCHAR2VALUE = json['VARCHAR2_VALUE'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME;
data['DATATYPE'] = this.dATATYPE;
data['DATE_VALUE'] = this.dATEVALUE;
data['DISPLAY_FLAG'] = this.dISPLAYFLAG;
data['GROUP_NUM'] = this.gROUPNUM;
data['NUMBER_VALUE'] = this.nUMBERVALUE;
data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT;
data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM;
data['SEGMENT_VALUE_DSP'] = this.sEGMENTVALUEDSP;
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data;
}
}

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

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

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

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

@ -0,0 +1,34 @@
class SubmitContactTransactionList {
String? pITEMKEY;
String? pRETURNMSG;
String? pRETURNSTATUS;
int? pTRANSACTIONID;
SubmitContactTransactionList(
{this.pITEMKEY,
this.pRETURNMSG,
this.pRETURNSTATUS,
this.pTRANSACTIONID});
SubmitContactTransactionList.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;
}
}
// if (this.submitContactTransactionList != null) {
// data['SubmitContactTransactionList'] =
// this.submitContactTransactionList!.toJson();
// }

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

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

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

@ -0,0 +1,28 @@
class GetItemTypeNotificationsList {
String? fYIFLAG;
String? nOTIFICATIONDISPLAYNAME;
String? nOTIFICATIONNAME;
String? nOTIFICATIONSUBJECT;
GetItemTypeNotificationsList(
{this.fYIFLAG,
this.nOTIFICATIONDISPLAYNAME,
this.nOTIFICATIONNAME,
this.nOTIFICATIONSUBJECT});
GetItemTypeNotificationsList.fromJson(Map<String, dynamic> json) {
fYIFLAG = json['FYI_FLAG'];
nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME'];
nOTIFICATIONNAME = json['NOTIFICATION_NAME'];
nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['FYI_FLAG'] = this.fYIFLAG;
data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME;
data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME;
data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT;
return data;
}
}

@ -0,0 +1,22 @@
class GetNotificationReassignModeList {
String? rADIOBUTTONACTION;
String? rADIOBUTTONLABEL;
int? rADIOBUTTONSEQ;
GetNotificationReassignModeList(
{this.rADIOBUTTONACTION, this.rADIOBUTTONLABEL, this.rADIOBUTTONSEQ});
GetNotificationReassignModeList.fromJson(Map<String, dynamic> json) {
rADIOBUTTONACTION = json['RADIO_BUTTON_ACTION'];
rADIOBUTTONLABEL = json['RADIO_BUTTON_LABEL'];
rADIOBUTTONSEQ = json['RADIO_BUTTON_SEQ'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['RADIO_BUTTON_ACTION'] = this.rADIOBUTTONACTION;
data['RADIO_BUTTON_LABEL'] = this.rADIOBUTTONLABEL;
data['RADIO_BUTTON_SEQ'] = this.rADIOBUTTONSEQ;
return data;
}
}

@ -0,0 +1,92 @@
class GetVacationRulesList {
String? aCTION;
String? aCTIONDISPLAY;
String? bEGINDATE;
String? eNDDATE;
int? fROMROWNUM;
String? fYIFLAG;
String? iTEMTYPE;
String? iTEMTYPEDISPLAYNAME;
String? mESSAGE;
String? nOTIFICATIONDISPLAYNAME;
String? nOTIFICATIONNAME;
String? nOTIFICATIONSUBJECT;
int? nOOFROWS;
String? rEPLACEMENTUSERNAME;
int? rOWNUM;
int? rULEID;
String? rULENAME;
String? rULESTATUS;
String? rULETIPMESSAGE;
int? tOROWNUM;
GetVacationRulesList(
{this.aCTION,
this.aCTIONDISPLAY,
this.bEGINDATE,
this.eNDDATE,
this.fROMROWNUM,
this.fYIFLAG,
this.iTEMTYPE,
this.iTEMTYPEDISPLAYNAME,
this.mESSAGE,
this.nOTIFICATIONDISPLAYNAME,
this.nOTIFICATIONNAME,
this.nOTIFICATIONSUBJECT,
this.nOOFROWS,
this.rEPLACEMENTUSERNAME,
this.rOWNUM,
this.rULEID,
this.rULENAME,
this.rULESTATUS,
this.rULETIPMESSAGE,
this.tOROWNUM});
GetVacationRulesList.fromJson(Map<String, dynamic> json) {
aCTION = json['ACTION'];
aCTIONDISPLAY = json['ACTION_DISPLAY'];
bEGINDATE = json['BEGIN_DATE'];
eNDDATE = json['END_DATE'];
fROMROWNUM = json['FROM_ROW_NUM'];
fYIFLAG = json['FYI_FLAG'];
iTEMTYPE = json['ITEM_TYPE'];
iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME'];
mESSAGE = json['MESSAGE'];
nOTIFICATIONDISPLAYNAME = json['NOTIFICATION_DISPLAY_NAME'];
nOTIFICATIONNAME = json['NOTIFICATION_NAME'];
nOTIFICATIONSUBJECT = json['NOTIFICATION_SUBJECT'];
nOOFROWS = json['NO_OF_ROWS'];
rEPLACEMENTUSERNAME = json['REPLACEMENT_USER_NAME'];
rOWNUM = json['ROW_NUM'];
rULEID = json['RULE_ID'];
rULENAME = json['RULE_NAME'];
rULESTATUS = json['RULE_STATUS'];
rULETIPMESSAGE = json['RULE_TIP_MESSAGE'];
tOROWNUM = json['TO_ROW_NUM'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ACTION'] = this.aCTION;
data['ACTION_DISPLAY'] = this.aCTIONDISPLAY;
data['BEGIN_DATE'] = this.bEGINDATE;
data['END_DATE'] = this.eNDDATE;
data['FROM_ROW_NUM'] = this.fROMROWNUM;
data['FYI_FLAG'] = this.fYIFLAG;
data['ITEM_TYPE'] = this.iTEMTYPE;
data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME;
data['MESSAGE'] = this.mESSAGE;
data['NOTIFICATION_DISPLAY_NAME'] = this.nOTIFICATIONDISPLAYNAME;
data['NOTIFICATION_NAME'] = this.nOTIFICATIONNAME;
data['NOTIFICATION_SUBJECT'] = this.nOTIFICATIONSUBJECT;
data['NO_OF_ROWS'] = this.nOOFROWS;
data['REPLACEMENT_USER_NAME'] = this.rEPLACEMENTUSERNAME;
data['ROW_NUM'] = this.rOWNUM;
data['RULE_ID'] = this.rULEID;
data['RULE_NAME'] = this.rULENAME;
data['RULE_STATUS'] = this.rULESTATUS;
data['RULE_TIP_MESSAGE'] = this.rULETIPMESSAGE;
data['TO_ROW_NUM'] = this.tOROWNUM;
return data;
}
}

@ -0,0 +1,28 @@
class RespondAttributesList {
String? aTTRIBUTEDISPLAYNAME;
String? aTTRIBUTEFORMAT;
String? aTTRIBUTENAME;
String? aTTRIBUTETYPE;
RespondAttributesList(
{this.aTTRIBUTEDISPLAYNAME,
this.aTTRIBUTEFORMAT,
this.aTTRIBUTENAME,
this.aTTRIBUTETYPE});
RespondAttributesList.fromJson(Map<String, dynamic> json) {
aTTRIBUTEDISPLAYNAME = json['ATTRIBUTE_DISPLAY_NAME'];
aTTRIBUTEFORMAT = json['ATTRIBUTE_FORMAT'];
aTTRIBUTENAME = json['ATTRIBUTE_NAME'];
aTTRIBUTETYPE = json['ATTRIBUTE_TYPE'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ATTRIBUTE_DISPLAY_NAME'] = this.aTTRIBUTEDISPLAYNAME;
data['ATTRIBUTE_FORMAT'] = this.aTTRIBUTEFORMAT;
data['ATTRIBUTE_NAME'] = this.aTTRIBUTENAME;
data['ATTRIBUTE_TYPE'] = this.aTTRIBUTETYPE;
return data;
}
}

@ -0,0 +1,18 @@
class VrItemTypesList {
String? iTEMTYPE;
String? iTEMTYPEDISPLAYNAME;
VrItemTypesList({this.iTEMTYPE, this.iTEMTYPEDISPLAYNAME});
VrItemTypesList.fromJson(Map<String, dynamic> json) {
iTEMTYPE = json['ITEM_TYPE'];
iTEMTYPEDISPLAYNAME = json['ITEM_TYPE_DISPLAY_NAME'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ITEM_TYPE'] = this.iTEMTYPE;
data['ITEM_TYPE_DISPLAY_NAME'] = this.iTEMTYPEDISPLAYNAME;
return data;
}
}

@ -0,0 +1,21 @@
class WFLookUpList {
String? lOOKUPCODE;
String? lOOKUPDESCRIPTION;
String? lOOKUPMEANING;
WFLookUpList({this.lOOKUPCODE, this.lOOKUPDESCRIPTION, this.lOOKUPMEANING});
WFLookUpList.fromJson(Map<String, dynamic> json) {
lOOKUPCODE = json['LOOKUP_CODE'];
lOOKUPDESCRIPTION = json['LOOKUP_DESCRIPTION'];
lOOKUPMEANING = json['LOOKUP_MEANING'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['LOOKUP_CODE'] = this.lOOKUPCODE;
data['LOOKUP_DESCRIPTION'] = this.lOOKUPDESCRIPTION;
data['LOOKUP_MEANING'] = this.lOOKUPMEANING;
return data;
}
}

@ -1,9 +1,11 @@
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/dashboard_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_open_notifications_list.dart';
@ -11,7 +13,6 @@ import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/widgets/Updater.dart';
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
// ignore: prefer_mixin
@ -71,7 +72,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
return ((hour * 60 * 60) + (mints * 60) + seconds);
}
update(context) {
void update(context) {
fetchAttendanceTracking(context);
// isAttendanceTrackingLoading = !isAttendanceTrackingLoading;
// isWorkListLoading = !isWorkListLoading;
@ -137,7 +138,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
//List Menu API's & Methods
fetchListMenu() async {
void fetchListMenu() async {
try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu();
Map<String, String> map = {};
@ -156,11 +157,15 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
//Menu Entries API's & Methods
fetchMenuEntries() async {
void fetchMenuEntries() async {
try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries();
getMenuEntriesList = genericResponseModel!.getMenuEntriesList;
homeMenus = parseMenues(getMenuEntriesList ?? []);
homeMenus = parseMenus(getMenuEntriesList ?? []);
if (homeMenus!.isNotEmpty) {
homeMenus!.first.menuEntiesList.insert(0, GetMenuEntriesList(requestType: "MONTHLY_ATTENDANCE", prompt: LocaleKeys.monthlyAttendance.tr()));
homeMenus!.first.menuEntiesList.add(GetMenuEntriesList(requestType: "VACATION_RULE", prompt: LocaleKeys.vacationRule.tr()));
}
isServicesMenusLoading = false;
notifyListeners();
} catch (ex) {
@ -170,21 +175,13 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
}
List<Menus> parseMenues(List<GetMenuEntriesList> getMenuEntriesList) {
List<Menus> parseMenus(List<GetMenuEntriesList> getMenuEntriesList) {
List<Menus> menus = [];
for (int i = 0; i < getMenuEntriesList.length; i++) {
if (getMenuEntriesList[i].parentMenuName!.isEmpty) {
menus.add(Menus(getMenuEntriesList[i], getMenuEntriesList.where((element) => getMenuEntriesList[i].menuName == element.parentMenuName).toList()));
}
}
// Verify Menus by printing in log
// for(int i=0;i<menus.length;i++){
// logger.i(jsonEncode(menus[i].menuEntry.prompt));
// for(int j=0;j<menus[i].menuEntiesList.length;j++){
// logger.e(menus[i].menuEntiesList[j].prompt);
// }
// }
return menus;
}

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

@ -0,0 +1,124 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/vacation_rule_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.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/vacation_rule/get_item_type_notifications_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_notification_reassign_mode_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart';
import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
class AddVacationRuleScreen extends StatefulWidget {
AddVacationRuleScreen({Key? key}) : super(key: key);
@override
_AddVacationRuleScreenState createState() {
return _AddVacationRuleScreenState();
}
}
class _AddVacationRuleScreenState extends State<AddVacationRuleScreen> {
List<VrItemTypesList>? vrItemTypesList;
List<GetItemTypeNotificationsList>? itemTypeNotificationsList;
List<GetNotificationReassignModeList>? notificationReassignModeList;
List<RespondAttributesList>? respondAttributesList;
List<WFLookUpList>? wfLookupList;
int currentStage = 0;
@override
void initState() {
super.initState();
getVacationRulesList();
}
void getVacationRulesList() async {
try {
Utils.showLoading(context);
vrItemTypesList = await VacationRuleApiClient().getVrItemTypes();
Utils.hideLoading(context);
currentStage = 1;
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void getItemTypeNotificationsList() async {
try {
Utils.showLoading(context);
//itemTypeNotificationsList = await VacationRuleApiClient().getItemTypeNotifications();
Utils.hideLoading(context);
currentStage = 2;
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
void callCombineApis() async {
try {
Utils.showLoading(context);
List results = await Future.wait([
// VacationRuleApiClient().getNotificationReassignMode(),
// VacationRuleApiClient().getRespondAttributes("", ""),
// VacationRuleApiClient().getWfLookup(P_LOOKUP_TYPE),
]);
notificationReassignModeList = results[0];
respondAttributesList = results[1];
wfLookupList = results[2];
Utils.hideLoading(context);
currentStage = 3;
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.vacationRule.tr(),
),
body: vrItemTypesList == null
? const SizedBox()
: (vrItemTypesList!.isEmpty
? Utils.getNoDataWidget(context)
: Column(
children: [
ListView(
padding: const EdgeInsets.all(21),
physics: const BouncingScrollPhysics(),
children: [],
).expanded,
DefaultButton(
currentStage == 3 ? LocaleKeys.apply.tr() : LocaleKeys.next.tr(),
() {
if (currentStage == 1) {
getItemTypeNotificationsList();
} else if (currentStage == 2) {
callCombineApis();
}
},
).insideContainer,
],
)),
);
}
}

@ -1,38 +1,36 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/scheduler.dart';
import 'package:mohem_flutter_app/api/monthlyAttendance_api_client.dart';
import 'package:intl/intl.dart';
import 'package:mohem_flutter_app/api/monthly_attendance_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:flutter/cupertino.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
import 'package:month_year_picker/month_year_picker.dart';
import 'package:month_picker_dialog/month_picker_dialog.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
class MonthlyAttendance extends StatefulWidget {
MonthlyAttendance({Key? key}) : super(key: key);
class MonthlyAttendanceScreen extends StatefulWidget {
MonthlyAttendanceScreen({Key? key}) : super(key: key);
@override
_MonthlyAttendanceState createState() {
return _MonthlyAttendanceState();
_MonthlyAttendanceScreenState createState() {
return _MonthlyAttendanceScreenState();
}
}
class _MonthlyAttendanceState extends State<MonthlyAttendance> {
// todo '@fatima' use extension methods for widgets
class _MonthlyAttendanceScreenState extends State<MonthlyAttendanceScreen> {
bool isPresent = false;
bool isAbsent = false;
bool isMissing = false;
@ -69,7 +67,6 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
}
}
Future getScheduleShiftsDetails(index, pRTPID) async {
try {
Utils.showLoading(context);
@ -138,17 +135,17 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
],
).paddingOnly(left: 21, right: 21),
18.height,
AspectRatio(aspectRatio: 333 / 270, child: calendarWidget()).paddingOnly(left: 18, right: 25),
AspectRatio(aspectRatio: 333 / 270, child: calendarWidget()).paddingOnly(left: 21, right: 21),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
optionUI(LocaleKeys.scheduleDays.tr(), "${getTimeCardSummaryList?.sCHEDULEDAYS}"),
optionUI(LocaleKeys.scheduleDays.tr(), "${getTimeCardSummaryList?.sCHEDULEDAYS != null ? getTimeCardSummaryList!.sCHEDULEDAYS : 0}"),
6.width,
optionUI(LocaleKeys.offDays.tr(), "${getTimeCardSummaryList?.oFFDAYS}"),
optionUI(LocaleKeys.offDays.tr(), "${getTimeCardSummaryList?.oFFDAYS != null ? getTimeCardSummaryList!.oFFDAYS : 0}"),
6.width,
optionUI(LocaleKeys.nonAnalyzed.tr(), "${getTimeCardSummaryList?.uNAUTHORIZEDLEAVE}"),
optionUI(LocaleKeys.nonAnalyzed.tr(), "${getTimeCardSummaryList?.uNAUTHORIZEDLEAVE != null ? getTimeCardSummaryList!.uNAUTHORIZEDLEAVE : 0}"),
6.width,
optionUI(LocaleKeys.shortageHour.tr(), "${getTimeCardSummaryList?.sHORTAGEHRS}"),
optionUI(LocaleKeys.shortageHour.tr(), "${getTimeCardSummaryList?.sHORTAGEHRS != null ? getTimeCardSummaryList!.sHORTAGEHRS : 0}"),
],
).paddingOnly(left: 21, right: 21),
35.height,
@ -189,7 +186,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
),
Container(
margin: const EdgeInsets.only(left: 5, right: 5),
child: "${LocaleKeys.present.tr()} ${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),
@ -206,7 +203,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
),
Container(
margin: const EdgeInsets.only(left: 5, right: 5),
child: "${LocaleKeys.absent.tr()} ${getTimeCardSummaryList!.aBSENTDAYS}".toText16(
child: "${LocaleKeys.absent.tr()} ${getTimeCardSummaryList?.aBSENTDAYS}".toText16(
isBold: true,
color: MyColors.backgroundBlackColor,
),
@ -288,7 +285,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
view: CalendarView.month,
showDatePickerButton: false,
controller: _calendarController,
backgroundColor: Colors.white,
headerHeight: 0,
viewNavigationMode: ViewNavigationMode.none,
todayHighlightColor: MyColors.grey3AColor,
showNavigationArrow: false,
showCurrentTimeIndicator: false,
@ -305,7 +304,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
dayFormat: 'EEE',
showTrailingAndLeadingDates: false,
showAgenda: false,
navigationDirection: MonthNavigationDirection.horizontal,
//navigationDirection: MonthNavigationDirection.vertical,
monthCellStyle: MonthCellStyle(
textStyle: TextStyle(
fontStyle: FontStyle.normal,
@ -321,81 +320,87 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
if (details.date.month == formattedDate.month && details.date.year == formattedDate.year) {
int val = details.date.day;
//check day is off
if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].dAYTYPE == 'OFF') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.greyACColor.withOpacity(.12),
shape: BoxShape.circle,
),
alignment: Alignment.center,
child: Text(
"${val}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
),
),
);
}
//check day is Present
else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
gradient: const LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
if(getDayHoursTypeDetailsList.isNotEmpty)
{
if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].dAYTYPE == 'OFF') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.greyACColor.withOpacity(.12),
shape: BoxShape.circle,
),
],
),
alignment: Alignment.center,
child: Text(
"${val}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
//check day is Absent
else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].aBSENTFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.backgroundBlackColor,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.greyA5Color,
),
),
],
),
alignment: Alignment.center,
child: Text(
"${val}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
);
}
//check day is Present
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
gradient: const LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor],
),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
//check day is Absent
else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].aBSENTFLAG == 'Y') {
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: MyColors.backgroundBlackColor,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: const Offset(0, 2),
blurRadius: 26,
color: MyColors.blackColor.withOpacity(0.100),
),
],
),
alignment: Alignment.center,
child: Text(
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
color: MyColors.white,
),
),
);
}
}
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
@ -411,7 +416,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
),
alignment: Alignment.center,
child: Text(
"${val}",
"$val",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w500,
@ -430,7 +435,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
);
}
calendarTapped(CalendarTapDetails details) async {
void calendarTapped(CalendarTapDetails details) async {
dynamic index = details.date?.day;
if (index != null) {
index = index - 1;
@ -458,8 +463,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
maxChildSize: 0.9,
expand: false,
builder: (_, controller) {
dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
return Column(
children: [
Container(
@ -485,11 +490,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(child:
"${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
Container(
child: "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
).paddingOnly(top: 26, left: 21, right: 21),
Container(
child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21,bottom: 16),
child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21, bottom: 16),
),
Center(
child: CircularStepProgressBar(
@ -540,8 +545,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color,
),
8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" !=""
? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
"${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
],
),
@ -555,7 +560,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
),
8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true),
],
),
@ -579,9 +584,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color,
),
8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" !=""
? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
:"__".toText22(color: MyColors.greenColor, isBold: true),
"${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
: "__".toText22(color: MyColors.greenColor, isBold: true),
],
),
),
@ -593,9 +598,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color,
),
8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}"!= ""
? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
:"__".toText22(color: MyColors.greenColor, isBold: true),
"${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
: "__".toText22(color: MyColors.greenColor, isBold: true),
],
),
],
@ -693,7 +698,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return meetings;
}
static getMonth(int month) {
static String getMonth(int month) {
switch (month) {
case 1:
return "January";
@ -719,36 +724,40 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return "November";
case 12:
return "December";
default:
return "";
}
}
static getMonthAr(int month){
switch (month) {
case 1:
return 'يناير';
case 2:
return ' فبراير';
case 3:
return 'مارس';
case 4:
return 'أبريل';
case 5:
return 'مايو';
case 6:
return 'يونيو';
case 7:
return 'يوليو';
case 8:
return 'أغسطس';
case 9:
return 'سبتمبر';
case 10:
return ' اكتوبر';
case 11:
return ' نوفمبر';
case 12:
return 'ديسمبر';
}
static String getMonthAr(int month) {
switch (month) {
case 1:
return 'يناير';
case 2:
return ' فبراير';
case 3:
return 'مارس';
case 4:
return 'أبريل';
case 5:
return 'مايو';
case 6:
return 'يونيو';
case 7:
return 'يوليو';
case 8:
return 'أغسطس';
case 9:
return 'سبتمبر';
case 10:
return ' اكتوبر';
case 11:
return ' نوفمبر';
case 12:
return 'ديسمبر';
default:
return "";
}
}
}

@ -0,0 +1,146 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/vacation_rule_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/vacation_rule/get_vacation_rules_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
class VacationRuleScreen extends StatefulWidget {
VacationRuleScreen({Key? key}) : super(key: key);
@override
_VacationRuleScreenState createState() {
return _VacationRuleScreenState();
}
}
class _VacationRuleScreenState extends State<VacationRuleScreen> {
List<GetVacationRulesList>? vacationRuleList;
@override
void initState() {
super.initState();
getVacationRulesList();
}
void getVacationRulesList() async {
try {
Utils.showLoading(context);
vacationRuleList = await VacationRuleApiClient().getVacationRules();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.vacationRule.tr(),
),
body: vacationRuleList == null
? const SizedBox()
: (vacationRuleList!.isEmpty
? Utils.getNoDataWidget(context)
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
itemBuilder: (cxt, int parentIndex) => Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
),
clipBehavior: Clip.antiAlias,
child: Stack(
clipBehavior: Clip.antiAlias,
children: [
Positioned(
left: -20,
top: -10,
child: Transform.rotate(
angle: 15,
child: Container(
width: 50,
height: 30,
color: getStatusColor(vacationRuleList![parentIndex].rULESTATUS!),
),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
("${vacationRuleList![parentIndex].rULENAME!} | ${vacationRuleList![parentIndex].iTEMTYPEDISPLAYNAME!}").toText16(),
4.height,
ItemDetailView(LocaleKeys.startDateT.tr(), getParsedTime(vacationRuleList![parentIndex].bEGINDATE!)),
ItemDetailView(LocaleKeys.endDateT.tr(), getParsedTime(vacationRuleList![parentIndex].eNDDATE!)),
4.height,
vacationRuleList![parentIndex].rULESTATUS!.toText12(color: getStatusColor(vacationRuleList![parentIndex].rULESTATUS!)),
],
).paddingOnly(top: 16, left: 16, right: 16, bottom: 16),
],
),
),
separatorBuilder: (cxt, index) => 12.height,
itemCount: vacationRuleList!.length)),
floatingActionButton: Container(
height: 54,
width: 54,
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
]),
),
child: const Icon(Icons.add, color: Colors.white, size: 30),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.addVacationRule);
}),
);
}
Color getStatusColor(String code) {
if (code == "SUBMIT") {
return const Color(0xff2E303A);
} else if (code == "Inactive") {
return const Color(0xffD02127);
} else if (code == "active") {
return const Color(0xff1FA269);
} else if (code == "REQUEST_INFO") {
return const Color(0xff2E303A);
} else {
return const Color(0xff2E303A);
}
}
String getParsedTime(String time) {
DateTime date = DateFormat("mm/dd/yyyy").parse(time);
return DateFormat("d MMM yyyy").format(date);
}
}

@ -0,0 +1,67 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
class BusinessCardDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RotatedBox(
quarterTurns: 1,
child: Container(
width: MediaQuery.of(context).size.height / 2,
color: Colors.white,
margin: EdgeInsets.all(20),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Image.asset(
"assets/images/logos/bn_cloud_soloution.jpg",
width: 80,
height: 80,
),
12.height,
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText20(),
],
),
),
Image.memory(
Utils.getPostBytes(AppState().memberInformationList!.businessCardQR ?? ""),
width: 100,
height: 100,
),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
1.height,
(AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false),
12.height,
(AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText12(isBold: false),
1.height,
(AppState().memberInformationList!.eMPLOYEEEMAILADDRESS ?? "").toText12(isBold: false),
1.height,
(AppState().memberInformationList!.jOBNAME ?? "").toText12(isBold: false),
],
),
],
),
),
);
}
}

@ -0,0 +1,77 @@
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/main.dart';
class EmployeeDigitialIdDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Image.asset("assets/images/bn_logo.png"),
Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Container(
width: 80,
height: 80,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: const BorderRadius.all(Radius.circular(12)),
boxShadow: [BoxShadow(color: Colors.white60, blurRadius: 10, spreadRadius: 10)],
),
clipBehavior: Clip.antiAlias,
child: Image.memory(
Utils.getPostBytes(
AppState().memberInformationList!.eMPLOYEEIMAGE ?? "",
),
fit: BoxFit.cover,
),
),
16.width,
(AppState().memberInformationList!.eMPLOYEENUMBER ?? "").toText20(),
],
),
Container(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
12.height,
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText16(),
4.height,
(AppState().memberInformationList!.pOSITIONNAME ?? "").toText12(isBold: false),
],
),
),
Image.memory(
Utils.getPostBytes(AppState().memberInformationList!.employeeQR ?? ""),
width: 160,
height: 160,
),
DefaultButton("Cancel", () {
Navigator.pop(context);
})
],
),
),
],
),
);
}
}

@ -3,7 +3,9 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
@ -13,7 +15,6 @@ import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart';
import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart';
import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
@ -29,6 +30,9 @@ class DashboardScreen extends StatefulWidget {
class _DashboardScreenState extends State<DashboardScreen> {
late DashboardProviderModel data;
final GlobalKey<ScaffoldState> _scaffoldState = GlobalKey();
int currentIndex = 0;
@override
void initState() {
super.initState();
@ -50,276 +54,344 @@ class _DashboardScreenState extends State<DashboardScreen> {
List<String> namesD = ["Nostalgia Perfume Perfume", "Al Nafoura", "AlJadi", "Nostalgia Perfume"];
final GlobalKey<ScaffoldState> _key = GlobalKey(); //
return Scaffold(
key: _scaffoldState,
body: Column(
children: [
Row(
children: [
Builder(builder: (context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
CircularAvatar(
width: 34,
height: 34,
url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png",
key: _scaffoldState,
body: Column(
children: [
Row(
children: [
Builder(builder: (context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Image.memory(
Utils.getPostBytes(
AppState().memberInformationList!.eMPLOYEEIMAGE ?? "",
),
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()
],
),
width: 34,
height: 34,
fit: BoxFit.cover,
).circle(50),
// CircularAvatar(
// width: 34,
// height: 34,
// url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png",
// ),
8.width,
SvgPicture.asset("assets/images/side_nav.svg"),
],
).onPress(() {
_scaffoldState.currentState!.openDrawer();
});
}),
Image.asset("assets/images/logos/main_mohemm_logo.png", width: 134, height: 28).expanded,
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),
),
)
],
),
SizedBox(
width: 36,
height: 36,
child: Stack(
alignment: Alignment.centerLeft,
).onPress(() async {
await Navigator.pushNamed(context, AppRoutes.announcements);
})
],
).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SvgPicture.asset("assets/images/announcements.svg"),
Positioned(
right: 0,
top: 0,
child: Container(
padding: const EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)),
child: "3".toText12(color: Colors.white),
),
)
],
),
).onPress(() async {
// data.update(context);
await Navigator.pushNamed(context, AppRoutes.announcements);
})
],
).paddingOnly(left: 21, right: 21, top: 48, bottom: 7),
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
"Mahmoud Shrouf".toText24(isBold: true),
16.height,
Row(
children: [
Expanded(
child: AspectRatio(
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(
LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color),
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true),
16.height,
Row(
children: [
Expanded(
child: AspectRatio(
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: [
Expanded(
child: Column(
LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true),
if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white),
if (model.isTimeRemainingInSeconds != 0)
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.checkIn.tr().toText12(color: Colors.white),
(model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
.toString()
.toText14(color: Colors.white, isBold: true),
4.height,
9.height,
CountdownTimer(
endTime: model.endTime,
onEnd: null,
endWidget: "00:00:00".toText14(color: Colors.white, isBold: true),
textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold),
),
LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white),
9.height,
ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(20),
),
child: LinearProgressIndicator(
value: model.progress,
minHeight: 8,
valueColor: const AlwaysStoppedAnimation<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"),
),
],
),
],
),
],
),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.todayAttendance);
}))
.animatedSwither();
},
),
).paddingOnly(top: 12, right: 15, left: 12),
),
Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.checkIn.tr().toText12(color: Colors.white),
(model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn)
.toString()
.toText14(color: Colors.white, isBold: true),
4.height,
],
).paddingOnly(left: 12),
),
Container(
width: 45,
height: 45,
padding: const EdgeInsets.only(left: 14, right: 14),
decoration: const BoxDecoration(
color: Color(0xff259EA4),
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(15),
),
),
child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"),
),
],
),
],
),
],
),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.todayAttendance);
}))
.animatedSwither();
},
),
),
9.width,
Expanded(
child: MenusWidget(),
),
],
),
],
).paddingOnly(left: 21, right: 21, top: 7),
ServicesWidget(),
8.height,
Container(
width: double.infinity,
padding: EdgeInsets.only(top: 31),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
),
9.width,
Expanded(
child: MenusWidget(),
),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.offers.tr().toText12(),
Row(
children: [
LocaleKeys.discounts.tr().toText24(isBold: true),
6.width,
Container(
padding: const EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration(
color: MyColors.yellowColor,
borderRadius: BorderRadius.circular(10),
),
child: LocaleKeys.newString.tr().toText10(isBold: true)),
],
),
],
),
),
LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true),
],
).paddingOnly(left: 21, right: 21),
SizedBox(
height: 103 + 33,
child: ListView.separated(
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
scrollDirection: Axis.horizontal,
itemBuilder: (cxt, index) {
return SizedBox(
width: 73,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 73,
height: 73,
],
).paddingOnly(left: 21, right: 21, top: 7),
ServicesWidget(),
8.height,
Container(
width: double.infinity,
padding: EdgeInsets.only(top: 31),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.offers.tr().toText12(),
Row(
children: [
LocaleKeys.discounts.tr().toText24(isBold: true),
6.width,
Container(
padding: const EdgeInsets.only(left: 8, right: 8),
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(100),
),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
color: MyColors.yellowColor,
borderRadius: BorderRadius.circular(10),
),
child: ClipRRect(
borderRadius: const BorderRadius.all(
Radius.circular(50),
),
child: Image.network(
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
fit: BoxFit.cover,
),
child: LocaleKeys.newString.tr().toText10(isBold: true)),
],
),
],
),
),
LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true),
],
).paddingOnly(left: 21, right: 21),
SizedBox(
height: 103 + 33,
child: ListView.separated(
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.only(left: 21, right: 21, top: 13),
scrollDirection: Axis.horizontal,
itemBuilder: (cxt, index) {
return SizedBox(
width: 73,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 73,
height: 73,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(100),
),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
),
4.height,
Expanded(
child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
child: ClipRRect(
borderRadius: const BorderRadius.all(
Radius.circular(50),
),
child: Image.network(
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
fit: BoxFit.cover,
),
),
],
),
);
},
separatorBuilder: (cxt, index) => 8.width,
itemCount: 6),
),
],
),
)
],
),
),
4.height,
Expanded(
child: namesD[6 % (index + 1)].toText12(isCenter: true, maxLine: 2),
),
],
),
);
},
separatorBuilder: (cxt, index) => 8.width,
itemCount: 6),
),
],
),
)
],
),
),
)
],
),
drawer: SafeArea(
child: AppDrawer(),
),
bottomNavigationBar: SizedBox(
height: 70,
child: BottomNavigationBar(
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: SvgPicture.asset(
"assets/icons/home.svg",
color: currentIndex == 0 ? MyColors.grey3AColor : MyColors.grey98Color,
).paddingAll(4),
label: LocaleKeys.home.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(
"assets/icons/create_req.svg",
color: currentIndex == 1 ? MyColors.grey3AColor : MyColors.grey98Color,
).paddingAll(4),
label: LocaleKeys.createRequest.tr(),
),
BottomNavigationBarItem(
icon: Stack(
alignment: Alignment.centerLeft,
children: [
SvgPicture.asset(
"assets/icons/work_list.svg",
color: currentIndex == 2 ? MyColors.grey3AColor : MyColors.grey98Color,
).paddingAll(4),
Consumer<DashboardProviderModel>(
builder: (cxt, data, child) {
if (data.workListCounter == 0) {
return const SizedBox();
}
return Positioned(
right: 0,
top: 0,
child: Container(
padding: const EdgeInsets.only(left: 4, right: 4),
alignment: Alignment.center,
decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)),
child: data.workListCounter.toString().toText10(color: Colors.white),
),
);
},
),
],
),
)
label: LocaleKeys.workList.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(
"assets/icons/item_for_sale.svg",
color: currentIndex == 3 ? MyColors.grey3AColor : MyColors.grey98Color,
).paddingAll(4),
label: LocaleKeys.itemsForSale.tr(),
),
],
currentIndex: currentIndex,
selectedLabelStyle: const TextStyle(fontSize: 10, color: MyColors.grey3AColor, fontWeight: FontWeight.w600),
unselectedLabelStyle: const TextStyle(fontSize: 10, color: MyColors.grey98Color, fontWeight: FontWeight.w600),
type: BottomNavigationBarType.fixed,
selectedItemColor: MyColors.grey3AColor,
backgroundColor: MyColors.backgroundColor,
selectedIconTheme: const IconThemeData(color: MyColors.grey3AColor, size: 28),
unselectedIconTheme: const IconThemeData(color: MyColors.grey98Color, size: 28),
onTap: (int index) {
currentIndex = index;
setState(() {});
},
),
drawer: SafeArea(child: AppDrawer()));
),
);
}
}

@ -1,5 +1,6 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
@ -13,14 +14,18 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:mohem_flutter_app/widgets/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:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart';
import 'package:wifi_iot/wifi_iot.dart';
import '../../provider/dashboard_provider_model.dart';
import '../../widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart';
class TodayAttendanceScreen extends StatefulWidget {
TodayAttendanceScreen({Key? key}) : super(key: key);
@ -34,7 +39,7 @@ class TodayAttendanceScreen extends StatefulWidget {
class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
ValueNotifier<dynamic> result = ValueNotifier(null);
late DashboardProviderModel data;
bool isNfcEnabled = true, isNfcLocationEnabled = false, isQrEnabled = false, isQrLocationEnabled = false, isWifiEnabled = false, isWifiLocationEnabled = false;
bool isNfcEnabled = false, isNfcLocationEnabled = false, isQrEnabled = false, isQrLocationEnabled = false, isWifiEnabled = false, isWifiLocationEnabled = false;
@override
void initState() {
@ -129,7 +134,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
textStyle: TextStyle(color: Colors.white, fontSize: 32, letterSpacing: -1.92, fontWeight: FontWeight.bold, height: 1),
),
19.height,
"Shift Time".tr().toText12(color: MyColors.greyACColor),
LocaleKeys.shiftTime.tr().tr().toText12(color: MyColors.greyACColor),
(model.attendanceTracking!.pShtName ?? "00:00:00").toString().toText22(color: Colors.white, isBold: true),
],
),
@ -157,15 +162,15 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
children: [
Row(
children: [
commonStatusView("Check In", (model.attendanceTracking!.pSwipeIn) ?? "- - : - -"),
commonStatusView("Check Out", (model.attendanceTracking!.pSwipeOut) ?? "- - : - -")
commonStatusView(LocaleKeys.checkIn.tr(), (model.attendanceTracking!.pSwipeIn) ?? "- - : - -"),
commonStatusView(LocaleKeys.checkOut.tr(), (model.attendanceTracking!.pSwipeOut) ?? "- - : - -")
],
),
21.height,
Row(
children: [
commonStatusView("Late In", (model.attendanceTracking!.pLateInHours) ?? "- - : - -"),
commonStatusView("Regular", (model.attendanceTracking!.pScheduledHours) ?? "- - : - -")
commonStatusView(LocaleKeys.lateIn.tr(), (model.attendanceTracking!.pLateInHours) ?? "- - : - -"),
commonStatusView(LocaleKeys.regular.tr(), (model.attendanceTracking!.pScheduledHours) ?? "- - : - -")
],
),
],
@ -180,9 +185,9 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
"Mark".tr().toText12(),
"Attendance".tr().toText24(),
"Select the method to mark the attendance".tr().toText12(color: Color(0xff535353)),
LocaleKeys.mark.tr().tr().toText12(),
LocaleKeys.attendance.tr().tr().toText24(),
LocaleKeys.selectMethodOfAttendance.tr().tr().toText12(color: Color(0xff535353)),
24.height,
GridView(
physics: const NeverScrollableScrollPhysics(),
@ -190,25 +195,39 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
padding: EdgeInsets.zero,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: <Widget>[
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performNfcAttendance(model);
}
}),
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performWifiAttendance(model);
}
// connectWifi();
}),
if (isNfcEnabled)
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performNfcAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performNfcAttendance(model);
}
}),
if (isWifiEnabled)
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performWifiAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performWifiAttendance(model);
}
// connectWifi();
}),
if (isQrEnabled)
attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
if (isQrLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng) {
performQrCodeAttendance(model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
});
} else {
performQrCodeAttendance(model);
}
// performQrCodeAttendance(model);
}),
],
)
],
@ -273,6 +292,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
} else {
print("wifi not location enabled");
}
bool v = await WiFiForIoTPlugin.connect(AppState().mohemmWifiSSID ?? "", password: AppState().mohemmWifiPassword ?? "", joinOnce: true, security: NetworkSecurity.WPA, withInternet: false);
if (v) {
await WiFiForIoTPlugin.forceWifiUsage(true);
@ -292,7 +312,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
});
}
} else {
Utils.confirmDialog(context, "Please come near to HMG wifi");
Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr());
}
}
@ -302,6 +322,29 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
return v;
}
Future<void> performQrCodeAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
var qrCodeValue = await Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => QrScannerDialog(),
),
);
if(qrCodeValue!=null){
print("qrCode: " + qrCodeValue);
Utils.showLoading(context);
try {
GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue);
bool status = await model.fetchAttendanceTracking(context);
Utils.hideLoading(context);
} catch (ex) {
print(ex);
Utils.hideLoading(context);
Utils.handleException(ex, context, (msg) {
Utils.confirmDialog(context, msg);
});
}
}
}
Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
@ -318,7 +361,11 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(child: SvgPicture.asset(image)),
Expanded(
child: SvgPicture.asset(
image,
color: Colors.white,
)),
title.toText17(isBold: true, color: Colors.white),
],
),

@ -1,6 +1,8 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/landing/widget/drawer_item.dart';
class AppDrawer extends StatefulWidget {
@ -20,53 +22,177 @@ class _AppDrawerState extends State<AppDrawer> {
),
Expanded(
child: ListView(padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [
const Divider(),
Divider(),
InkWell(
child: const DrawerItem(
'My Profile',
child: DrawerItem(
//'My Profile',
LocaleKeys.myProfile.tr(),
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.profile);
}),
const Divider(),
InkWell(
child: const DrawerItem(
'Mowadhafhi',
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.mowadhafhi);
}),
const Divider(),
InkWell(
child: const DrawerItem(
'Pending Transactions',
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.pendingTransactions);
}),
const Divider(),
InkWell(
child: const DrawerItem(
'My Requests',
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.myRequests);
})
Divider(),
InkWell(
child: DrawerItem(
// 'Mowadhafhi',
LocaleKeys.mowadhafhi.tr(),
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.mowadhafhi);
},
),
Divider(),
InkWell(
child: DrawerItem(
LocaleKeys.pendingTransactions.tr(),
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.pendingTransactions);
},
),
Divider(),
InkWell(
child: const DrawerItem(
'My Requests',
icon: Icons.person,
color: Colors.grey,
),
onTap: () {
drawerNavigator(context, AppRoutes.myRequests);
})
]))
])));
}
drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName);
}
// ,
//
// )
//
// ,
//
// InkWell
//
// (
//
// child
//
// :
//
// DrawerItem
//
// (
//
// LocaleKeys.employeeDigitalID.tr
//
// (
//
// )
//
// ,
//
// icon
//
// :
//
// Icons.insert_drive_file_outlined
//
// ,
//
// color
//
// :
//
// Colors.grey
//
// ,
//
// )
//
// ,
//
// onTap
//
// : () {
// showMDialog(context, child: EmployeeDigitialIdDialog());
// },
//
// )
//
// ,
//
// Divider()
//
// ,
//
// InkWell
//
// (
//
// child
//
// :
//
// DrawerItem
//
// (
//
// LocaleKeys.businessCard.tr
//
// (
//
// )
//
// ,
//
// icon
//
// :
//
// Icons.insert_drive_file_outlined
//
// ,
//
// color
//
// :
//
// Colors.grey
//
// ,
//
// )
//
// ,
//
// onTap
//
// : () {
// showMDialog(context, child: BusinessCardDialog());
// },
// ),
// ],
// ),
// )
// ],
// )
//
// ,
//
// )
//
// ,
//
// );
}
void drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName);
}
String capitalizeOnlyFirstLater(String text) {

@ -32,7 +32,7 @@ class _DrawerItemState extends State<DrawerItem> {
if (widget.assetLink == null)
Icon(
widget.icon,
color: widget.color ?? Colors.black87,
color: widget.color,
size: 25,
),
Expanded(

@ -1,7 +1,6 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
@ -9,6 +8,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
@ -18,9 +18,9 @@ class ServicesWidget extends StatelessWidget {
List<String> namesT = [LocaleKeys.monthlyAttendance.tr(), LocaleKeys.workFromHome.tr(), LocaleKeys.ticketRequest.tr(), LocaleKeys.monthlyAttendance.tr()];
List<String> iconT = [
"assets/images/monthly_attendance.svg",
"assets/images/dynamic_screens.svg",
"assets/images/monthly_attendance.svg",
"assets/images/ticket_request.svg",
"assets/images/ticket_request.svg",
"assets/images/dynamic_screens.svg",
"assets/images/dynamic_screens.svg",
"assets/images/dynamic_screens.svg",
"assets/images/dynamic_screens.svg",
@ -109,17 +109,26 @@ class ServicesWidget extends StatelessWidget {
void handleOnPress(context, GetMenuEntriesList menuEntry) {
var pro = Provider.of<DashboardProviderModel>(context, listen: false);
List<GetMenuEntriesList>? menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && element.menuEntryType == "FUNCTION").toList();
if (menuEntry.requestType == "MONTHLY_ATTENDANCE") {
Navigator.pushNamed(context, AppRoutes.monthlyAttendance);
return;
} else if (menuEntry.requestType == "VACATION_RULE") {
Navigator.pushNamed(context, AppRoutes.vacationRule);
return;
}
List<GetMenuEntriesList> menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && element.menuEntryType == "FUNCTION").toList() ?? [];
menuEntry.icon = "";
print(menuEntry.toJson());
Navigator.pushNamed(context, AppRoutes.myAttendance, arguments: menuList ?? []);
return;
if (menuEntry.menuName == "HMG_OTL_SS" || menuEntry.menuName == "HMG_PT_OTL_SS") {
Navigator.pushNamed(context, AppRoutes.myAttendance);
if (menuList.isEmpty) {
if (menuEntry.requestType == "EIT") {
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menuEntry.prompt!, menuEntry.functionName!));
} else if (menuEntry.requestType == "PAYSLIP") {
Navigator.pushNamed(context, AppRoutes.monthlyPaySlip);
}
} else {
Utils.showToast("In Progress");
Navigator.pushNamed(context, AppRoutes.myAttendance, arguments: menuList);
}
return;
}
String firstWord(String value) {

@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
@ -25,8 +26,8 @@ class RequestSubmitScreenParams {
String title;
int transactionId;
String pItemId;
RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId);
String approvalFlag;
RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId, this.approvalFlag);
}
class RequestSubmitScreen extends StatefulWidget {
@ -83,12 +84,44 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
});
}
await MyAttendanceApiClient().addAttachment(list);
await MyAttendanceApiClient().startEitApprovalProcess(
"SUBMIT",
comments.text,
params!.pItemId,
params!.transactionId,
);
if (params!.approvalFlag == 'phone_numbers') {
await ProfileApiClient().startPhoneApprovalProcess(
LocaleKeys.submit.tr(),
comments.text,
params!.pItemId,
params!.transactionId,
);
} else if (params!.approvalFlag == 'address') {
await ProfileApiClient().startAddressApprovalProcess(
"SUBMIT",
comments.text,
params!.pItemId,
params!.transactionId,
);
} else if (params!.approvalFlag == 'family_member') {
await ProfileApiClient().getApproves(
LocaleKeys.submit.tr(),
comments.text,
params!.transactionId!.toInt(),
params!.pItemId.toString(),
);
} else if (params!.approvalFlag == 'basicDetails') {
await ProfileApiClient().startBasicDetailsApprovalProcess(
"SUBMIT",
comments.text,
params!.pItemId,
params!.transactionId,
);
} else {
await MyAttendanceApiClient().startEitApprovalProcess(
LocaleKeys.submit.tr(),
comments.text,
params!.pItemId,
params!.transactionId,
);
}
Utils.hideLoading(context);
Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true);
Navigator.of(context).popUntil((route) {
@ -124,7 +157,7 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
padding: const EdgeInsets.all(21).copyWith(top: 14),
physics: const BouncingScrollPhysics(),
children: [
attachmentView("Attachments"),
attachmentView(LocaleKeys.attachments.tr(),),
14.height,
InputWidget(
LocaleKeys.comments.tr(),
@ -214,7 +247,7 @@ class _RequestSubmitScreenState extends State<RequestSubmitScreen> {
children: [
title.toText16().expanded,
6.width,
SimpleButton("Add", () async {
SimpleButton(LocaleKeys.add.tr(), () async {
FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true);
if (result != null) {
attachmentFiles = attachmentFiles + result.paths.map((path) => File(path!)).toList();

@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dyanmic_forms/get_set_values_request_model.dart';
@ -63,26 +62,37 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (e.fORMATTYPE == "X") {
// for date format type, date format is changed
tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? "";
tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (tempVar.isNotEmpty) {
DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date);
if (!tempVar.contains("/")) {
DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date);
}
}
}
// else if (e.fORMATTYPE == "N") {
// // for date format type, date format is changed
// tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
// print("------------------------sEGMENTNAME:${e.sEGMENTNAME}");
// print("------------------------tempVar:$tempVar");
// if (tempVar.isNotEmpty) {
// if (!tempVar.contains("/")) {
// DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
// tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date);
// }
// }
// }
return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson();
}).toList();
values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson());
values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson());
values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson());
values.forEach((element) {
print(element);
});
genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values);
SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values);
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(descFlexConTextTitle, submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!));
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit'));
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
@ -92,7 +102,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
String dESCFLEXCONTEXTCODE = "";
String descFlexConTextTitle = "";
void calGetValueSetValues(GetEITDFFStructureList structureList) async {
Future calGetValueSetValues(GetEITDFFStructureList structureList) async {
try {
Utils.showLoading(context);
String segmentId = structureList.cHILDSEGMENTSVS!;
@ -120,28 +130,32 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
}
void getDefaultValues(GetEITDFFStructureList structureList) async {
if ((structureList.cHILDSEGMENTSDVSplited?.length ?? 0) < 1) {
return;
}
Future getDefaultValues(GetEITDFFStructureList structureList) async {
try {
Utils.showLoading(context);
for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) {
String segmentId = structureList.cHILDSEGMENTSDVSplited![i];
GetEITDFFStructureList? reqObj = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
List<PARENTSEGMENTSDVSplited> parentRequired = reqObj.pARENTSEGMENTSDVSplited ?? [];
GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
List<PARENTSEGMENTSDVSplited> parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? [];
List<PARENTSEGMENTSVSSplitedVS> parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? [];
List<GetEITDFFStructureList> filteredList =
getEitDffStructureList!.where((outerElement) => parentRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList();
getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList();
List<Map<String, dynamic>> values = filteredList
.map((e) => GetSetValuesRequestModel(
sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME)
.toJson())
.toList();
ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values);
int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
getEitDffStructureList![index].eSERVICESDV = defaultValue;
List<Map<String, dynamic>> getSetList = getDefaultValuesIonicLogic(parent);
if (getSetList.isNotEmpty) {
ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList);
int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
getEitDffStructureList![index].eSERVICESDV = defaultValue;
}
}
await Future.delayed(const Duration(seconds: 1));
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -150,6 +164,221 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
}
// List<Map<String, dynamic>> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) {
// let descFlexName: any = "";
// let descFlexContextCode: any = "";
// let parentValue: any = [];
// let ParentsList: any = [];
// let parentVal: any = null;
// let dependenciesList: any = [];
// let validationType: string = "";
// }
List<Map<String, dynamic>> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) {
try {
Utils.showLoading(context);
List<PARENTSEGMENTSVSSplitedVS> parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? [];
List<PARENTSEGMENTSDVSplited> parentsList = structureElement.pARENTSEGMENTSDVSplited ?? [];
List<Map<String, dynamic>> dependenciesList = [];
String? parentVal;
bool isStandardDate = false;
bool isStandardTimeDate = false;
bool isStandardTime = false;
bool isHidden = false;
bool isReadOnlyList = false;
bool isSelectElement = false;
// isStandardDate = this.isStandardDate(obj);
// isStandardTimeDate = this.isStandardDateTime(obj);
// isStandardTime = this.isStandardTime(obj);
if (structureElement.dISPLAYFLAG == "N") isHidden = true;
if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") {
isReadOnlyList = true;
}
if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") {
isSelectElement = true;
}
if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) {
List parValue = getDependenciesParams(parentValue);
if (parValue.isNotEmpty) {
parentVal = parValue.first.ID_COLUMN_NAME;
}
if (parentVal == null) {
return [];
}
}
if (parentsList.isNotEmpty) {
if (parentValue.isNotEmpty) {
parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList();
// parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())));
// parentsList.concat(parentValue);
}
dependenciesList = getDependenciesParams(parentsList);
}
return dependenciesList;
// for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) {
// String segmentId = structureList.cHILDSEGMENTSDVSplited![i];
// print("segmentId:$segmentId");
// print("segmentName:${structureList.sEGMENTNAME}");
// GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
// List<PARENTSEGMENTSDVSplited> parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? [];
// List<PARENTSEGMENTSVSSplitedVS> parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? [];
//
// List<GetEITDFFStructureList> filteredList =
// getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList();
//
// List<Map<String, dynamic>> values = filteredList
// .map((e) => GetSetValuesRequestModel(
// sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME)
// .toJson())
// .toList();
// print("values:$values");
//
// ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values);
// int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
// getEitDffStructureList![index].eSERVICESDV = defaultValue;
// }
// Utils.hideLoading(context);
// setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
return [];
}
}
List<Map<String, dynamic>> getDependenciesParams(parentsList) {
List<Map<String, dynamic>> parentArr = [];
for (int i = 0; i < parentsList.length; i++) {
for (int j = 0; j < (getEitDffStructureList?.length ?? 0); j++) {
if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].name) {
if (getEitDffStructureList![j].dISPLAYFLAG != "N") {
if (getEitDffStructureList![j].vALIDATIONTYPE == "N") {
String? idColName;
String? val;
if (getEitDffStructureList![j].fORMATTYPE == "Y" || getEitDffStructureList![j].fORMATTYPE == "I") {
//standard date time or //time
val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME;
// val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME;
// var elem = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLDivElement;
if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") {
//alert(parentsList[i].Name +" Is required");
return [];
// return false;
}
idColName = val;
if (getEitDffStructureList![j].fORMATTYPE == "Y") {
// if (idColName!.contains("/")) {
// DateTime date = DateFormat('yyyy/MM/dd').parse(idColName);
// idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day));
// } else {
// DateTime date = DateFormat('yyyy-MM-dd').parse(idColName);
// idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day));
// }
idColName = formatStandardDate(idColName!);
}
} else {
val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME;
// val = (document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLInputElement).value;
if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") {
//alert(parentsList[i].Name +" Is required");
return [];
}
idColName = val;
if (getEitDffStructureList![j].fORMATTYPE == "X") {
idColName = formatDateNew(idColName!);
// commenting to test
// DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!);
// idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date);
}
}
parentArr.add(GetSetValuesRequestModel(
sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME,
vALUECOLUMNNAME: val,
dESCRIPTION: "",
iDCOLUMNNAME: idColName,
fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME,
).toJson());
break;
} else {
if (getEitDffStructureList![j].rEADONLY != "Y") {
var data = getEitDffStructureList![j].eSERVICESDV;
// let x = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLSelectElement;
String? text = data?.pIDCOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].text : "";
String? val = data?.pVALUECOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].value : null;
if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") {
//alert(parentsList[i].Name +" Is required");
return [];
} else {}
text ??= "";
parentArr.add(GetSetValuesRequestModel(
sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME,
vALUECOLUMNNAME: val,
dESCRIPTION: "",
iDCOLUMNNAME: text,
fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME,
).toJson());
break;
} else {
var data = getEitDffStructureList![j].eSERVICESDV;
String? text = data?.pVALUECOLUMNNAME;
String? val = data?.pIDCOLUMNNAME;
if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") {
//alert(parentsList[i].Name +" Is required");
return [];
} else {}
text ??= "";
parentArr.add(GetSetValuesRequestModel(
sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME,
vALUECOLUMNNAME: text,
dESCRIPTION: "",
iDCOLUMNNAME: val,
fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME,
).toJson());
//break;
}
}
} else {
var data = getEitDffStructureList![j].eSERVICESDV;
String? text = data?.pVALUECOLUMNNAME;
String? val = data?.pIDCOLUMNNAME;
if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") {
//alert(parentsList[i].Name +" Is required");
return [];
} else {}
text ??= "";
parentArr.add(GetSetValuesRequestModel(
sEGMENTNAME: getEitDffStructureList![j].sEGMENTNAME,
vALUECOLUMNNAME: text,
dESCRIPTION: "",
iDCOLUMNNAME: val,
fLEXVALUESETNAME: getEitDffStructureList![j].fLEXVALUESETNAME,
).toJson());
// break;
}
}
}
}
return parentArr;
}
@override
void dispose() {
super.dispose();
@ -172,7 +401,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
(getEitDffStructureList == null
? const SizedBox()
: (getEitDffStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
? Utils.getNoDataWidget(context)
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
@ -206,9 +435,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
model.fieldAnswer = text;
if (model.eSERVICESDV == null) {
model.eSERVICESDV = ESERVICESDV();
}
model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV!.pIDCOLUMNNAME = text;
},
).paddingOnly(bottom: 12);
@ -220,19 +447,18 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isInputTypeNum: true,
onChange: (text) {
model.fieldAnswer = text;
if (model.eSERVICESDV == null) {
model.eSERVICESDV = ESERVICESDV();
}
model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV!.pIDCOLUMNNAME = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "X") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? "");
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
if (displayText.contains(" 00:00:00")) {
displayText = displayText.replaceAll(" 00:00:00", "");
}
if (!displayText.contains("-")) {
if (displayText.contains("/")) {
displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
}
}
@ -250,38 +476,43 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
}
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
String dateString = date.toString().split(' ').first;
// DateTime date1 = DateTime(date.year, date.month, date.day);
// getEitDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv;
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy/MM/dd HH:MM:SS').format(date1),
pIDCOLUMNNAME: formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy/MM/dd HH:MM:SS').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "Y") {
String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? "");
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
if (displayText.contains(" 00:00:00")) {
displayText = displayText.replaceAll(" 00:00:00", "");
}
if (!displayText.contains("-")) {
displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
}
displayText = reverseFormatDate(displayText);
// if (displayText.contains(" 00:00:00")) {
// displayText = displayText.replaceAll(" 00:00:00", "");
// }
// if (!displayText.contains("-")) {
// displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText));
// }
}
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
@ -295,35 +526,40 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
if (tempDate.contains("00:00:00")) {
tempDate = tempDate.replaceAll("00:00:00", '').trim();
}
selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate);
if (tempDate.contains("/")) {
selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate);
} else {
selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate);
}
} else {
selectedDate = DateTime.parse(getEitDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
}
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
String dateString = date.toString().split(' ').first;
// getEitDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv;
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy/MM/dd HH:MM:SS').format(date1),
pIDCOLUMNNAME: formatDate(dateString),
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd HH:MM:SS').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
} else {
eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
}
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
if (getEitDffStructureList![index].isDefaultTypeIsCDPS) {
calGetValueSetValues(model);
} else {}
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -339,18 +575,22 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isReadOnly: model.rEADONLY == "Y",
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
if (model.rEADONLY != "Y")
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popipIndex) {
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![popipIndex].dEFAULTVALUE,
pRETURNSTATUS: "null", //getEitDffStructureList![popipIndex].dEFAULTVALUE,
pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME);
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
});
}
@ -369,18 +609,19 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isReadOnly: model.rEADONLY == "Y",
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
if (model.rEADONLY != "Y")
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(value: i, child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!)),
],
onSelected: (int popipIndex) {
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![popipIndex].dEFAULTVALUE,
pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME);
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", pRETURNSTATUS: "null", pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME);
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
});
}
@ -417,17 +658,20 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
}
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
String dateString = date.toString().split(' ').first;
getEitDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
pIDCOLUMNNAME: dateString,
pRETURNMSG: "null",
pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE,
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? DateFormat('yyyy-MM-dd hh:mm:ss').format(date) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
pVALUECOLUMNNAME: getEitDffStructureList![index].isDefaultTypeIsCDPS ? reverseFormatStandardDate(formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date));
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -453,8 +697,11 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
ESERVICESDV eservicesdv = ESERVICESDV(pIDCOLUMNNAME: time, pRETURNMSG: "null", pRETURNSTATUS: getEitDffStructureList![index].dEFAULTVALUE, pVALUECOLUMNNAME: time);
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -467,7 +714,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
).objectContainerView();
}
DateTime selectedDate = DateTime.now();
DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day);
Future<DateTime> _selectDate(BuildContext context) async {
DateTime time = selectedDate;
@ -496,6 +743,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
time = picked;
}
}
time = DateTime(time.year, time.month, time.day);
return time;
}
@ -539,4 +787,59 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
return time;
}
String reverseFormatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
formattedDate = formattedDate.replaceAll(' 00:00:00', '');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('-', '/');
} else {
formattedDate = date;
}
return formattedDate;
}
String reverseFormatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
date = date.substring(0, 10);
formattedDate = date.replaceAll('-', '/');
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDateNew(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.split('T')[0];
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
}

@ -1,13 +1,10 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
@ -47,6 +44,8 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
getEITTransactionList?.forEach((element) {
element.collectionTransaction = element.collectionTransaction?.where((elemen) => elemen.dISPLAYFLAG == "Y").toList() ?? [];
});
getEITTransactionList = getEITTransactionList?.where((element) => element.collectionTransaction?.isNotEmpty ?? false).toList() ?? [];
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -69,14 +68,11 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: dynamicParams!.title,
),
appBar: AppBarWidget(context, title: dynamicParams!.title),
body: getEITTransactionList == null
? const SizedBox()
: (getEITTransactionList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
? Utils.getNoDataWidget(context)
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
@ -95,8 +91,8 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
separatorBuilder: (cxt, index) => 12.height,
itemCount: getEITTransactionList!.length)),
floatingActionButton: Container(
height: 50,
width: 50,
height: 54,
width: 54,
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
@ -26,33 +27,18 @@ class MyAttendanceScreen extends StatelessWidget {
title: LocaleKeys.myAttendance.tr(),
),
body: SizedBox(
width: double.infinity,
height: double.infinity,
child: list.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: Column(
children: [
itemView(
"assets/images/pdf.svg",
LocaleKeys.missingSwipes.tr(),
).onPress(() {
Navigator.pushNamed(context, AppRoutes.monthlyAttendance);
width: double.infinity,
height: double.infinity,
child: list.isEmpty
? Utils.getNoDataWidget(context)
: ListView.separated(
padding: const EdgeInsets.all(21),
itemBuilder: (cxt, index) => itemView("assets/images/pdf.svg", list[index].prompt!).onPress(() {
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(list[index].prompt!, list[index].functionName!));
}),
12.height,
ListView.separated(
padding: const EdgeInsets.all(21),
itemBuilder: (cxt, index) => itemView(
"assets/images/pdf.svg",
//LocaleKeys.missingSwipes.tr(),
list[index].prompt!,
).onPress(() {
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(list[index].prompt!, list[index].functionName!));
}),
separatorBuilder: (cxt, index) => 12.height,
itemCount: list.length)
.expanded
],
)),
separatorBuilder: (cxt, index) => 12.height,
itemCount: list.length),
),
);
}

@ -0,0 +1,290 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/monthly_pay_slip_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/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/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
class MonthlyPaySlipScreen extends StatefulWidget {
MonthlyPaySlipScreen({Key? key}) : super(key: key);
@override
_MonthlyPaySlipScreenState createState() {
return _MonthlyPaySlipScreenState();
}
}
class _MonthlyPaySlipScreenState extends State<MonthlyPaySlipScreen> {
List<GetPayslipList> paySlipList = [];
List<GetSummaryOfPaymentList> summaryOfPaymentList = [];
List<GetPaymentInformationList> paymentInformationList = [];
List<GetDeductionsList> deductionList = [];
List<GetEarningsList> earningList = [];
int? selectedMonthIndex;
@override
void initState() {
super.initState();
getData();
}
void getData() async {
try {
Utils.showLoading(context);
paySlipList = await MonthlyPaySlipApiClient().getPaySlip();
if (paySlipList.isNotEmpty) {
selectedMonthIndex = 0;
await getDataByActionContextID(paySlipList[selectedMonthIndex!].aCTIONCONTEXTID!);
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
Future getDataByActionContextID(int actionContextID, {bool showLoading = false}) async {
try {
if (showLoading) {
Utils.showLoading(context);
}
List results = await Future.wait([
MonthlyPaySlipApiClient().getSummaryOfPayment(actionContextID),
MonthlyPaySlipApiClient().getPaymentInformation(actionContextID),
MonthlyPaySlipApiClient().getDeductions(actionContextID),
MonthlyPaySlipApiClient().getEarnings(actionContextID),
]);
summaryOfPaymentList = results[0];
paymentInformationList = results[1];
deductionList = results[2];
earningList = results[3];
if (showLoading) {
Utils.hideLoading(context);
setState(() {});
}
} catch (ex) {
if (showLoading) {
Utils.hideLoading(context);
}
Utils.handleException(ex, context, null);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: LocaleKeys.monthlyPaySlip.tr(),
),
body: Column(
children: [
if (selectedMonthIndex != null)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Container(alignment: Alignment.centerLeft, child: LocaleKeys.month.tr().toText17(isBold: true, color: MyColors.darkIconColor)),
Row(
children: [
DateFormat("MMMM-yyyy").format(DateFormat("MM/dd/yyyy").parse(paySlipList[selectedMonthIndex!].pAYMENTDATE!)).toText16(color: MyColors.greyACColor),
const Icon(Icons.keyboard_arrow_down_rounded, color: MyColors.greyACColor),
],
).onPress(() async {
int tempIndex = selectedMonthIndex!;
showModalBottomSheet(
context: context,
builder: (cxt) {
return Container(
height: 200,
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
LocaleKeys.ok.tr().toText16(color: MyColors.gradiantEndColor).paddingOnly(right: 21, top: 16).onPress(() {
if (selectedMonthIndex != tempIndex) {
selectedMonthIndex = tempIndex;
Navigator.pop(context);
getDataByActionContextID(paySlipList[selectedMonthIndex!].aCTIONCONTEXTID!, showLoading: true);
}
}),
CupertinoPicker(
itemExtent: 40,
onSelectedItemChanged: (index) {
tempIndex = index;
},
children: [for (int i = 0; i < paySlipList.length; i++) paySlipList[i].pERIODNAME!.toText16().center]).expanded,
],
),
);
});
})
],
).paddingOnly(left: 21, right: 21),
ListView(
padding: const EdgeInsets.all(21),
children: [
if (summaryOfPaymentList.isNotEmpty) ...[paymentSummaryData(context)],
if (earningList.isNotEmpty) ...[18.height, earningData(context)],
if (deductionList.isNotEmpty) ...[18.height, deductionData(context)],
if (paymentInformationList.isNotEmpty) ...[12.height, paymentInformationData(context)]
],
).expanded,
],
),
);
}
Widget earningData(context) {
List<TableRow> tableRow = [];
tableRow.add(
TableRow(
children: [
Utils.tableColumnTitle(LocaleKeys.particular.tr()),
Utils.tableColumnTitle(LocaleKeys.amount.tr(), alignCenter: true),
],
),
);
for (int i = 0; i < earningList.length; i++) {
tableRow.add(
TableRow(children: [
Utils.tableColumnValue('${earningList[i].eLEMENTNAME}'),
Utils.tableColumnValue('${earningList[i].aMOUNT}', alignCenter: true),
]),
);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.earnings.tr().toSectionHeading(),
12.height,
Table(
columnWidths: const {0: FlexColumnWidth(1.5), 1: FlexColumnWidth(1.0)},
children: tableRow,
).objectContainerView(),
],
);
}
Widget deductionData(context) {
List<TableRow> tableRow = [];
tableRow.add(
TableRow(
children: [
Utils.tableColumnTitle(LocaleKeys.particular.tr()),
Utils.tableColumnTitle(LocaleKeys.amount.tr(), alignCenter: true),
],
),
);
for (int i = 0; i < deductionList.length; i++) {
tableRow.add(
TableRow(children: [
Utils.tableColumnValue('${deductionList[i].eLEMENTNAME}'),
Utils.tableColumnValue('${deductionList[i].aMOUNT}', alignCenter: true),
]),
);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.deductions.tr().toSectionHeading(),
12.height,
Table(
columnWidths: const {0: FlexColumnWidth(1.5), 1: FlexColumnWidth(1.0)},
children: tableRow,
).objectContainerView(),
],
);
}
Widget paymentSummaryData(context) {
List<TableRow> tableRow = [];
tableRow.add(
TableRow(
children: [
Utils.tableColumnTitle(LocaleKeys.particular.tr()),
Utils.tableColumnTitle("%", alignCenter: true),
Utils.tableColumnTitle(LocaleKeys.amount.tr(), alignCenter: true),
],
),
);
tableRow.add(
TableRow(children: [
Utils.tableColumnValue(LocaleKeys.deductions.tr()),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALDEDUCTIONSPERCENTAGE}', alignCenter: true),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALDEDUCTIONSAMOUNT}', alignCenter: true),
]),
);
tableRow.add(
TableRow(children: [
Utils.tableColumnValue(LocaleKeys.earnings.tr()),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALEARNINGSPERCENTAGE}', alignCenter: true),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALEARNINGSAMOUNT}', alignCenter: true),
]),
);
tableRow.add(
TableRow(children: [
Utils.tableColumnValue(LocaleKeys.totalPayAmount.tr()),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALPAYPERCENTAGE}', alignCenter: true),
Utils.tableColumnValue('${summaryOfPaymentList[0].tOTALPAYAMOUNT}', alignCenter: true),
]),
);
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.summaryOfInformation.tr().toSectionHeading(),
12.height,
Table(
columnWidths: const {0: FlexColumnWidth(2.0), 1: FlexColumnWidth(1.0), 2: FlexColumnWidth(1.0)},
children: tableRow,
).objectContainerView(),
],
);
}
Widget paymentInformationData(context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.paymentInformation.tr().toSectionHeading(),
12.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
ItemDetailView(LocaleKeys.paymentMethodName.tr(), paymentInformationList[0].pAYMENTMETHODNAME ?? ""),
ItemDetailView(LocaleKeys.bankName.tr(), paymentInformationList[0].bANKNAME ?? ""),
ItemDetailView(LocaleKeys.branchCode.tr(), paymentInformationList[0].bRANCHNAME ?? ""),
ItemDetailView(LocaleKeys.accountNo.tr(), paymentInformationList[0].aCCOUNTNUMBER ?? ""),
ItemDetailView(LocaleKeys.amount.tr(), paymentInformationList[0].aMOUNT ?? ""),
],
).objectContainerView(),
],
);
}
}

@ -0,0 +1,466 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart';
import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
import 'package:easy_localization/src/public_ext.dart';
class AddUpdateFamilyMember extends StatefulWidget {
const AddUpdateFamilyMember({Key? key}) : super(key: key);
@override
_AddUpdateFamilyMemberState createState() => _AddUpdateFamilyMemberState();
}
class _AddUpdateFamilyMemberState extends State<AddUpdateFamilyMember> {
List<GetBasicDetDffStructureList?> getBasicDetDffStructureList = [];
List<GetContactColsStructureList?> getContactColsStructureList = [];
List<GetContactDffStructureList?> getContactDffStructureList = [];
List<GetContactDetailsList?> getContactDetailsList = [];
SubmitContactTransactionList? submitContactTransactionList;
dynamic args;
String? date = "MM/DD/YYYY";
// String actionType = "UPDATE";
GetApprovesList? getApprovesList;
@override
void initState() {
//
super.initState();
}
void callAddAndUpdateFamilyMember() async {
try {
Utils.showLoading(context);
getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure();
getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(args['actionType']);
getContactDffStructureList = await ProfileApiClient().getContactDffStructureList();
if (args['actionType'] == "ADD") {
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = new GetContactDetailsList();
});
} else if (args['actionType'] == "UPDATE") {
getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']);
getBasicDetDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getContactColsStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
getContactDffStructureList?.forEach((element) {
element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME);
});
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
Widget build(BuildContext context) {
if (args == null) {
args = ModalRoute.of(context)!.settings.arguments;
callAddAndUpdateFamilyMember();
}
return Scaffold(
appBar: AppBarWidget(
context,
title: LocaleKeys.profile_familyDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: args['flag'] == 1
? Column(
children: [
ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getContactColsStructureList!.length),
12.height,
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getBasicDetDffStructureList!.length),
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getContactDffStructureList!.length),
]).expanded,
SizedBox(
height: 50,
),
],
)
: args['flag'] == 2
? Column(
children: [
getContactDetailsList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
: ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getContactColsStructureList!.length),
12.height,
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getBasicDetDffStructureList!.length),
ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext cxt, int parentIndex) {
return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex);
},
separatorBuilder: (cxt, index) => 0.height,
itemCount: getContactDffStructureList!.length),
]).expanded,
SizedBox(
height: 50,
),
],
)
: Container(),
);
}
Widget parseDynamicFormatTypeCols(GetContactColsStructureList? model, int index) {
if (model!.dISPLAYFLAG != "N") {
} else {
return const SizedBox();
}
if (model.dATATYPE == "VARCHAR2") {
if (model!.objectValuesList?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++)
PopupMenuItem<int>(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString();
setState(() {});
});
} else {
return DynamicTextFieldWidget(
(model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
onChange: (text) {
model!.getContactDetailsList!.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
}
} else if (model.dATATYPE == "DATE") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime dateValue = await _selectDate(context);
date = DateFormat('yyyy/MM/dd').format(dateValue);
model!.getContactDetailsList!.sEGMENTVALUEDSP = date;
setState(() {});
},
).paddingOnly(bottom: 12);
}
return Container();
}
Widget parseDynamicFormatTypeBasicDetDff(GetBasicDetDffStructureList? model, int index) {
if (model!.dISPLAYFLAG != "N") {
} else {
return const SizedBox();
}
if (model!.fORMATTYPE == "C") {
if (model!.eSERVICESVS?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
setState(() {});
});
} else {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
onChange: (text) {
model.getContactDetailsList!.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
}
} else if (model.fORMATTYPE == "X") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime dateValue = await _selectDate(context);
date = DateFormat('yyyy/MM/dd').format(dateValue);
model!.getContactDetailsList!.sEGMENTVALUEDSP = date;
setState(() {});
},
).paddingOnly(bottom: 12);
}
return Container();
}
Widget parseDynamicFormatTypeContactDff(GetContactDffStructureList? model, int index) {
if (model!.dISPLAYFLAG != "N") {
} else {
return const SizedBox();
}
if (model!.fORMATTYPE == "C") {
if (model.eSERVICESVS?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++)
PopupMenuItem<int>(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i),
],
onSelected: (int popupIndex) {
model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString();
model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString();
setState(() {});
});
} else {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
onChange: (text) {
model.getContactDetailsList!.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
}
} else if (model.fORMATTYPE == "X") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "",
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime dateValue = await _selectDate(context);
date = DateFormat('yyyy/MM/dd').format(dateValue);
model!.getContactDetailsList!.sEGMENTVALUEDSP = date;
setState(() {});
},
).paddingOnly(bottom: 12);
}
return Container();
}
DateTime selectedDate = DateTime.now();
Future<DateTime> _selectDate(BuildContext context) async {
DateTime time = selectedDate;
if (!Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
height: 250,
color: Colors.white,
child: CupertinoDatePicker(
backgroundColor: Colors.white,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (value) {
if (value != null && value != selectedDate) {
time = value;
}
},
initialDateTime: selectedDate,
),
),
);
} else {
final DateTime? picked =
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
if (picked != null && picked != selectedDate) {
time = picked;
}
}
return time;
}
Widget footer() {
return Container(
color: MyColors.white,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
color: MyColors.gradiantEndColor,
margin: EdgeInsets.only(bottom: 20, top: 20),
padding: EdgeInsets.only(left: 50, right: 50),
child: TextButton(
style: TextButton.styleFrom(
primary: MyColors.white,
onSurface: MyColors.white,
backgroundColor: MyColors.gradiantEndColor,
),
onPressed: () {
submitUpdateForm();
},
child: Text(
LocaleKeys.next.tr(),
style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600),
),
)),
],
),
);
}
void submitUpdateForm() async {
try {
List<Map<String, dynamic>> values1 = getBasicDetDffStructureList!.map((e) {
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.fORMATTYPE == 'N') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else if (e.fORMATTYPE == 'X') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else {
dateVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
numberVal = null;
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values2 = getContactDffStructureList!.map((e) {
//String tempVar = e!.getContactDetailsList!.vARCHAR2VALUE ?? "";
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.fORMATTYPE == 'N') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else if (e.fORMATTYPE == 'X') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else {
dateVal = null;
numberVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> values3 = getContactColsStructureList!.map((e) {
// String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? "";
String? dateVal = '';
String? vatcherVal = '';
int? numberVal;
if (e!.dATATYPE == 'VARCHAR2') {
dateVal = null;
numberVal = null;
vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE.toString();
} else if (e.dATATYPE == 'DATE') {
dateVal = e!.getContactDetailsList!.dATEVALUE.toString();
vatcherVal = null;
numberVal = null;
} else if (e.dATATYPE == 'NUMBER') {
dateVal = null;
vatcherVal = null;
numberVal = e!.getContactDetailsList!.nUMBERVALUE;
} else {}
return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson();
}).toList();
List<Map<String, dynamic>> valuesFinal = [...values1, ...values2, ...values3];
Utils.showLoading(context);
if (args['actionType'] == "ADD") {
var relationID = null;
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], relationID, valuesFinal);
} else if (args['actionType'] == "UPDATE") {
submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], args['relationID'], valuesFinal);
}
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var itemKey = submitContactTransactionList!.pITEMKEY;
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
}

@ -1,15 +1,20 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:provider/provider.dart';
class BasicDetails extends StatefulWidget {
const BasicDetails({Key? key}) : super(key: key);
@ -17,6 +22,7 @@ class BasicDetails extends StatefulWidget {
@override
_BasicDetailsState createState() => _BasicDetailsState();
}
// TODO(Sultan): kindly follow structure of code written. use extension methods for widgets, use localization and format code
class _BasicDetailsState extends State<BasicDetails> {
String? fullName = "";
@ -25,12 +31,17 @@ class _BasicDetailsState extends State<BasicDetails> {
String? civilIdentityNumber = "";
String? emailAddress = "";
String? employeeNo = "";
int correctOrNew = 1;
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
late MemberInformationListModel memberInformationList;
GetMenuEntriesList menuEntries = GetMenuEntriesList();
@override
void initState() {
super.initState();
memberInformationList = AppState().memberInformationList!;
List<GetMenuEntriesList> menuData = Provider.of<DashboardProviderModel>(context, listen: false).getMenuEntriesList!;
menuEntries = menuData.where((e) => e.requestType == 'BASIC_DETAILS').toList()[0];
getEmployeeBasicDetails();
basicDetails();
}
@ -41,8 +52,6 @@ class _BasicDetailsState extends State<BasicDetails> {
getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
Utils.hideLoading(context);
basicDetails();
print("getEmployeeBasicDetailsList.length");
print(getEmployeeBasicDetailsList.length);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
@ -50,7 +59,7 @@ class _BasicDetailsState extends State<BasicDetails> {
}
}
basicDetails() {
void basicDetails() {
for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) {
if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') {
fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
@ -74,29 +83,13 @@ class _BasicDetailsState extends State<BasicDetails> {
context,
title: LocaleKeys.profile_basicDetails.tr(),
),
// appBar: AppBar(
// backgroundColor: MyColors.white,
// leading: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// IconButton(
// icon: const Icon(
// Icons.arrow_back_ios,
// color: MyColors.backgroundBlackColor,
// ),
// onPressed: () => Navigator.pop(context),
// ),
// "Basic Details".toText24(isBold: true, color: MyColors.blackColor),
// ],
// ),
// ),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 20, left: 21, right: 21,bottom: 20),
margin: EdgeInsets.only(top: 20, left: 21, right: 21, bottom: 20),
padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5),
height: 280,
decoration: BoxDecoration(
@ -113,29 +106,29 @@ class _BasicDetailsState extends State<BasicDetails> {
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
LocaleKeys.fullName.tr().toText13(color: MyColors.lightGrayColor),
"${fullName}".toText16(isBold: true, color: MyColors.blackColor),
"$fullName".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.maritalStatus.tr().toText13(color: MyColors.lightGrayColor),
"${maritalStatus}".toText16(isBold: true, color: MyColors.blackColor),
"$maritalStatus".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.dateOfBirth.tr().toText13(color: MyColors.lightGrayColor),
"${birthDate}".toText16(isBold: true, color: MyColors.blackColor),
"$birthDate".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.civilIdentityNumber.tr().toText13(color: MyColors.lightGrayColor),
"${civilIdentityNumber}".toText16(isBold: true, color: MyColors.blackColor),
"$civilIdentityNumber".toText16(isBold: true, color: MyColors.blackColor),
]),
),
],
));
}
footer() {
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -144,22 +137,26 @@ class _BasicDetailsState extends State<BasicDetails> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
showAlertDialog(context);
}).insideContainer,
child: DefaultButton(
LocaleKeys.update.tr(),
menuEntries.updateButton == 'Y'
? () async {
showAlertDialog(context);
}
: null)
.insideContainer,
);
}
showAlertDialog(BuildContext context) {
dynamic changeOrNew = 1;
void showAlertDialog(BuildContext context) {
Widget cancelButton = TextButton(
child: Text("Cancel"),
child: Text(LocaleKeys.cancel.tr()),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text("Next"),
child: Text(LocaleKeys.next.tr()),
onPressed: () {
continueDynamicForms();
},
@ -167,7 +164,7 @@ class _BasicDetailsState extends State<BasicDetails> {
StatefulBuilder alert = StatefulBuilder(builder: (context, setState) {
return AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))),
title: Text("Confirm"),
title: Text(LocaleKeys.confirm.tr()),
content: Builder(builder: (context) {
// Get available height and width of the build area of this widget. Make a choice depending on the size.
var height = MediaQuery.of(context).size.height * .5;
@ -175,33 +172,33 @@ class _BasicDetailsState extends State<BasicDetails> {
height: height,
child: Column(children: [
Text(
"Select the type of change you want to make.",
LocaleKeys.selectType.tr(),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(),
Column(
children: [
ListTile(
title: Text("correct or complete the current details"),
title: Text(LocaleKeys.correctCurrentDatails.tr()),
leading: Radio(
value: 1,
groupValue: changeOrNew,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
ListTile(
title: Text("Enter new Information because of a real change to the current details (e.g because of a change in marital status)"),
title: Text(LocaleKeys.enterNewInfo.tr()),
leading: Radio(
value: 2,
groupValue: changeOrNew,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
@ -229,6 +226,6 @@ class _BasicDetailsState extends State<BasicDetails> {
void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile,
arguments: DynamicProfileParams(LocaleKeys.profile_basicDetails.tr(), 'HR_PERINFO_SS',
uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList));
uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList, correctOrNew: correctOrNew));
}
}

@ -3,17 +3,20 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart';
import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:provider/provider.dart';
class ContactDetails extends StatefulWidget {
const ContactDetails({Key? key}) : super(key: key);
@ -29,14 +32,20 @@ class _ContactDetailsState extends State<ContactDetails> {
String? civilIdentityNumber = "";
String? emailAddress = "";
String? employeeNo = "";
int? correctOrNew = 1;
List<GetEmployeePhonesList> getEmployeePhonesList = [];
List<GetEmployeeAddressList> getEmployeeAddressList = [];
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
GetMenuEntriesList menuEntriesPhone = GetMenuEntriesList();
GetMenuEntriesList menuEntriesAddress = GetMenuEntriesList();
@override
void initState() {
super.initState();
List<GetMenuEntriesList> menuData = Provider.of<DashboardProviderModel>(context, listen: false).getMenuEntriesList!;
menuEntriesPhone = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList()[0];
menuEntriesAddress = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList()[0];
getEmployeePhones();
setState(() {});
@ -74,7 +83,7 @@ class _ContactDetailsState extends State<ContactDetails> {
title: LocaleKeys.profile_contactDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
// bottomSheet: footer(),
body: SingleChildScrollView(
child: Column(children: [
Container(
@ -84,7 +93,7 @@ class _ContactDetailsState extends State<ContactDetails> {
left: 26,
right: 26,
),
padding: EdgeInsets.only(left: 14, right: 14, top: 5, bottom: 20),
padding: EdgeInsets.all(15),
///height: 200,
decoration: BoxDecoration(
@ -99,19 +108,21 @@ class _ContactDetailsState extends State<ContactDetails> {
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
child: Stack(children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
updatePhone();
},
)
menuEntriesPhone.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
updatePhone();
},
)
: Container()
],
),
Column(
@ -122,17 +133,7 @@ class _ContactDetailsState extends State<ContactDetails> {
"${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
]))
.toList())
])
// [
// "${getEmployeePhonesList[0].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeePhonesList[0].pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,),
// "${getEmployeePhonesList[1].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeePhonesList[1].pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
// ]
),
])),
Container(
width: double.infinity,
margin: EdgeInsets.only(
@ -140,8 +141,8 @@ class _ContactDetailsState extends State<ContactDetails> {
left: 26,
right: 26,
),
padding: EdgeInsets.only(left: 14, right: 14, top: 5, bottom: 20),
height: 400,
padding: EdgeInsets.all(15),
// height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
@ -154,17 +155,21 @@ class _ContactDetailsState extends State<ContactDetails> {
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
child: Stack(children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {},
)
menuEntriesAddress.updateButton == 'Y'
? IconButton(
icon: Icon(
Icons.edit_location_alt_outlined,
size: 20,
),
onPressed: () {
addUpdateAddress();
},
)
: Container()
],
),
Column(
@ -179,40 +184,10 @@ class _ContactDetailsState extends State<ContactDetails> {
]))
.toList())
]))
// "${getEmployeeAddressList[0].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[0].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,
// ),
// "${getEmployeeAddressList[2].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[2].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,
// ),
// "${getEmployeeAddressList[3].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[3].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,
// ),
// "${getEmployeeAddressList[4].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[4].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,
// ),
// "${getEmployeeAddressList[5].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[5].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
// SizedBox(
// height: 20,
// ),
// "${getEmployeeAddressList[6].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor),
// "${getEmployeeAddressList[6].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor),
//]),
//),
//],
])));
}
footer() {
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -223,15 +198,96 @@ class _ContactDetailsState extends State<ContactDetails> {
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
// context.setLocale(const Locale("en", "US")); // to change Loacle
Profile();
ProfileScreen();
}).insideContainer,
);
}
updatePhone() {
void updatePhone() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)),
);
}
void addUpdateAddress() {
Widget cancelButton = TextButton(
child: Text("Cancel"),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text("Next"),
onPressed: () {
continueDynamicForms();
},
);
StatefulBuilder alert = StatefulBuilder(builder: (context, setState) {
return AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))),
title: Text("Confirm"),
content: Builder(builder: (context) {
// Get available height and width of the build area of this widget. Make a choice depending on the size.
var height = MediaQuery.of(context).size.height * .5;
return Container(
height: height,
child: Column(children: [
Text(
"Select the type of change you want to make.",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(),
Column(
children: [
ListTile(
title: Text("Correct or amend this address"),
leading: Radio(
value: 1,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
ListTile(
title: Text("Enter a new address if you have moved"),
leading: Radio(
value: 2,
groupValue: correctOrNew,
onChanged: (value) {
setState(() {
correctOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
],
)
]));
}),
actions: [
cancelButton,
continueButton,
],
);
});
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicAddressScreen,
arguments: DynamicProfileParams(LocaleKeys.profile_address.tr(), 'HR_PERINFO_SS',
uRL: 'GET_ADDRESS_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeAddressList: getEmployeeAddressList, correctOrNew: correctOrNew!));
}
}

@ -1,74 +0,0 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/dialogs/otp_dialog.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
class DeleteFamilyMember extends StatefulWidget {
const DeleteFamilyMember({Key? key}) : super(key: key);
@override
_DeleteFamilyMemberState createState() => _DeleteFamilyMemberState();
}
class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: "Dependents And Beneficiaries",
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body:Column(
children: [
],
)
);
}
footer() {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
color: MyColors.gradiantEndColor,
// margin: EdgeInsets.only(left: 50,right: 20),
padding: EdgeInsets.only(left: 50,right: 50),
child: TextButton(
style: TextButton.styleFrom(
primary:MyColors.white,
onSurface: MyColors.white,
backgroundColor: MyColors.gradiantEndColor,
),
onPressed: (){},
child: Text('Next',
style: TextStyle(
fontStyle: FontStyle.normal,
fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.w600
),),
)
),
],
);
}
}

@ -0,0 +1,152 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
class DeleteFamilyMember extends StatefulWidget {
int relationId;
DeleteFamilyMember(@required this.relationId, {Key? key}) : super(key: key);
@override
_DeleteFamilyMemberState createState() => _DeleteFamilyMemberState();
}
class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
String pFunctionName = "HR_PERINFO_SS";
String actionType = "DELETE";
// int? contactRelationId;
String? date = "MM/DD/YYYY";
String? datePar;
// String? itemKey;
SubmitContactTransactionList? submitContactTransactionList;
GetApprovesList? getApprovesList;
//int? relationId;
@override
void initState() {
print(widget.relationId);
super.initState();
}
void deleteFamilyMember(datePar) async {
try {
Utils.showLoading(context);
submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString());
var transactionId = submitContactTransactionList!.pTRANSACTIONID;
var itemKey = submitContactTransactionList!.pITEMKEY;
Utils.hideLoading(context);
// getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt(), itemKey.toString() );
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member'));
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: LocaleKeys.profile_familyDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: Column(
children: [
DynamicTextFieldWidget(
LocaleKeys.endDate.tr(), date.toString(),
// suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime dateValue = await _selectDate(context);
// DateTime date1 = DateTime(dateValue.year, dateValue.month, dateValue.day);
date = DateFormat('yyyy/MM/dd').format(dateValue);
datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue);
setState(() {});
// if (date !=null) {
// print(datePar);
// deleteFamilyMember(datePar);
// }
},
).paddingOnly(bottom: 12)
],
));
}
Widget footer() {
return Container(
color: MyColors.white,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
color: MyColors.gradiantEndColor,
margin: EdgeInsets.only(bottom: 20, top: 20),
padding: EdgeInsets.only(left: 50, right: 50),
child: TextButton(
style: TextButton.styleFrom(
primary: MyColors.white,
onSurface: MyColors.white,
backgroundColor: MyColors.gradiantEndColor,
),
onPressed: () {
deleteFamilyMember(datePar);
},
child: Text(
LocaleKeys.next.tr(),
style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600),
),
)),
],
),
);
}
DateTime selectedDate = DateTime.now();
Future<DateTime> _selectDate(BuildContext context) async {
DateTime time = selectedDate;
if (!Platform.isIOS) {
await showCupertinoModalPopup(
context: context,
builder: (cxt) => Container(
height: 250,
color: Colors.white,
child: CupertinoDatePicker(
backgroundColor: Colors.white,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (value) {
if (value != null && value != selectedDate) {
time = value;
}
},
initialDateTime: selectedDate,
),
),
);
} else {
final DateTime? picked =
await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101));
if (picked != null && picked != selectedDate) {
time = picked;
}
}
return time;
}
}

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

@ -1,23 +1,26 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dyanmic_forms/get_set_values_request_model.dart';
import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -29,11 +32,11 @@ class DynamicProfileParams {
String uRL;
String requestID;
String colsURL;
int correctOrNew;
List<GetEmployeeBasicDetailsList>? getEmployeeBasicDetailsList;
DynamicProfileParams(this.title, this.dynamicId,
{this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const <GetEmployeeBasicDetailsList>[]});
{this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const <GetEmployeeBasicDetailsList>[], this.correctOrNew = 2});
}
class DynamicInputScreenProfile extends StatefulWidget {
@ -51,6 +54,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
List<GetBasicDetColsStructureList>? getBasicDetColsStructureList;
DynamicProfileParams? dynamicParams;
String dESCFLEXCONTEXTCODE = "";
@override
void initState() {
super.initState();
@ -59,18 +63,27 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
void getTransactionsStructure() async {
try {
Utils.showLoading(context);
genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID);
genericResponseModel = await ProfileApiClient().getDffStructure("BASIC_DETAILS", dynamicParams!.uRL, dynamicParams!.requestID);
getBasicDetDffStructureList = genericResponseModel?.getBasicDetDffStructureList ?? [];
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID);
getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? [];
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
if (dynamicParams!.correctOrNew == 1) {
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME);
});
} else {
getBasicDetDffStructureList?.forEach((element) {
element.userBasicDetail = new GetEmployeeBasicDetailsList();
});
getBasicDetColsStructureList?.forEach((element) {
element.userBasicDetail = GetEmployeeBasicDetailsList();
});
}
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
@ -125,7 +138,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
(getBasicDetDffStructureList == null && getBasicDetColsStructureList == null
? const SizedBox()
: (getBasicDetDffStructureList!.isEmpty && getBasicDetColsStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
? Utils.getNoDataWidget(context)
: ListView(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21),
@ -153,11 +166,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
// 12.height,
DefaultButton(
LocaleKeys.next.tr(),
(getBasicDetDffStructureList ?? []).isEmpty
? null
: () => {
//Navigator.of(context).pushNamed(LOGIN_TYPE)
},
() => {validateTransaction()},
).insideContainer,
],
),
@ -175,7 +184,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.userBasicDetail?.sEGMENTVALUEDSP ?? "",
model.userBasicDetail?.aPPLICATIONCOLUMNNAME ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
@ -183,7 +192,8 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popupIndex) {
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME!;
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME;
getBasicDetDffStructureList![index].userBasicDetail!.aPPLICATIONCOLUMNNAME = model.eSERVICESVS![popupIndex].dESCRIPTION;
setState(() {});
});
}
@ -194,7 +204,6 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
isReadOnly: model.rEADONLY == "Y",
onChange: (text) {
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = text;
},
).paddingOnly(bottom: 12);
} else if (model.fORMATTYPE == "X") {
@ -237,21 +246,30 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
if (model.dATATYPE == "VARCHAR2") {
if (model.objectValuesList?.isNotEmpty ?? false) {
return PopupMenuButton(
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.userBasicDetail?.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem<int>(child: Text(model.objectValuesList![i].mEANING!), value: i),
],
onSelected: (int popupIndex) {
child: DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem<int>(child: Text(model.objectValuesList![i].mEANING!), value: i),
],
onSelected: (int popupIndex) {
if (model.objectValuesList![popupIndex].cODE != '') {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![index].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION!;
setState(() {});
});
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].mEANING, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].mEANING;
getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].cODE;
} else {
ESERVICESDV eservicesdv =
ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME);
getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION;
getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].mEANING;
}
setState(() {});
},
);
}
return DynamicTextFieldWidget(
@ -267,13 +285,13 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
} else if (model.dATATYPE == "DATE") {
return DynamicTextFieldWidget(
(model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""),
model.aPPLICATIONCOLUMNNAME ?? (getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? ""),
(getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE ?? ""),
suffixIconData: Icons.calendar_today,
isEnable: false,
onTap: () async {
DateTime date = await _selectDate(context);
DateTime date1 = DateTime(date.year, date.month, date.day);
getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP = date.toString();
getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE = date.toString();
// ESERVICESDV eservicesdv = ESERVICESDV(
// pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1),
// pRETURNMSG: "null",
@ -326,4 +344,49 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
}
return time;
}
void validateTransaction() async {
try {
Utils.showLoading(context);
int numberValue = 0;
List<Map<String, dynamic>> values = getBasicDetDffStructureList!.map((e) {
String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? "";
if (e.fORMATTYPE == "X") {
// for date format type, date format is changed
tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? "";
if (tempVar.isNotEmpty) {
DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar);
tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date);
}
}
return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson();
}).toList();
values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson());
values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson());
//values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson());
List<Map<String, dynamic>> valuesCols = getBasicDetColsStructureList!.map((e) {
if (e.dATATYPE == 'NUMBER') {
numberValue = e.userBasicDetail!.nUMBERVALUE!;
}
return ValidateEitTransactionModel(
dATEVALUE: e.userBasicDetail!.dATEVALUE ?? "", nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberValue, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: e.userBasicDetail!.vARCHAR2VALUE ?? "")
.toJson();
}).toList();
List<Map<String, dynamic>> transactionValues = new List.from(values)..addAll(valuesCols);
print(transactionValues);
SubmitBasicDetailsTransactionList submitBasicDetails =
await ProfileApiClient().submitBasicDetailsTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, transactionValues, dynamicParams!.correctOrNew);
print(submitBasicDetails);
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(dynamicParams!.title, submitBasicDetails.pTRANSACTIONID!, submitBasicDetails.pITEMKEY!, 'basicDetails'));
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
}
}

@ -5,24 +5,9 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dyanmic_forms/get_set_values_request_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
class DynamicFamilyMembersParams {
String title;

@ -70,7 +70,7 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
body: getEITTransactionList == null
? const SizedBox()
: (getEITTransactionList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center
? Utils.getNoDataWidget(context)
: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: EdgeInsets.all(21),

@ -1,24 +1,14 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/dialogs/otp_dialog.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -30,15 +20,14 @@ class FamilyMembers extends StatefulWidget {
}
class _FamilyMembersState extends State<FamilyMembers> {
List<GetEmployeeContactsList> getEmployeeContactsList = [];
int? relationId;
int? flag;
@override
void initState() {
super.initState();
getEmployeeContacts();
}
void getEmployeeContacts() async {
@ -53,7 +42,6 @@ class _FamilyMembersState extends State<FamilyMembers> {
}
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
@ -61,154 +49,158 @@ class _FamilyMembersState extends State<FamilyMembers> {
title: LocaleKeys.profile_familyDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet:footer(),
bottomSheet: footer(),
body: Container(
width: MediaQuery.of(context).size.width,
child: getEmployeeContactsList.length != 0
? SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: <Widget>[
ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
itemCount: getEmployeeContactsList.length,
itemBuilder: (context, index) {
return Container(
child: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 20, left: 21, right: 21,),
padding: EdgeInsets.only(left: 14, right: 14,top: 13, ),
height: 110,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
"${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor),
"${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor),
SizedBox(height: 5,),
Divider(
color: MyColors.lightGreyEFColor,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
child: InkWell(
onTap: () {
showUpdateAlertDialog(context);
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.edit,
size: 15,
color: MyColors.grey67Color,
),
),
TextSpan(
text: LocaleKeys.update.tr(),
style: TextStyle(
color: MyColors.grey67Color,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
),
),
)
child: getEmployeeContactsList.length != 0
? SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: <Widget>[
ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
itemCount: getEmployeeContactsList.length,
itemBuilder: (context, index) {
return Container(
child: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 20,
left: 21,
right: 21,
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: SizedBox(
child: Container(
width: 3,
color: MyColors.lightGreyEFColor,
padding: EdgeInsets.only(
left: 14,
right: 14,
top: 13,
),
height: 110,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
Container(
child: InkWell(
onTap: () {
showRemoveAlertDialog(context, getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt());
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.delete,
size: 15,
color: Color(0x99FF0000),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
"${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor),
"${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor),
SizedBox(
height: 5,
),
Divider(
color: MyColors.lightGreyEFColor,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
child: InkWell(
onTap: () {
relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt();
showUpdateAlertDialog(context, relationId!.toInt(), 2, LocaleKeys.update.tr());
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.edit,
size: 15,
color: MyColors.grey67Color,
),
),
),
TextSpan(
text:LocaleKeys.remove.tr(),
style: TextStyle(
color: MyColors.DarkRedColor,
fontSize: 12,
fontWeight: FontWeight.bold,
TextSpan(
text: LocaleKeys.update.tr(),
style: TextStyle(
color: MyColors.grey67Color,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
),
],
],
),
),
)),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: SizedBox(
child: Container(
width: 3,
color: MyColors.lightGreyEFColor,
),
),
),
)
),
// ElevatedButton.icon(
// icon: Icon(
// Icons.delete,
// size: 15,
// color: Color(0x99FF0000),
// ),
// style: ElevatedButton.styleFrom(
// shadowColor: Colors.white,
// primary: Colors.white,
// ),
// label: "remove".toText12(color: MyColors.DarkRedColor),
// onPressed: (){},
// ),
],
),
]
),
),
Container(
child: InkWell(
onTap: () {
relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt();
showRemoveAlertDialog(context, relationId!.toInt());
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.delete,
size: 15,
color: Color(0x99FF0000),
),
),
TextSpan(
text: LocaleKeys.remove.tr(),
style: TextStyle(
color: MyColors.DarkRedColor,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
),
),
)),
// ElevatedButton.icon(
// icon: Icon(
// Icons.delete,
// size: 15,
// color: Color(0x99FF0000),
// ),
// style: ElevatedButton.styleFrom(
// shadowColor: Colors.white,
// primary: Colors.white,
// ),
// label: "remove".toText12(color: MyColors.DarkRedColor),
// onPressed: (){},
// ),
],
),
]),
),
],
));
})
],
)
);
})
],
),
):Container(),
// SizedBox(height: 20),
)
);
),
)
: Container(),
// SizedBox(height: 20),
));
}
footer(){
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -217,29 +209,40 @@ class _FamilyMembersState extends State<FamilyMembers> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton("Add New Family Member", () async {
child: DefaultButton(LocaleKeys.addNewFamilyMember.tr(), () async {
Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"});
// context.setLocale(const Locale("en", "US")); // to change Loacle
Profile();
ProfileScreen();
}).insideContainer,
);
}
showUpdateAlertDialog(BuildContext context) {
void showUpdateAlertDialog(BuildContext context, int relationId, int flag, String actionType) {
Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr(),),
onPressed: () {
child: Text(
LocaleKeys.cancel.tr(),
),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text(LocaleKeys.ok.tr(),),
onPressed: () {
continueDynamicForms();
child: Text(
LocaleKeys.ok.tr(),
),
onPressed: () {
Navigator.pushNamed(
context,
AppRoutes.addUpdateFamilyMember,
arguments: {"relationID": relationId, "flag": flag, "actionType": "UPDATE"},
);
},
);
AlertDialog alert = AlertDialog(
title: Text(LocaleKeys.confirm.tr(),),
content: Text("Are You Sure You Want to Update this Member?"),
title: Text(
LocaleKeys.confirm.tr(),
),
content: Text(LocaleKeys.updateThisMember.tr()),
actions: [
cancelButton,
continueButton,
@ -252,23 +255,30 @@ class _FamilyMembersState extends State<FamilyMembers> {
},
);
}
showRemoveAlertDialog(BuildContext context,int relationId) {
void showRemoveAlertDialog(BuildContext context, int relationId) {
Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr(),),
onPressed: () {
child: Text(
LocaleKeys.cancel.tr(),
),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text(LocaleKeys.ok.tr(),),
onPressed: () {
Navigator.pushNamed(context, AppRoutes.deleteFamilyMember);
// continueDynamicForms();
child: Text(
LocaleKeys.ok.tr(),
),
onPressed: () {
Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: relationId);
// continueDynamicForms();
},
);
AlertDialog alert = AlertDialog(
title: Text(LocaleKeys.confirm.tr(),),
content: Text("Are You Sure You Want to Remove this Member?"),
title: Text(
LocaleKeys.confirm.tr(),
),
content: Text(LocaleKeys.removeThisMember.tr()),
actions: [
cancelButton,
continueButton,
@ -282,10 +292,7 @@ class _FamilyMembersState extends State<FamilyMembers> {
);
}
void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile,
arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList));
}
// void continueDynamicForms() {
// Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList));
// }
}

@ -6,7 +6,6 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -98,7 +97,7 @@ class _PesonalInfoState extends State<PesonalInfo> {
));
}
footer() {
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -107,7 +106,10 @@ class _PesonalInfoState extends State<PesonalInfo> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {}).insideContainer,
child: DefaultButton(
LocaleKeys.update.tr(),
() async {},
).insideContainer,
);
}
}

@ -3,15 +3,13 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart';
import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart';
import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
@ -27,6 +25,7 @@ class PhoneNumbers extends StatefulWidget {
class _PhoneNumbersState extends State<PhoneNumbers> {
List<GetPhoneNumberTypesModel> getPhoneNumberTypesList = [];
SubmitPhonesTransactionList submitPhoneNumbers = SubmitPhonesTransactionList();
@override
void initState() {
super.initState();
@ -42,117 +41,121 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: LocaleKeys.profile_contactDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: SingleChildScrollView(
child: Column(children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(left: 25, right: 25, top: 25),
padding: EdgeInsets.all(20),
// height: 400,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))),
child: InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
Icon(
Icons.add,
color: Color(0xff259CB8),
),
Text(
'Add new row',
style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold),
)
]),
onTap: () {
addNewRow();
},
appBar: AppBarWidget(
context,
title: LocaleKeys.profile_contactDetails.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(),
body: SingleChildScrollView(
child: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(left: 25, right: 25, top: 25),
padding: EdgeInsets.all(20),
// height: 400,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))),
child: InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
Icon(
Icons.add,
color: Color(0xff259CB8),
),
Text(
LocaleKeys.addRow.tr(),
style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold),
)
]),
onTap: () {
addNewRow();
},
),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: widget.getEmployeePhonesList
.map((e) => e.aCTION != 'DELETE_ROW'
? Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 20,
left: 26,
right: 26,
),
padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15),
// height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
PopupMenuButton(
child: DynamicTextFieldWidget(
"Please Select *",
e.pHONETYPEMEANING ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
],
onSelected: (int index) {
e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
e.pHONETYPE = getPhoneNumberTypesList[index].cODE;
setState(() {});
}),
DynamicTextFieldWidget(
"",
e.pHONENUMBER ?? "",
isReadOnly: false,
onChange: (text) {
e.pHONENUMBER = text;
},
).paddingOnly(bottom: 12),
InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Icon(
Icons.delete,
color: Colors.red,
size: 18,
),
Text(
'Delete',
style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
)
]),
onTap: () {
// widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID);
setState(() {
deleteRow(e);
});
},
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: widget.getEmployeePhonesList
.map((e) => e.aCTION != 'DELETE_ROW'
? Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 20,
left: 26,
right: 26,
),
SizedBox(
height: 10,
padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15),
// height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
]))
: Container())
.toList()),
SizedBox(
height: 80,
)
])));
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
PopupMenuButton(
child: DynamicTextFieldWidget(
LocaleKeys.pleaseSelect.tr(),
e.pHONETYPEMEANING ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
],
onSelected: (int index) {
e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
e.pHONETYPE = getPhoneNumberTypesList[index].cODE;
setState(() {});
}),
DynamicTextFieldWidget(
"",
e.pHONENUMBER ?? "",
isReadOnly: false,
onChange: (text) {
e.pHONENUMBER = text;
},
).paddingOnly(bottom: 12),
InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Icon(
Icons.delete,
color: Colors.red,
size: 18,
),
Text(
LocaleKeys.delete.tr(),
style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
)
]),
onTap: () {
// widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID);
setState(() {
deleteRow(e);
});
},
),
SizedBox(
height: 10,
),
]))
: Container())
.toList()),
SizedBox(
height: 80,
)
],
),
),
);
}
footer() {
Widget footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -169,8 +172,24 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
);
}
void updatePhone() {
print(widget.getEmployeePhonesList);
void updatePhone() async {
Utils.showLoading(context);
setUpdateStatus();
submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList);
Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers'));
}
void setUpdateStatus() {
widget.getEmployeePhonesList.forEach((element) {
if (element.aCTION == null) {
element.aCTION = 'UPDATE_ROW';
element.dATEFROM = '';
element.dATETO = '';
}
});
}
void addNewRow() {

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

@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:mohem_flutter_app/api/pending_transactions_api_client.dart';
@ -7,6 +8,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_announcement_details.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:url_launcher/url_launcher.dart';
@ -37,7 +39,7 @@ class _AnnouncementDetailsState extends State<AnnouncementDetails> {
backgroundColor: Colors.white,
appBar: AppBarWidget(
context,
title: "Announcements",
title: LocaleKeys.announcements.tr(),
),
body: SingleChildScrollView(
child: getAnnouncementDetailsObj != null
@ -92,7 +94,7 @@ class _AnnouncementDetailsState extends State<AnnouncementDetails> {
);
}
getRequestID() async {
void getRequestID() async {
if (currentPageNo == 0) {
final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map;
currentPageNo = arguments["currentPageNo"];
@ -105,6 +107,8 @@ class _AnnouncementDetailsState extends State<AnnouncementDetails> {
try {
Utils.showLoading(context);
jsonResponse = await PendingTransactionsApiClient().getAnnouncements(itgAwarenessID, currentPageNo, itgRowID);
// todo '@haroon' move below post processing code to above method and get exact model which you need,
var jsonDecodedData = jsonDecode(jsonDecode(jsonResponse)['result']['data']);
getAnnouncementDetailsObj = GetAnnouncementDetails.fromJson(jsonDecodedData[0]);
Utils.hideLoading(context);

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

Loading…
Cancel
Save