Merge feature/passo/PASSO-#1-Sync-data-from-device-to-postgre-and-vice-versa to master
|
@ -31,6 +31,7 @@ migrate_working_dir/
|
||||||
.pub-cache/
|
.pub-cache/
|
||||||
.pub/
|
.pub/
|
||||||
/build/
|
/build/
|
||||||
|
pubspeck.lock
|
||||||
|
|
||||||
# Symbolication related
|
# Symbolication related
|
||||||
app.*.symbols
|
app.*.symbols
|
||||||
|
|
|
@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion flutter.compileSdkVersion
|
compileSdkVersion 34
|
||||||
ndkVersion "25.1.8937393"
|
ndkVersion "25.1.8937393"
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
@ -44,9 +44,10 @@ android {
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "com.example.unit2"
|
applicationId "com.app.rpass"
|
||||||
// You can update the following values to match your application needs.
|
// You can update the following values to match your application needs.
|
||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||||
|
|
||||||
minSdkVersion flutter.minSdkVersion
|
minSdkVersion flutter.minSdkVersion
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.example.unit2">
|
package="com.example.unit2"
|
||||||
|
>
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
||||||
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
|
||||||
<application
|
<application
|
||||||
android:label="uniT App"
|
android:label="uniT App"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
|
@ -16,7 +20,8 @@ android:authorities = "${applicationId}.fileprovider"
|
||||||
android:exported = "false"
|
android:exported = "false"
|
||||||
android:grantUriPermissions = "true"
|
android:grantUriPermissions = "true"
|
||||||
android:name = "androidx.core.content.FileProvider"
|
android:name = "androidx.core.content.FileProvider"
|
||||||
android:usesCleartextTraffic="true">
|
android:usesCleartextTraffic="true"
|
||||||
|
android:requestLegacyExternalStorage="true">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name = "android.support.FILE_PROVIDER_PATHS"
|
android:name = "android.support.FILE_PROVIDER_PATHS"
|
||||||
|
|
After Width: | Height: | Size: 852 B |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 459 B |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 265 KiB |
After Width: | Height: | Size: 443 B |
|
@ -0,0 +1,595 @@
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M3055 8904 c-44 -7 -125 -21 -180 -29 -147 -24 -285 -58 -335 -84 -9
|
||||||
|
-5 -31 -12 -50 -16 -49 -10 -264 -115 -349 -170 -117 -75 -329 -257 -416 -356
|
||||||
|
-220 -249 -387 -612 -425 -925 -5 -46 -15 -121 -20 -166 -14 -118 -14 -4106 1
|
||||||
|
-4236 38 -346 168 -668 387 -957 60 -79 212 -235 287 -295 222 -177 490 -308
|
||||||
|
770 -379 237 -59 115 -56 2345 -56 1929 0 2061 1 2155 18 456 82 805 261 1096
|
||||||
|
564 248 258 408 562 491 933 l23 105 0 2210 0 2210 -22 101 c-89 398 -253 706
|
||||||
|
-517 970 -91 90 -253 221 -317 254 -13 7 -36 23 -51 35 -32 27 -194 108 -270
|
||||||
|
135 -29 10 -82 29 -118 42 -36 14 -90 29 -120 35 -136 28 -180 35 -250 43 -41
|
||||||
|
5 -95 13 -120 19 -73 17 -3891 12 -3995 -5z m2365 -214 c553 -50 1073 -240
|
||||||
|
1580 -575 578 -382 1072 -973 1338 -1600 167 -394 237 -697 263 -1140 17 -293
|
||||||
|
-1 -799 -30 -828 -5 -5 -52 -5 -105 -1 l-96 7 0 549 0 549 -45 45 -45 44 -169
|
||||||
|
0 -168 0 -47 -41 -46 -41 0 -140 0 -140 -67 8 c-38 4 -93 8 -123 9 l-55 0 -3
|
||||||
|
301 -2 301 -99 97 c-84 82 -103 96 -118 88 -10 -6 -58 -52 -107 -102 l-88 -92
|
||||||
|
3 -309 4 -309 -39 -24 -39 -23 -34 38 -34 37 1 499 c1 274 2 509 3 523 l2 25
|
||||||
|
-275 3 c-151 1 -285 0 -297 -3 l-23 -5 0 -549 0 -550 -55 -31 c-30 -17 -57
|
||||||
|
-35 -60 -41 -4 -5 -9 -9 -13 -9 -4 0 -7 226 -7 501 0 395 -3 503 -13 506 -16
|
||||||
|
7 -104 -69 -372 -321 -36 -34 -80 -72 -97 -84 l-33 -23 0 -250 c0 -157 -4
|
||||||
|
-249 -10 -249 -5 0 -31 13 -57 29 -27 15 -120 69 -208 119 -88 50 -223 127
|
||||||
|
-300 171 -77 45 -151 81 -165 81 -14 0 -188 -91 -393 -205 -203 -113 -373
|
||||||
|
-205 -378 -205 -5 0 -9 98 -9 233 0 210 -2 235 -17 249 -10 9 -79 58 -153 110
|
||||||
|
-302 211 -422 290 -436 284 -11 -4 -14 -39 -14 -199 l0 -194 -87 -6 c-49 -3
|
||||||
|
-96 -9 -106 -13 -15 -5 -17 -3 -12 18 5 18 -1 33 -19 55 l-26 31 0 310 0 310
|
||||||
|
-72 64 c-40 36 -100 87 -134 114 -34 27 -116 95 -182 152 l-121 102 -191 0
|
||||||
|
c-115 0 -199 -4 -211 -11 -19 -10 -20 -23 -19 -497 0 -268 1 -537 0 -599 l0
|
||||||
|
-112 -127 -3 c-71 -2 -129 -2 -131 -2 -2 1 14 11 34 23 l36 22 -31 29 c-17 17
|
||||||
|
-34 30 -38 30 -5 0 -53 -41 -108 -91 -55 -50 -153 -133 -217 -185 -176 -143
|
||||||
|
-201 -181 -163 -255 19 -36 50 -49 116 -49 l49 0 0 -366 c0 -335 -1 -366 -16
|
||||||
|
-360 -36 14 -203 25 -276 19 -75 -6 -77 -5 -82 18 -27 121 -37 745 -17 954 71
|
||||||
|
710 362 1373 848 1936 109 125 336 349 453 446 545 450 1224 737 1870 791 151
|
||||||
|
13 595 14 730 2z m-1840 -50 c-8 -5 -19 -10 -25 -10 -5 0 -3 5 5 10 8 5 20 10
|
||||||
|
25 10 6 0 3 -5 -5 -10z m-963 -86 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17
|
||||||
|
-2 13 -5z m-37 -8 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6 10 25 14 25 6z
|
||||||
|
m5280 -160 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6 10 25 14 25 6z m311 -273
|
||||||
|
c13 -16 12 -17 -3 -4 -10 7 -18 15 -18 17 0 8 8 3 21 -13z m-6149 -248 c6 -14
|
||||||
|
15 -25 19 -25 5 0 6 -7 3 -15 -5 -11 -2 -13 12 -8 12 4 15 3 10 -5 -5 -8 1
|
||||||
|
-12 18 -12 13 0 31 -3 40 -6 23 -9 19 -49 -6 -67 -19 -12 -23 -24 -23 -68 0
|
||||||
|
-48 -2 -54 -22 -57 -13 -2 -35 5 -51 16 -26 19 -28 19 -49 2 -12 -10 -20 -20
|
||||||
|
-17 -22 2 -3 -7 -3 -20 -1 -40 8 -51 28 -38 69 9 32 8 37 -16 59 -14 13 -29
|
||||||
|
22 -34 19 -4 -3 -4 5 1 18 9 25 45 48 77 48 15 0 25 11 37 40 18 46 42 52 59
|
||||||
|
15z m6133 -23 c17 -36 24 -42 50 -42 43 0 54 -11 53 -48 -1 -18 -4 -29 -7 -24
|
||||||
|
-4 6 -16 2 -30 -9 -18 -15 -21 -23 -13 -31 25 -25 11 -88 -20 -88 -10 0 -16
|
||||||
|
-4 -13 -10 3 -5 1 -10 -4 -10 -6 0 -11 6 -11 13 0 8 -9 22 -19 32 -19 16 -21
|
||||||
|
16 -50 -5 -41 -29 -75 -24 -79 12 -2 15 1 35 7 46 8 15 4 24 -20 46 -16 15
|
||||||
|
-29 33 -29 40 0 23 36 43 68 38 32 -4 38 1 44 43 3 22 28 46 43 42 6 -2 19
|
||||||
|
-22 30 -45z m-341 -98 c3 -8 2 -12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11 14 -7z
|
||||||
|
m-6272 -756 c-9 -9 -12 -7 -12 12 0 19 3 21 12 12 9 -9 9 -15 0 -24z m1396
|
||||||
|
-180 l55 -43 -189 -3 c-103 -1 -194 0 -201 2 -14 6 -17 43 -7 70 5 14 28 16
|
||||||
|
147 16 l140 0 55 -42z m82 -163 c0 -32 0 -32 -61 -39 -34 -3 -129 -6 -210 -6
|
||||||
|
l-149 0 -6 25 c-14 56 -13 56 216 54 l210 -1 0 -33z m-127 -125 l127 0 0 -28
|
||||||
|
0 -29 -205 -7 c-113 -4 -210 -4 -215 -1 -12 7 -13 58 -2 69 4 5 43 6 87 2 44
|
||||||
|
-3 137 -6 208 -6z m30 -150 c96 0 98 0 95 -22 -4 -31 -31 -35 -240 -37 l-178
|
||||||
|
-1 0 36 0 37 113 -6 c61 -4 156 -7 210 -7z m95 -150 c1 0 2 -7 2 -15 0 -27
|
||||||
|
-47 -35 -236 -41 l-184 -7 0 38 0 38 208 -6 c114 -3 208 -6 210 -7z m-211
|
||||||
|
-154 c11 -11 -12 -33 -35 -33 -14 0 -28 -6 -30 -12 -2 -6 -14 -11 -28 -11 -16
|
||||||
|
0 -22 4 -18 14 3 8 0 17 -6 21 -6 3 -10 3 -9 -2 5 -26 -4 -33 -41 -33 -38 0
|
||||||
|
-40 1 -40 33 l0 32 102 -3 c56 -1 103 -4 105 -6z m1036 -100 c9 -7 17 -17 17
|
||||||
|
-22 0 -4 -5 -3 -12 4 -7 7 -16 12 -21 12 -5 0 -2 -6 6 -14 8 -9 25 -13 38 -10
|
||||||
|
23 5 23 5 5 -10 -11 -9 -24 -16 -29 -16 -8 0 -7 -19 4 -59 2 -7 -2 -16 -9 -18
|
||||||
|
-7 -3 -11 3 -10 14 2 10 -1 18 -7 18 -5 0 -10 -19 -9 -42 0 -24 -3 -43 -8 -43
|
||||||
|
-4 0 -8 45 -8 100 0 104 5 115 43 86z m77 -57 c0 -6 -9 -9 -20 -6 -14 4 -20 0
|
||||||
|
-20 -11 0 -13 -3 -13 -12 -4 -10 10 -10 15 2 22 21 13 50 12 50 -1z m104 -60
|
||||||
|
c20 -12 35 -28 35 -37 -1 -16 -2 -16 -6 0 -5 19 -56 40 -77 32 -8 -3 -17 -1
|
||||||
|
-21 5 -3 7 0 8 9 5 9 -3 16 -1 16 5 0 15 3 14 44 -10z m2013 -1 c-3 -8 -6 -5
|
||||||
|
-6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m43 13 c0 -6 -4 -13 -10 -16 -5 -3
|
||||||
|
-10 1 -10 9 0 9 5 16 10 16 6 0 10 -4 10 -9z m-2810 -45 c0 -26 -31 -72 -68
|
||||||
|
-101 -43 -34 -51 -36 -96 -31 -48 5 -50 4 -94 -39 -51 -51 -48 -66 18 -86 l38
|
||||||
|
-12 -36 -49 c-40 -56 -36 -54 -116 -62 l-59 -6 5 43 c20 171 201 345 361 347
|
||||||
|
26 0 47 -2 47 -4z m680 -6 c0 -5 -7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10
|
||||||
|
16 10 5 0 9 -4 9 -10z m-85 -50 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14 6 0 13
|
||||||
|
-4 16 -10z m70 0 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8
|
||||||
|
-4 11 -10z m-204 -76 c30 -9 75 -27 100 -39 50 -26 149 -101 149 -114 0 -4
|
||||||
|
-62 -11 -137 -15 -76 -4 -169 -11 -207 -16 -68 -8 -71 -8 -148 31 -42 21 -89
|
||||||
|
39 -102 39 -27 0 -86 -44 -86 -64 0 -7 18 -21 41 -32 l41 -20 -99 -61 c-54
|
||||||
|
-33 -103 -63 -109 -66 -6 -4 -26 6 -44 21 l-33 28 22 42 c34 67 146 173 227
|
||||||
|
215 125 65 272 84 385 51z m1644 -219 c160 -92 391 -225 515 -295 124 -70 266
|
||||||
|
-151 315 -180 50 -29 153 -89 229 -132 77 -44 158 -91 180 -105 l39 -25 -53
|
||||||
|
-26 c-65 -31 -59 -32 -247 74 -373 210 -441 249 -483 274 -25 15 -65 39 -90
|
||||||
|
52 -56 31 -409 236 -555 323 -100 60 -131 75 -154 75 -11 0 -71 -29 -133 -64
|
||||||
|
-62 -35 -198 -112 -303 -171 -164 -93 -333 -188 -770 -432 -231 -128 -286
|
||||||
|
-154 -317 -148 -18 4 -28 12 -25 19 4 9 -2 12 -16 9 -12 -2 -30 2 -40 9 -20
|
||||||
|
15 -93 -28 933 545 627 350 669 373 680 368 3 -2 136 -78 295 -170z m-2875
|
||||||
|
144 c91 -21 187 -94 239 -181 12 -21 21 -48 19 -60 -3 -21 -8 -23 -58 -22
|
||||||
|
-132 1 -370 18 -370 25 0 5 32 33 70 64 39 31 70 60 70 64 0 14 -41 61 -54 61
|
||||||
|
-20 0 -157 -89 -216 -140 l-56 -48 -147 -3 -146 -4 32 33 c71 75 239 175 337
|
||||||
|
202 98 27 186 30 280 9z m4409 -243 c67 -35 121 -83 121 -110 0 -45 -13 -47
|
||||||
|
-75 -10 -33 19 -84 46 -112 60 -29 14 -53 32 -53 40 0 8 -14 21 -32 28 -27 12
|
||||||
|
-29 15 -12 19 37 11 113 -2 163 -27z m-3235 -7 c3 -17 6 -109 6 -204 0 -170 0
|
||||||
|
-173 -23 -188 -23 -15 -25 -14 -68 45 -24 34 -72 86 -106 116 l-63 56 0 77 0
|
||||||
|
78 53 16 c65 19 133 32 168 34 22 1 28 -4 33 -30z m-650 -59 c48 -43 73 -102
|
||||||
|
95 -232 22 -130 35 -238 28 -238 -2 0 -31 16 -63 35 -32 19 -62 35 -67 35 -5
|
||||||
|
0 -24 7 -43 16 -24 12 -34 23 -34 40 0 13 -12 40 -26 61 -14 21 -30 57 -37 80
|
||||||
|
-6 24 -14 43 -18 43 -4 0 -10 -35 -14 -77 l-8 -78 -15 35 c-51 120 30 310 133
|
||||||
|
310 24 0 45 -9 69 -30z m4789 -26 c67 -17 139 -51 177 -83 23 -19 23 -20 5
|
||||||
|
-21 -11 0 -53 -7 -92 -17 l-73 -17 -67 28 c-38 15 -91 30 -119 33 -48 5 -53 3
|
||||||
|
-69 -20 -22 -34 -12 -62 25 -76 17 -6 44 -16 62 -23 l32 -12 -30 -13 c-74 -32
|
||||||
|
-346 -89 -366 -77 -14 9 -9 51 13 110 35 93 114 158 229 190 64 18 201 17 273
|
||||||
|
-2z m-1144 -25 c93 -29 121 -42 191 -83 41 -25 101 -69 133 -98 l58 -53 -24
|
||||||
|
-29 -24 -30 -92 23 c-51 12 -111 30 -134 40 l-41 18 44 11 c25 6 54 17 64 25
|
||||||
|
19 14 19 15 -3 51 -28 44 -45 45 -155 12 l-80 -25 -55 21 c-31 11 -67 22 -81
|
||||||
|
25 -60 11 -70 14 -70 23 0 10 87 58 130 71 38 11 99 10 139 -2z m560 -20 c13
|
||||||
|
-23 11 -31 -18 -93 -32 -65 -33 -67 -52 -50 -10 9 -19 23 -19 31 0 7 -6 12
|
||||||
|
-12 11 -27 -6 -11 63 23 98 38 39 57 40 78 3z m-4524 -16 c-4 -10 -9 -50 -12
|
||||||
|
-90 l-6 -71 -82 -41 c-95 -47 -189 -135 -258 -241 -33 -52 -48 -66 -71 -68
|
||||||
|
l-28 -4 4 104 c3 90 7 111 35 170 17 37 52 89 77 116 74 79 204 139 305 141
|
||||||
|
37 1 42 -1 36 -16z m580 -73 c91 -43 245 -192 245 -237 0 -13 -65 -48 -143
|
||||||
|
-77 l-64 -25 -27 28 c-24 25 -29 41 -36 117 -5 49 -15 103 -23 119 -17 34 -31
|
||||||
|
105 -21 105 3 0 34 -13 69 -30z m3173 -103 c13 -10 17 -77 5 -77 -18 1 -127
|
||||||
|
66 -136 81 -6 9 -7 24 -4 33 6 14 12 14 64 -5 32 -12 64 -26 71 -32z m-1158
|
||||||
|
20 c19 -13 64 -39 100 -59 36 -19 121 -69 190 -110 111 -67 169 -100 231 -133
|
||||||
|
11 -5 19 -13 19 -17 0 -5 -344 -8 -765 -8 -421 0 -765 3 -765 8 0 7 65 52 76
|
||||||
|
52 4 0 43 22 88 48 301 180 375 222 387 222 11 0 14 -17 14 -68 0 -58 4 -75
|
||||||
|
28 -110 36 -55 95 -85 168 -85 82 0 158 53 189 131 12 31 10 98 -5 135 -10 23
|
||||||
|
4 21 45 -6z m2554 -99 c-1 -24 -2 -61 -3 -82 l-1 -40 -27 26 c-16 14 -49 39
|
||||||
|
-75 57 -27 18 -48 36 -48 40 0 20 140 65 151 49 3 -4 4 -27 3 -50z m-662 -39
|
||||||
|
c28 -15 59 -91 60 -147 0 -61 -26 -125 -64 -158 -26 -21 -39 -24 -82 -22 -44
|
||||||
|
3 -54 0 -73 -22 l-22 -25 -1 31 c0 49 56 261 80 299 33 53 62 65 102 44z
|
||||||
|
m-4502 -32 c-4 -12 -12 -21 -17 -20 -5 1 -9 -7 -9 -18 0 -10 5 -19 12 -19 6 0
|
||||||
|
14 -17 18 -37 9 -60 7 -271 -4 -278 -5 -3 -28 4 -50 15 l-41 21 6 92 c7 103
|
||||||
|
24 175 37 155 5 -8 8 2 8 25 0 35 -2 38 -22 31 -20 -6 -21 -5 -9 10 11 13 11
|
||||||
|
16 0 16 -8 1 2 9 21 19 42 23 62 18 50 -12z m4949 -32 c61 -28 120 -79 156
|
||||||
|
-136 26 -40 51 -116 42 -125 -3 -3 -38 19 -78 50 -116 91 -264 155 -360 156
|
||||||
|
-33 0 -37 3 -43 32 -7 37 -7 38 36 49 60 15 185 2 247 -26z m-693 -52 c-13
|
||||||
|
-27 -26 -73 -30 -104 -7 -51 -11 -59 -71 -117 -52 -50 -74 -81 -114 -164 -27
|
||||||
|
-57 -57 -134 -67 -173 -9 -38 -20 -74 -24 -78 -4 -5 -19 29 -34 75 -22 68 -28
|
||||||
|
104 -29 197 l-2 115 40 27 c22 16 58 37 80 49 126 63 140 83 89 122 -13 11
|
||||||
|
-24 23 -24 27 0 5 26 20 58 33 78 35 82 36 120 37 l32 1 -24 -47z m-4456 -148
|
||||||
|
l0 -85 -62 1 c-58 0 -132 16 -85 18 9 1 35 19 57 41 22 22 45 40 50 40 6 0 10
|
||||||
|
4 10 9 0 15 19 61 25 61 3 0 5 -38 5 -85z m892 -24 c3 9 10 7 25 -8 12 -12 24
|
||||||
|
-19 27 -16 3 3 31 -9 61 -28 l56 -34 -3 -125 c-3 -96 -8 -134 -22 -165 l-19
|
||||||
|
-40 -14 45 c-7 25 -15 54 -17 65 -6 32 -55 157 -67 172 -6 7 -9 20 -5 28 4 11
|
||||||
|
2 14 -6 9 -8 -5 -9 -2 -5 10 4 10 3 15 -3 11 -6 -3 -10 -3 -11 2 -3 28 -7 51
|
||||||
|
-14 68 -5 14 -4 16 3 6 8 -11 10 -11 14 0z m3034 -27 l42 -16 7 -92 c3 -50 5
|
||||||
|
-269 3 -486 l-3 -395 -1394 2 c-766 1 -1395 4 -1397 5 -2 3 -7 751 -5 915 l1
|
||||||
|
72 43 4 c23 2 631 4 1352 5 1180 2 1313 0 1351 -14z m1245 -23 c56 -37 98 -82
|
||||||
|
83 -88 -7 -2 -42 -22 -78 -44 -37 -22 -70 -38 -75 -35 -5 3 -16 -3 -26 -14
|
||||||
|
-10 -11 -24 -20 -32 -20 -7 0 -13 -4 -13 -9 0 -11 -151 -14 -168 -3 -9 6 -12
|
||||||
|
37 -10 118 l3 109 67 0 c36 0 69 -3 73 -6 3 -4 10 -30 14 -59 5 -29 14 -56 20
|
||||||
|
-60 7 -4 13 -21 13 -38 1 -18 3 -32 5 -32 2 0 17 12 33 27 28 25 30 30 30 105
|
||||||
|
0 43 4 78 8 78 5 0 29 -13 53 -29z m-4672 -161 l0 -105 -35 39 c-35 36 -36 41
|
||||||
|
-30 89 7 50 18 80 40 103 18 20 25 -12 25 -126z m-359 6 l95 -32 3 -130 c2
|
||||||
|
-71 0 -166 -3 -211 l-7 -82 -52 52 c-28 29 -76 65 -106 81 -30 16 -76 47 -101
|
||||||
|
68 -25 21 -49 38 -53 38 -5 0 -26 15 -49 32 -31 25 -51 33 -85 33 -41 1 -47 5
|
||||||
|
-78 48 -19 26 -34 50 -34 55 0 11 50 39 102 58 113 41 227 38 368 -10z m4550
|
||||||
|
-14 c0 -60 -11 -82 -42 -82 -15 0 -18 8 -18 44 0 61 15 96 40 96 18 0 20 -6
|
||||||
|
20 -58z m905 18 c30 -19 35 -19 116 -4 81 16 260 17 275 2 16 -17 -87 -431
|
||||||
|
-116 -462 -5 -4 -25 -3 -46 4 -21 7 -69 13 -107 13 -58 0 -69 3 -79 20 -22 43
|
||||||
|
-104 120 -153 144 -90 46 -215 42 -287 -9 -25 -17 -29 -17 -67 -2 -47 19 -51
|
||||||
|
36 -21 101 25 56 93 123 155 152 38 19 70 25 130 27 45 1 95 9 115 18 45 20
|
||||||
|
47 20 85 -4z m-6235 -1 c120 -27 244 -116 300 -215 27 -46 36 -54 61 -54 26 0
|
||||||
|
33 -6 50 -44 10 -24 22 -59 25 -76 6 -28 10 -31 33 -25 14 3 56 9 93 12 56 4
|
||||||
|
75 2 112 -17 51 -24 93 -68 103 -108 3 -15 28 -49 55 -75 l49 -49 -3 -71 -3
|
||||||
|
-72 -138 -3 c-134 -2 -138 -2 -128 17 16 30 13 108 -5 147 -10 21 -34 45 -61
|
||||||
|
60 l-43 26 -53 -21 c-78 -31 -101 -31 -105 -1 -12 119 -85 217 -200 272 -56
|
||||||
|
27 -71 30 -130 26 -40 -3 -84 -14 -108 -26 l-42 -21 -16 57 c-20 74 -46 209
|
||||||
|
-46 245 l0 27 78 0 c42 0 97 -5 122 -11z m1363 -74 c90 -48 97 -58 97 -148 0
|
||||||
|
-33 -3 -33 -120 17 l-75 31 -3 73 c-2 40 1 72 6 72 6 0 48 -20 95 -45z m4270
|
||||||
|
-85 c-13 -87 -27 -122 -52 -131 -14 -5 -39 -15 -54 -24 l-28 -15 3 73 c3 62 5
|
||||||
|
72 21 69 9 -2 17 2 17 9 0 7 11 10 29 7 17 -2 30 -2 29 1 -2 22 4 32 20 29 9
|
||||||
|
-2 16 -10 15 -18z m-308 -181 c0 -118 -2 -140 -18 -157 -10 -11 -28 -22 -39
|
||||||
|
-25 -20 -6 -20 -3 -14 96 4 56 9 130 12 165 6 61 7 63 33 60 l26 -3 0 -136z
|
||||||
|
m-4181 119 c10 -31 15 -278 7 -278 -6 0 -23 12 -38 26 -27 25 -28 31 -34 137
|
||||||
|
-3 62 -4 115 -2 120 7 12 63 8 67 -5z m408 -187 c48 -23 105 -47 125 -54 l38
|
||||||
|
-12 3 -80 c4 -99 -4 -145 -24 -145 -8 0 -64 34 -124 76 -61 41 -152 99 -203
|
||||||
|
128 l-92 52 -3 82 -3 81 98 -43 c54 -24 137 -62 185 -85z m3594 73 c-3 -9 -6
|
||||||
|
-39 -6 -67 l-1 -52 -77 -35 c-42 -19 -135 -74 -207 -122 l-130 -86 -3 106 c-3
|
||||||
|
120 0 126 63 117 35 -5 45 -2 65 20 13 14 27 25 31 25 4 0 61 25 126 55 127
|
||||||
|
58 149 64 139 39z m930 -30 c57 -27 154 -150 154 -195 0 -18 -93 -103 -110
|
||||||
|
-100 -8 1 -53 22 -100 45 -93 46 -161 69 -170 58 -3 -4 -36 -8 -75 -10 -43 -2
|
||||||
|
-82 -10 -100 -21 -45 -26 -79 -95 -79 -158 l1 -53 -42 0 c-30 0 -45 5 -49 16
|
||||||
|
-3 9 -6 81 -6 160 l0 144 36 40 c62 69 160 85 251 42 30 -14 37 -14 56 -2 83
|
||||||
|
53 166 66 233 34z m-4914 -315 c14 -121 8 -139 -46 -125 -21 5 -24 13 -31 87
|
||||||
|
-7 89 -3 99 44 95 23 -3 27 -8 33 -57z m4158 29 c0 -13 3 -51 5 -85 l4 -63
|
||||||
|
-44 0 c-44 0 -45 1 -45 33 0 17 3 56 6 85 7 51 7 52 40 52 28 0 34 -4 34 -22z
|
||||||
|
m1040 -263 c0 -22 -179 -337 -259 -455 l-30 -44 21 -23 c21 -23 22 -23 330
|
||||||
|
-23 257 0 310 -2 314 -14 11 -28 -36 -253 -76 -371 -69 -201 -171 -378 -312
|
||||||
|
-541 -269 -312 -664 -512 -1093 -554 -110 -10 -868 -11 -1080 0 -60 3 -200 -1
|
||||||
|
-310 -8 -278 -19 -935 -21 -1150 -3 -93 8 -235 12 -315 10 -80 -2 -392 -4
|
||||||
|
-695 -4 -628 0 -658 3 -894 81 -442 146 -774 430 -976 833 -68 137 -132 344
|
||||||
|
-153 497 l-8 61 65 7 c36 3 186 6 332 6 253 0 267 1 284 20 18 19 16 23 -57
|
||||||
|
132 -116 174 -192 305 -218 373 l-10 25 3145 0 c1730 0 3145 -2 3145 -5z"/>
|
||||||
|
<path d="M4825 8594 c-16 -2 -79 -9 -140 -15 -309 -30 -687 -126 -921 -234
|
||||||
|
-43 -20 -101 -46 -128 -58 -28 -12 -81 -38 -117 -59 -36 -21 -69 -38 -72 -38
|
||||||
|
-16 0 -304 -180 -358 -224 -14 -12 -41 -32 -59 -46 -18 -14 -44 -35 -57 -48
|
||||||
|
-12 -12 -25 -22 -29 -21 -12 3 -94 -72 -89 -82 3 -5 0 -6 -7 -4 -11 5 -251
|
||||||
|
-222 -335 -316 -21 -23 -21 -25 -4 -25 12 0 17 5 13 15 -3 9 -1 12 6 7 7 -4
|
||||||
|
12 -2 12 6 0 9 3 9 10 -2 7 -12 10 -8 10 15 1 28 1 29 15 11 14 -19 15 -19 21
|
||||||
|
0 11 27 26 35 43 21 12 -10 14 -9 8 7 -6 14 -4 17 9 12 12 -4 15 -2 11 9 -8
|
||||||
|
20 13 76 25 69 6 -4 6 -10 -1 -17 -19 -19 -12 -35 20 -51 28 -14 30 -14 25 0
|
||||||
|
-5 14 14 44 28 44 10 0 6 -36 -5 -47 -8 -8 -8 -16 0 -30 10 -17 10 -17 12 2 1
|
||||||
|
11 1 23 1 26 -1 4 10 6 23 5 14 0 25 -6 25 -12 0 -21 45 -7 57 17 7 13 18 24
|
||||||
|
25 24 14 1 12 24 -3 40 -6 6 -12 2 -15 -13 -4 -12 -13 -22 -21 -22 -8 0 -11 5
|
||||||
|
-7 11 3 6 0 15 -7 20 -7 4 -10 12 -5 16 5 4 11 2 13 -4 8 -21 20 -15 28 14 4
|
||||||
|
19 9 23 14 14 6 -10 13 -7 25 10 l17 24 -7 -27 c-10 -43 13 -34 24 10 7 25 10
|
||||||
|
30 11 15 1 -13 6 -23 12 -23 8 0 7 -6 -2 -17 -13 -17 -13 -17 5 -3 51 39 78
|
||||||
|
69 72 79 -5 7 -1 9 8 5 9 -3 16 -1 16 4 0 6 10 14 21 17 29 9 139 94 139 106
|
||||||
|
0 6 4 8 9 5 8 -5 69 35 80 53 4 5 13 11 21 13 8 2 21 10 28 18 11 12 12 12 6
|
||||||
|
1 -4 -8 12 -1 37 16 81 57 224 134 244 131 13 -2 21 -12 23 -28 3 -26 1 -28
|
||||||
|
-118 -93 -116 -63 -200 -119 -193 -130 3 -5 1 -7 -5 -3 -19 12 -227 -138 -216
|
||||||
|
-156 4 -7 2 -8 -4 -4 -13 8 -74 -42 -67 -54 3 -4 -3 -7 -13 -6 -10 0 -17 -6
|
||||||
|
-17 -16 0 -10 -6 -23 -14 -30 -12 -11 -13 -10 -7 6 5 15 4 17 -7 8 -16 -14
|
||||||
|
-16 -38 2 -70 13 -24 36 -20 27 4 -6 15 11 18 38 8 9 -3 13 -10 10 -15 -3 -5
|
||||||
|
-9 -7 -14 -4 -4 3 -10 -2 -14 -10 -8 -21 0 -19 53 12 2 2 -8 12 -22 24 -30 23
|
||||||
|
-34 36 -13 36 8 0 20 -11 27 -24 16 -29 21 -29 40 3 l16 27 -1 -32 c-1 -20 -5
|
||||||
|
-30 -13 -27 -7 3 -15 1 -18 -4 -3 -5 4 -11 15 -15 11 -3 20 -11 20 -16 0 -5 5
|
||||||
|
-9 10 -9 6 0 10 6 10 14 0 8 6 17 13 19 7 3 5 6 -5 6 -10 1 -18 6 -18 12 0 6
|
||||||
|
9 9 20 6 11 -3 20 -1 20 4 0 4 -9 13 -20 19 -11 6 -20 15 -20 20 0 18 20 10
|
||||||
|
42 -15 16 -19 24 -22 30 -13 5 9 8 8 8 -4 0 -10 -7 -18 -15 -18 -14 0 -35 -29
|
||||||
|
-35 -48 0 -6 6 -12 14 -15 11 -4 14 1 13 21 -2 19 3 27 18 30 11 2 23 9 27 16
|
||||||
|
6 8 8 7 8 -2 0 -9 8 -11 23 -8 12 3 16 3 10 0 -19 -8 -16 -24 2 -18 10 4 13
|
||||||
|
13 10 24 -3 10 -1 21 5 25 16 10 25 -25 11 -46 -6 -11 -7 -19 -2 -19 17 0 30
|
||||||
|
27 26 51 -5 26 12 79 26 79 4 0 11 -4 14 -10 3 -5 -1 -10 -10 -10 -9 0 -14 -4
|
||||||
|
-10 -9 3 -5 1 -13 -5 -16 -8 -5 -8 -11 -1 -19 6 -7 7 -16 3 -21 -4 -4 4 -1 18
|
||||||
|
6 14 8 27 17 30 20 3 3 21 14 40 25 19 10 39 25 43 32 4 6 13 12 18 12 6 0 34
|
||||||
|
15 62 34 29 19 64 40 80 47 15 7 27 16 27 21 0 4 9 8 21 8 12 0 17 4 14 11 -4
|
||||||
|
6 -1 9 6 8 8 -2 52 16 98 39 46 23 88 42 93 42 5 0 28 8 51 19 67 29 81 34 91
|
||||||
|
32 4 -1 13 3 20 8 12 10 176 61 281 87 33 8 67 19 76 24 9 4 61 13 115 20 54
|
||||||
|
6 137 18 183 26 46 8 124 14 172 14 l89 0 1 218 c1 119 1 220 1 223 -2 12 43
|
||||||
|
-3 56 -19 9 -12 12 -72 12 -221 0 -120 4 -200 9 -192 5 8 10 9 12 3 4 -12 135
|
||||||
|
-19 146 -9 3 4 13 1 21 -6 12 -9 16 -9 19 1 5 14 33 17 33 2 0 -5 6 -7 14 -4
|
||||||
|
8 3 17 0 21 -5 3 -6 11 -8 17 -5 6 4 14 1 18 -6 5 -8 33 -13 78 -14 39 0 68
|
||||||
|
-4 67 -7 -6 -8 131 -28 158 -23 19 4 20 3 3 -4 -19 -8 -19 -9 2 -14 12 -4 24
|
||||||
|
-2 28 3 3 5 17 1 31 -9 15 -9 36 -15 46 -14 12 2 17 -1 13 -7 -5 -8 14 -11 58
|
||||||
|
-11 54 0 64 -3 60 -15 -6 -15 9 -20 49 -17 9 1 17 -5 17 -14 0 -10 6 -14 14
|
||||||
|
-11 8 3 16 2 18 -4 2 -5 21 -12 43 -15 22 -4 46 -14 53 -22 8 -11 28 -16 56
|
||||||
|
-16 32 0 42 -4 39 -13 -3 -7 0 -13 6 -13 6 0 11 6 11 13 0 9 3 8 9 -2 6 -9 10
|
||||||
|
-10 16 -2 5 9 10 9 20 1 7 -6 19 -8 28 -4 8 3 18 1 22 -5 3 -7 -2 -11 -14 -11
|
||||||
|
-11 0 -22 -4 -25 -8 -6 -10 35 -9 51 1 17 11 63 -21 56 -39 -4 -10 3 -14 23
|
||||||
|
-15 16 0 23 -3 16 -6 -16 -6 3 -33 23 -33 8 0 16 -6 18 -12 5 -12 11 16 8 34
|
||||||
|
0 4 9 13 22 19 18 9 20 9 10 -2 -19 -19 -17 -69 3 -69 11 0 14 6 10 23 -3 12
|
||||||
|
-3 17 0 10 3 -7 12 -9 20 -6 8 3 14 0 14 -6 0 -6 -5 -11 -11 -11 -5 0 -7 -4
|
||||||
|
-4 -10 3 -5 13 -10 21 -10 8 0 13 4 10 9 -3 5 2 15 11 22 15 12 16 12 10 -3
|
||||||
|
-8 -22 6 -23 23 -3 7 8 17 15 22 15 6 0 0 -9 -13 -21 l-24 -21 22 5 c16 4 22
|
||||||
|
0 21 -12 -2 -30 2 -51 11 -51 4 0 7 18 5 40 -2 30 1 40 12 40 9 0 12 -5 9 -11
|
||||||
|
-4 -5 -4 -22 -1 -35 6 -21 9 -24 21 -14 11 9 18 9 28 -2 21 -21 31 -58 16 -58
|
||||||
|
-10 0 -10 -3 -2 -11 15 -15 34 -3 26 16 -6 17 22 21 32 5 3 -5 1 -10 -4 -10
|
||||||
|
-14 0 -14 -40 0 -60 8 -11 9 -7 4 18 -7 35 1 41 21 15 12 -16 13 -16 14 -1 0
|
||||||
|
9 -6 19 -12 21 -8 4 -4 8 9 12 12 4 24 14 26 24 3 14 5 13 12 -3 6 -13 4 -21
|
||||||
|
-3 -24 -14 -4 -16 -42 -3 -42 11 0 21 24 22 53 0 21 1 21 8 3 7 -18 8 -18 14
|
||||||
|
-2 4 9 11 14 17 11 18 -11 11 -30 -17 -48 l-28 -17 27 6 c18 4 33 1 43 -9 21
|
||||||
|
-22 20 -23 -24 -19 -36 4 -38 2 -45 -29 -8 -42 0 -50 9 -9 7 31 9 32 45 26 22
|
||||||
|
-3 41 -2 44 3 3 5 -3 26 -13 47 -44 89 -45 93 -33 119 7 15 17 23 23 20 6 -5
|
||||||
|
7 -11 0 -19 -5 -6 -7 -31 -4 -54 5 -37 9 -42 32 -42 15 0 34 -9 44 -20 14 -17
|
||||||
|
14 -20 2 -20 -8 0 -15 -4 -15 -8 0 -16 40 -6 56 14 8 10 12 13 9 6 -6 -12 -4
|
||||||
|
-12 16 -1 l24 14 -23 3 c-12 2 -20 7 -17 12 3 4 -2 13 -10 20 -13 11 -14 10
|
||||||
|
-9 -4 3 -9 2 -16 -4 -16 -12 0 -24 29 -17 40 3 5 0 12 -6 16 -8 4 -9 3 -5 -4
|
||||||
|
4 -7 0 -12 -11 -13 -10 0 -13 -3 -5 -6 6 -2 12 -11 12 -19 0 -12 -4 -12 -20
|
||||||
|
-2 -11 7 -20 18 -20 25 0 6 -6 14 -12 17 -7 3 -3 3 9 0 28 -6 25 17 -6 50 -20
|
||||||
|
21 -26 23 -42 13 -11 -7 -19 -20 -19 -29 0 -10 -4 -18 -8 -18 -10 0 -9 36 1
|
||||||
|
46 4 4 2 13 -4 21 -12 14 0 18 17 6 5 -5 -3 4 -19 19 -16 14 -80 60 -142 102
|
||||||
|
-78 53 -118 74 -131 70 -14 -4 -15 -3 -6 4 11 7 6 14 -22 31 -20 12 -41 19
|
||||||
|
-47 15 -7 -4 -9 -3 -5 4 4 6 -25 27 -74 52 -65 34 -80 47 -80 65 0 15 8 26 20
|
||||||
|
30 25 8 107 -22 114 -41 3 -8 17 -14 31 -14 14 0 25 -5 25 -11 0 -8 6 -7 17 2
|
||||||
|
10 8 14 9 10 2 -9 -14 29 -52 60 -59 13 -4 20 -11 16 -17 -4 -6 0 -8 10 -4 12
|
||||||
|
4 17 1 17 -9 0 -11 6 -14 16 -10 8 3 12 2 9 -4 -3 -5 6 -12 20 -16 13 -3 23
|
||||||
|
-10 20 -14 -3 -4 9 -13 25 -20 17 -7 30 -17 30 -22 0 -6 9 -8 20 -5 10 3 18 1
|
||||||
|
17 -3 -2 -10 100 -100 114 -100 5 0 9 5 9 10 0 6 5 10 10 10 7 0 7 -6 1 -19
|
||||||
|
-8 -14 -5 -21 14 -31 14 -7 25 -17 25 -22 0 -4 7 -8 15 -8 8 0 14 -6 13 -12
|
||||||
|
-2 -9 7 -12 25 -10 18 2 26 -1 22 -8 -6 -10 16 -40 30 -40 4 0 25 -18 47 -40
|
||||||
|
37 -39 58 -44 58 -14 0 18 17 18 37 -1 8 -8 19 -12 24 -9 6 3 22 3 37 -1 18
|
||||||
|
-4 22 -9 13 -14 -10 -7 -10 -12 0 -29 11 -17 10 -24 -5 -47 -10 -15 -15 -29
|
||||||
|
-12 -32 3 -3 8 2 12 11 3 9 13 16 21 16 8 0 21 6 29 14 19 20 51 9 59 -21 4
|
||||||
|
-19 9 -22 19 -14 21 17 -2 61 -32 61 -13 0 -21 4 -17 9 14 23 -15 18 -33 -5
|
||||||
|
-19 -27 -19 -27 -25 -5 -4 17 0 24 17 30 12 5 22 18 23 31 2 19 -2 22 -26 17
|
||||||
|
-16 -3 -31 -3 -35 0 -9 10 15 34 27 26 6 -4 8 0 4 10 -4 11 -2 14 8 11 8 -3
|
||||||
|
11 -12 9 -19 -3 -7 4 -16 15 -20 12 -3 21 -10 21 -15 0 -5 7 -7 15 -4 8 4 15
|
||||||
|
1 15 -5 0 -6 -7 -11 -15 -11 -22 0 -18 -17 4 -23 13 -3 22 1 24 12 4 13 6 11
|
||||||
|
12 -6 4 -13 12 -23 17 -23 5 0 6 -5 2 -12 -5 -8 -2 -9 11 -4 14 5 16 4 6 -7
|
||||||
|
-9 -11 -8 -17 2 -26 8 -6 16 -8 19 -5 3 2 8 -2 11 -11 5 -11 0 -15 -16 -15
|
||||||
|
-19 -1 -20 -2 -6 -10 12 -7 25 -6 42 3 l25 13 -24 23 c-13 12 -28 20 -33 17
|
||||||
|
-5 -3 -8 1 -7 9 1 18 -163 197 -175 189 -5 -3 -8 -2 -7 3 6 18 -166 169 -326
|
||||||
|
285 -214 157 -441 287 -716 411 -229 104 -558 192 -870 233 -108 14 -596 28
|
||||||
|
-665 18z m1902 -509 c0 -8 -4 -15 -9 -15 -10 0 -11 14 -1 23 9 10 10 9 10 -8z
|
||||||
|
m-177 -5 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z
|
||||||
|
m-3040 -40 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4
|
||||||
|
11 -10z m3210 1 c0 -6 -4 -13 -10 -16 -5 -3 -10 1 -10 9 0 9 5 16 10 16 6 0
|
||||||
|
10 -4 10 -9z m-120 -11 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10
|
||||||
|
6 0 11 -4 11 -10z m-3375 -20 c-3 -5 -12 -10 -18 -10 -7 0 -6 4 3 10 19 12 23
|
||||||
|
12 15 0z m3642 -36 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m48
|
||||||
|
-32 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3 15 -9 12 -12z m-65 -33 c0 -14
|
||||||
|
-17 -10 -23 5 -4 10 -1 13 9 9 7 -3 14 -9 14 -14z m-850 7 c0 -3 -4 -8 -10
|
||||||
|
-11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m945 -16 c3 -5 1 -10
|
||||||
|
-4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m19 -38 c-4 -18 -11
|
||||||
|
-32 -16 -32 -6 0 -7 8 -3 18 4 9 10 25 12 35 9 29 14 13 7 -21z m52 12 c-4 -9
|
||||||
|
-9 -15 -11 -12 -3 3 -3 13 1 22 4 9 9 15 11 12 3 -3 3 -13 -1 -22z m-3796 -24
|
||||||
|
c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m600
|
||||||
|
-10 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z
|
||||||
|
m3350 -15 c0 -8 -4 -15 -10 -15 -5 0 -7 7 -4 15 4 8 8 15 10 15 2 0 4 -7 4
|
||||||
|
-15z m-4170 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10
|
||||||
|
-4 10 -10z m3200 0 c0 -5 -4 -10 -9 -10 -6 0 -13 5 -16 10 -3 6 1 10 9 10 9 0
|
||||||
|
16 -4 16 -10z m150 0 c12 -8 11 -10 -7 -10 -12 0 -25 5 -28 10 -8 13 15 13 35
|
||||||
|
0z m684 -59 c-2 -2 -13 4 -24 14 -11 10 -20 15 -20 11 0 -4 -5 -4 -10 -1 -6 4
|
||||||
|
-8 11 -4 16 3 5 18 -1 33 -13 16 -13 27 -25 25 -27z m-3984 25 c0 -3 -4 -8
|
||||||
|
-10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m3687 -18 c-3 -8
|
||||||
|
-6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m468 12 c-3 -5 -12 -10 -18 -10
|
||||||
|
-7 0 -6 4 3 10 19 12 23 12 15 0z m-54 -43 c-8 -8 -11 -7 -11 4 0 9 3 19 7 23
|
||||||
|
4 4 9 2 11 -4 3 -7 -1 -17 -7 -23z m-4058 8 c1 -5 -6 -11 -15 -13 -11 -2 -18
|
||||||
|
3 -18 13 0 17 30 18 33 0z m3922 -3 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3
|
||||||
|
15 -9 12 -12z m-4130 -3 c11 -16 1 -19 -13 -3 -7 8 -8 14 -3 14 5 0 13 -5 16
|
||||||
|
-11z m89 -7 c3 -5 -1 -9 -9 -9 -8 0 -12 4 -9 9 3 4 7 8 9 8 2 0 6 -4 9 -8z
|
||||||
|
m46 -2 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11
|
||||||
|
-10z m4080 0 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10
|
||||||
|
-4 10 -10z m135 0 c-3 -5 -11 -10 -16 -10 -6 0 -7 5 -4 10 3 6 11 10 16 10 6
|
||||||
|
0 7 -4 4 -10z m-370 -26 c-9 -9 -19 -13 -23 -10 -3 4 0 11 8 16 24 15 33 11
|
||||||
|
15 -6z m426 6 c5 0 4 -6 -3 -14 -9 -10 -17 -11 -25 -4 -18 15 -16 31 3 24 9
|
||||||
|
-3 20 -6 25 -6z m-671 -15 c-7 -9 -15 -13 -19 -10 -3 3 1 10 9 15 21 14 24 12
|
||||||
|
10 -5z m518 -6 c4 -11 2 -11 -8 -2 -7 6 -20 9 -29 6 -14 -4 -14 -3 -1 6 18 13
|
||||||
|
32 10 38 -10z m52 -3 c0 -16 -28 -42 -36 -33 -7 6 18 47 28 47 5 0 8 -6 8 -14z
|
||||||
|
m-4140 0 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10
|
||||||
|
-4z m405 -6 c3 -5 2 -10 -4 -10 -5 0 -13 5 -16 10 -3 6 -2 10 4 10 5 0 13 -4
|
||||||
|
16 -10z m3293 -8 c-8 -9 -14 -9 -24 -1 -19 16 -18 17 10 15 18 -1 22 -4 14
|
||||||
|
-14z m74 -7 c3 -14 1 -25 -3 -25 -5 0 -9 11 -9 25 0 14 2 25 4 25 2 0 6 -11 8
|
||||||
|
-25z m-3992 11 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10
|
||||||
|
-2 10 -4z m4384 -20 c-3 -9 -10 -16 -15 -16 -5 0 -4 9 3 20 14 22 21 20 12 -4z
|
||||||
|
m-4364 0 c0 -7 -11 -16 -25 -18 -14 -3 -25 -1 -25 3 0 5 9 9 20 9 11 0 20 5
|
||||||
|
20 10 0 6 2 10 5 10 3 0 5 -6 5 -14z m30 4 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11
|
||||||
|
10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m695 0 c-3 -5 -13 -10 -21 -10 -8 0 -14
|
||||||
|
5 -14 10 0 6 9 10 21 10 11 0 17 -4 14 -10z m-795 -15 c-7 -8 -17 -15 -23 -15
|
||||||
|
-6 0 -2 7 9 15 25 19 30 19 14 0z m465 5 c3 -5 -1 -10 -9 -10 -9 0 -16 5 -16
|
||||||
|
10 0 6 4 10 9 10 6 0 13 -4 16 -10z m98 -42 c9 -6 9 -8 0 -8 -14 0 -33 32 -32
|
||||||
|
52 0 7 5 2 10 -12 6 -13 15 -28 22 -32z m3527 37 c0 -9 -6 -12 -15 -9 -8 4
|
||||||
|
-12 10 -9 15 8 14 24 10 24 -6z m265 5 c-3 -5 -11 -10 -16 -10 -6 0 -7 5 -4
|
||||||
|
10 3 6 11 10 16 10 6 0 7 -4 4 -10z m-3765 -4 c0 -2 -7 -6 -15 -10 -8 -3 -15
|
||||||
|
-1 -15 4 0 6 7 10 15 10 8 0 15 -2 15 -4z m98 -21 c-3 -3 -9 2 -12 12 -6 14
|
||||||
|
-5 15 5 6 7 -7 10 -15 7 -18z m3299 -1 c-9 -9 -28 6 -21 18 4 6 10 6 17 -1 6
|
||||||
|
-6 8 -13 4 -17z m525 19 c-10 -4 -10 -8 -1 -19 10 -12 9 -18 -5 -32 -16 -16
|
||||||
|
-17 -15 -10 13 6 29 6 29 -9 10 -11 -14 -16 -16 -17 -6 0 15 29 41 45 40 6 0
|
||||||
|
4 -3 -3 -6z m-4412 -13 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10
|
||||||
|
10 6 0 10 -4 10 -10z m550 1 c0 -5 -7 -12 -16 -15 -14 -5 -15 -4 -4 9 14 17
|
||||||
|
20 19 20 6z m-710 -22 c0 -6 -4 -7 -10 -4 -5 3 -10 11 -10 16 0 6 5 7 10 4 6
|
||||||
|
-3 10 -11 10 -16z m810 11 c0 -5 -7 -10 -15 -10 -8 0 -15 5 -15 10 0 6 7 10
|
||||||
|
15 10 8 0 15 -4 15 -10z m3870 -10 c0 -11 -4 -20 -9 -20 -5 0 -11 9 -14 20 -3
|
||||||
|
13 0 20 9 20 8 0 14 -9 14 -20z m-4610 1 c0 -5 -7 -14 -15 -21 -13 -10 -15 -9
|
||||||
|
-15 9 0 12 6 21 15 21 8 0 15 -4 15 -9z m385 -1 c3 -5 -1 -10 -9 -10 -9 0 -16
|
||||||
|
5 -16 10 0 6 4 10 9 10 6 0 13 -4 16 -10z m3643 -10 c-13 -20 -28 -27 -28 -12
|
||||||
|
0 10 22 32 32 32 5 0 3 -9 -4 -20z m-3350 -26 c-10 -10 -28 6 -28 24 0 15 1
|
||||||
|
15 17 -1 9 -9 14 -19 11 -23z m3442 20 c0 -8 -4 -12 -10 -9 -5 3 -10 10 -10
|
||||||
|
16 0 5 5 9 10 9 6 0 10 -7 10 -16z m-3673 -9 c18 -19 9 -33 -10 -16 -21 17
|
||||||
|
-77 3 -77 -20 0 -32 -18 -30 -23 4 -5 31 2 53 10 31 4 -13 53 -6 53 7 0 15 30
|
||||||
|
10 47 -6z m278 5 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8
|
||||||
|
-4 11 -10z m3838 -4 c-3 -4 1 -12 8 -17 10 -6 8 -9 -9 -9 -15 0 -21 4 -16 12
|
||||||
|
5 8 2 9 -10 5 -20 -8 -39 0 -31 13 3 5 19 8 34 7 16 -1 27 -6 24 -11z m-4633
|
||||||
|
-11 c0 -8 -4 -15 -10 -15 -5 0 -7 7 -4 15 4 8 8 15 10 15 2 0 4 -7 4 -15z
|
||||||
|
m646 -10 c-3 -9 -11 -13 -16 -10 -8 5 -7 11 1 21 14 18 24 11 15 -11z m3884
|
||||||
|
11 c0 -9 7 -12 20 -9 24 6 27 -12 4 -21 -19 -7 -17 -8 -33 22 -8 14 -8 22 -1
|
||||||
|
22 5 0 10 -6 10 -14z m-4440 -6 c0 -5 7 -10 15 -10 8 0 15 -4 15 -9 0 -5 -11
|
||||||
|
-8 -24 -8 -18 0 -24 5 -23 18 1 19 17 27 17 9z m4065 0 c3 -5 -1 -10 -9 -10
|
||||||
|
-9 0 -16 5 -16 10 0 6 4 10 9 10 6 0 13 -4 16 -10z m-3448 -32 c-3 -8 -6 -5
|
||||||
|
-6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-777 2 c0 -5 -2 -10 -4 -10 -3 0 -8
|
||||||
|
5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m650 0 c0 -5 -5 -10 -11 -10 -5 0
|
||||||
|
-7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m21 -23 c-8 -8 -11 -7 -11 4 0 20
|
||||||
|
13 34 18 19 3 -7 -1 -17 -7 -23z m-734 -29 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13
|
||||||
|
3 -3 4 -12 1 -19z"/>
|
||||||
|
<path d="M6384 7739 c-3 -6 -1 -16 5 -22 8 -8 11 -5 11 11 0 24 -5 28 -16 11z"/>
|
||||||
|
<path d="M6607 7615 c-17 -12 -16 -13 7 -11 25 1 34 10 18 20 -4 2 -15 -2 -25
|
||||||
|
-9z"/>
|
||||||
|
<path d="M2935 7589 c-11 -17 1 -21 15 -4 8 9 8 15 2 15 -6 0 -14 -5 -17 -11z"/>
|
||||||
|
<path d="M6715 7560 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
|
||||||
|
-7 -4 -4 -10z"/>
|
||||||
|
<path d="M6746 7554 c-9 -24 -2 -26 12 -4 7 11 8 20 3 20 -5 0 -12 -7 -15 -16z"/>
|
||||||
|
<path d="M2987 7502 c1 -8 3 -16 3 -18 0 -2 7 -4 15 -4 8 0 15 5 15 10 0 6 -6
|
||||||
|
10 -14 10 -8 0 -16 3 -19 8 -2 4 -2 1 0 -6z"/>
|
||||||
|
<path d="M2700 7494 c0 -8 5 -12 10 -9 6 3 10 10 10 16 0 5 -4 9 -10 9 -5 0
|
||||||
|
-10 -7 -10 -16z"/>
|
||||||
|
<path d="M7020 7500 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
|
||||||
|
-4 -4 -4 -10z"/>
|
||||||
|
<path d="M7316 7501 c-14 -5 -16 -10 -7 -15 6 -4 20 -2 29 5 12 10 11 7 -3 -9
|
||||||
|
-16 -19 -17 -25 -6 -32 17 -10 63 9 55 22 -4 6 -11 5 -17 -1 -16 -16 -31 -13
|
||||||
|
-17 4 6 8 9 19 5 25 -7 11 -12 12 -39 1z"/>
|
||||||
|
<path d="M2666 7485 c-9 -26 -7 -32 5 -12 6 10 9 21 6 23 -2 3 -7 -2 -11 -11z"/>
|
||||||
|
<path d="M2736 7488 c4 -12 -1 -17 -18 -20 -16 -2 -19 -5 -8 -9 8 -4 23 -3 33
|
||||||
|
0 16 6 16 8 2 26 -11 15 -14 16 -9 3z"/>
|
||||||
|
<path d="M2781 7484 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
|
||||||
|
<path d="M7153 7493 c-7 -3 -13 -9 -13 -15 0 -6 7 -8 15 -4 8 3 15 3 15 0 0
|
||||||
|
-2 -10 -9 -22 -14 -22 -8 -22 -9 -2 -9 11 -1 25 -6 31 -12 7 -7 11 -3 11 15 0
|
||||||
|
28 -16 46 -35 39z"/>
|
||||||
|
<path d="M2944 7482 c-7 -4 -8 -15 -3 -27 4 -11 8 -15 9 -10 1 6 6 1 11 -10 8
|
||||||
|
-17 9 -16 3 5 -3 14 -6 31 -6 38 -1 6 -2 12 -2 12 -1 0 -6 -4 -12 -8z"/>
|
||||||
|
<path d="M6895 7470 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
|
||||||
|
-8 -4 -11 -10z"/>
|
||||||
|
<path d="M3020 7465 c0 -5 5 -17 10 -25 5 -8 10 -10 10 -5 0 6 -5 17 -10 25
|
||||||
|
-5 8 -10 11 -10 5z"/>
|
||||||
|
<path d="M3275 7460 c-3 -5 3 -10 14 -10 12 0 21 5 21 10 0 6 -6 10 -14 10 -8
|
||||||
|
0 -18 -4 -21 -10z"/>
|
||||||
|
<path d="M2907 7452 c-5 -7 -1 -22 12 -37 10 -14 22 -21 25 -16 3 5 0 11 -8
|
||||||
|
14 -8 3 -16 16 -18 29 -2 16 -5 19 -11 10z"/>
|
||||||
|
<path d="M3114 7435 c1 -25 10 -32 20 -16 7 11 -3 41 -14 41 -4 0 -7 -11 -6
|
||||||
|
-25z"/>
|
||||||
|
<path d="M3150 7449 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
||||||
|
-5 -10 -11z"/>
|
||||||
|
<path d="M7026 7440 c-10 -11 -16 -26 -13 -35 9 -23 24 -18 23 7 -1 31 30 35
|
||||||
|
54 6 16 -18 19 -20 20 -6 1 49 -47 65 -84 28z"/>
|
||||||
|
<path d="M7200 7456 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
|
||||||
|
13z"/>
|
||||||
|
<path d="M2620 7430 c0 -5 7 -10 16 -10 8 0 12 5 9 10 -3 6 -10 10 -16 10 -5
|
||||||
|
0 -9 -4 -9 -10z"/>
|
||||||
|
<path d="M2680 7425 c0 -8 5 -15 10 -15 6 0 10 7 10 15 0 8 -4 15 -10 15 -5 0
|
||||||
|
-10 -7 -10 -15z"/>
|
||||||
|
<path d="M3070 7430 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
|
||||||
|
-15 -4 -15 -10z"/>
|
||||||
|
<path d="M6955 7430 c3 -5 10 -10 16 -10 5 0 9 5 9 10 0 6 -7 10 -16 10 -8 0
|
||||||
|
-12 -4 -9 -10z"/>
|
||||||
|
<path d="M2581 7410 c14 -31 19 -36 19 -24 0 6 -7 19 -16 30 -14 18 -14 18 -3
|
||||||
|
-6z"/>
|
||||||
|
<path d="M2870 7415 c-9 -11 -9 -15 -1 -15 7 0 9 -4 6 -10 -3 -5 -2 -10 3 -10
|
||||||
|
14 0 22 25 13 39 -6 9 -11 8 -21 -4z"/>
|
||||||
|
<path d="M3160 7415 c-6 -8 -10 -19 -8 -26 2 -6 9 0 16 15 13 29 10 33 -8 11z"/>
|
||||||
|
<path d="M7137 7394 c-30 -36 -31 -46 -1 -17 13 13 19 14 22 5 2 -6 8 -12 14
|
||||||
|
-12 7 0 6 5 -1 14 -6 7 -9 21 -5 30 9 23 3 19 -29 -20z"/>
|
||||||
|
<path d="M7450 7415 c0 -8 5 -15 10 -15 6 0 10 7 10 15 0 8 -4 15 -10 15 -5 0
|
||||||
|
-10 -7 -10 -15z"/>
|
||||||
|
<path d="M2991 7404 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
|
||||||
|
<path d="M3250 7410 c0 -5 7 -7 15 -4 8 4 15 8 15 10 0 2 -7 4 -15 4 -8 0 -15
|
||||||
|
-4 -15 -10z"/>
|
||||||
|
<path d="M7243 7408 c3 -9 1 -19 -6 -21 -7 -2 -9 -8 -5 -12 4 -4 14 -1 22 8
|
||||||
|
14 13 14 16 -1 29 -15 11 -16 11 -10 -4z"/>
|
||||||
|
<path d="M2475 7400 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
|
||||||
|
-7 -4 -4 -10z"/>
|
||||||
|
<path d="M7058 7398 c5 -5 16 -8 23 -6 8 3 3 7 -10 11 -17 4 -21 3 -13 -5z"/>
|
||||||
|
<path d="M6938 7393 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
|
||||||
|
<path d="M6986 7387 c3 -10 9 -15 12 -12 3 3 0 11 -7 18 -10 9 -11 8 -5 -6z"/>
|
||||||
|
<path d="M7195 7390 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
|
||||||
|
<path d="M7415 7390 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
|
||||||
|
-8 -4 -11 -10z"/>
|
||||||
|
<path d="M7470 7380 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
|
||||||
|
-10 -4 -10 -10z"/>
|
||||||
|
<path d="M2896 7364 c-9 -24 -2 -26 12 -4 7 11 8 20 3 20 -5 0 -12 -7 -15 -16z"/>
|
||||||
|
<path d="M7057 7359 c7 -7 15 -10 18 -7 3 3 -2 9 -12 12 -14 6 -15 5 -6 -5z"/>
|
||||||
|
<path d="M7430 7360 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
|
||||||
|
-10 -4 -10 -10z"/>
|
||||||
|
<path d="M7210 7350 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
|
||||||
|
-4 -4 -4 -10z"/>
|
||||||
|
<path d="M7590 7342 c0 -5 7 -16 16 -23 14 -12 16 -11 13 5 -4 20 -29 35 -29
|
||||||
|
18z"/>
|
||||||
|
<path d="M7680 7346 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
|
||||||
|
13z"/>
|
||||||
|
<path d="M2790 7329 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
||||||
|
-5 -10 -11z"/>
|
||||||
|
<path d="M7309 7307 c6 -8 8 -17 4 -20 -3 -4 -2 -7 4 -7 18 0 22 12 8 26 -18
|
||||||
|
18 -31 18 -16 1z"/>
|
||||||
|
<path d="M7630 7280 c0 -5 4 -10 9 -10 6 0 13 5 16 10 3 6 -1 10 -9 10 -9 0
|
||||||
|
-16 -4 -16 -10z"/>
|
||||||
|
<path d="M7498 7273 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
|
||||||
|
<path d="M7770 7243 c0 -5 10 -18 23 -29 l22 -19 -20 25 c-11 14 -21 27 -22
|
||||||
|
29 -2 2 -3 0 -3 -6z"/>
|
||||||
|
<path d="M8057 5833 c-25 -25 -43 -52 -40 -59 2 -7 26 -15 52 -19 50 -7 171
|
||||||
|
-4 171 5 0 10 -115 120 -126 120 -6 0 -32 -21 -57 -47z m4 -56 c-10 -9 -11 -8
|
||||||
|
-5 6 3 10 9 15 12 12 3 -3 0 -11 -7 -18z"/>
|
||||||
|
<path d="M3274 5011 c20 -22 26 -25 26 -13 0 4 -10 13 -22 21 -23 14 -23 14
|
||||||
|
-4 -8z"/>
|
||||||
|
<path d="M7106 4745 c-9 -26 -7 -32 5 -12 6 10 9 21 6 23 -2 3 -7 -2 -11 -11z"/>
|
||||||
|
<path d="M7192 4720 c-18 -29 -15 -38 4 -12 9 13 14 25 12 27 -2 2 -9 -5 -16
|
||||||
|
-15z"/>
|
||||||
|
<path d="M6830 4749 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
||||||
|
-5 -10 -11z"/>
|
||||||
|
<path d="M5186 4178 c1 -128 3 -241 3 -250 1 -17 18 -18 216 -18 l215 0 0 250
|
||||||
|
0 250 -219 0 -218 0 3 -232z"/>
|
||||||
|
<path d="M3946 4139 c-4 -121 -3 -216 2 -221 5 -5 82 -7 173 -6 l164 3 3 218
|
||||||
|
2 217 -168 0 -169 0 -7 -211z"/>
|
||||||
|
<path d="M4502 4133 l3 -218 230 0 230 0 3 218 2 217 -235 0 -235 0 2 -217z"/>
|
||||||
|
<path d="M5842 4133 l3 -218 165 0 165 0 3 218 2 217 -170 0 -170 0 2 -217z
|
||||||
|
m236 0 l-3 -128 -67 -3 -68 -3 0 131 0 130 70 0 71 0 -3 -127z"/>
|
||||||
|
<path d="M3926 3175 l-37 -45 -516 -2 c-479 -3 -517 -4 -527 -20 -8 -13 -8
|
||||||
|
-23 0 -35 10 -17 47 -18 493 -21 264 -1 481 -5 481 -8 0 -8 -71 -95 -139 -170
|
||||||
|
-86 -94 -141 -165 -141 -181 0 -8 9 -28 21 -44 l20 -29 -119 0 c-101 0 -123
|
||||||
|
-3 -142 -18 -29 -23 -22 -67 12 -76 13 -3 299 -6 636 -6 599 0 612 0 632 20
|
||||||
|
26 26 25 45 -2 64 -19 14 -64 16 -289 16 -229 0 -266 2 -266 15 0 12 17 15 88
|
||||||
|
15 92 0 119 11 119 50 0 18 -78 228 -104 278 -7 15 -17 37 -20 50 l-7 22 140
|
||||||
|
0 c133 0 141 1 155 22 14 20 14 24 -1 40 -14 15 -37 18 -182 20 l-166 3 -23
|
||||||
|
43 c-33 59 -66 58 -116 -3z m27 -257 c-3 -95 -6 -174 -7 -175 -5 -6 -246 -6
|
||||||
|
-246 0 0 5 27 40 59 78 32 39 88 115 122 170 35 54 67 99 70 99 4 0 4 -78 2
|
||||||
|
-172z m146 -32 c54 -144 54 -146 -10 -146 l-50 0 0 58 c1 31 -1 104 -4 162 -6
|
||||||
|
120 -9 123 64 -74z m-151 -248 c-3 -9 -38 -14 -115 -16 -89 -2 -112 0 -123 13
|
||||||
|
-11 13 2 15 115 15 97 0 126 -3 123 -12z"/>
|
||||||
|
<path d="M5532 3118 c-18 -18 -14 -46 7 -58 13 -7 298 -10 855 -10 826 0 836
|
||||||
|
0 856 20 16 16 18 25 10 40 -11 20 -24 20 -863 20 -650 0 -856 -3 -865 -12z"/>
|
||||||
|
<path d="M7648 2785 c-32 -30 -58 -58 -58 -63 0 -5 7 -15 15 -22 13 -11 20 -9
|
||||||
|
40 10 l24 23 62 -57 62 -58 21 22 21 22 -59 53 c-57 51 -59 55 -47 79 14 25 8
|
||||||
|
46 -12 46 -7 -1 -38 -25 -69 -55z"/>
|
||||||
|
<path d="M2402 2734 c-40 -36 -72 -69 -72 -72 0 -4 7 -16 15 -26 14 -19 15
|
||||||
|
-18 36 7 30 39 39 33 32 -22 -5 -43 -3 -50 18 -65 23 -16 24 -15 27 1 10 60
|
||||||
|
12 63 47 63 24 0 38 7 49 22 27 39 20 76 -23 119 -21 22 -43 39 -48 39 -5 0
|
||||||
|
-41 -30 -81 -66z m108 -24 c12 -23 6 -40 -15 -40 -14 0 -35 29 -35 49 0 19 39
|
||||||
|
12 50 -9z"/>
|
||||||
|
<path d="M6262 2779 c-55 -28 -78 -60 -62 -88 14 -26 35 -26 88 -1 53 26 102
|
||||||
|
25 154 -1 65 -33 117 -5 84 46 -40 61 -181 85 -264 44z"/>
|
||||||
|
<path d="M7526 2671 c-22 -24 -21 -27 22 -57 l37 -26 -50 8 c-116 17 -121 2
|
||||||
|
-33 -96 66 -73 81 -81 97 -52 8 13 3 24 -22 50 -35 36 -27 40 49 21 39 -10 48
|
||||||
|
-9 62 5 15 15 12 21 -48 82 -81 82 -93 89 -114 65z"/>
|
||||||
|
<path d="M2605 2583 c-88 -95 -87 -90 -25 -144 43 -38 58 -46 72 -38 27 15 22
|
||||||
|
34 -17 60 -19 13 -35 29 -35 36 0 20 22 27 34 11 6 -8 21 -20 32 -26 18 -9 24
|
||||||
|
-8 34 4 11 12 8 20 -15 44 -21 22 -26 33 -18 41 7 7 21 2 46 -20 39 -35 49
|
||||||
|
-37 66 -17 9 11 0 24 -46 65 -32 28 -60 50 -63 50 -3 0 -32 -30 -65 -66z"/>
|
||||||
|
<path d="M5650 2607 c-27 -14 -36 -43 -20 -67 8 -13 86 -15 579 -18 510 -2
|
||||||
|
571 -1 585 13 20 21 20 49 0 69 -14 14 -79 16 -567 16 -424 0 -558 -3 -577
|
||||||
|
-13z"/>
|
||||||
|
<path d="M7308 2502 c-26 -20 -47 -41 -47 -47 -1 -5 29 -47 64 -93 74 -92 68
|
||||||
|
-91 145 -23 43 38 44 40 28 57 -17 17 -19 17 -47 -10 -18 -17 -36 -26 -45 -23
|
||||||
|
-23 9 -20 22 9 41 26 17 30 32 16 55 -7 11 -16 8 -45 -14 -32 -25 -36 -26 -43
|
||||||
|
-10 -4 13 3 25 26 44 23 19 30 32 25 44 -10 26 -34 20 -86 -21z"/>
|
||||||
|
<path d="M4940 2521 c-54 -17 -90 -42 -96 -68 -14 -53 27 -78 74 -44 49 34
|
||||||
|
101 37 162 8 41 -20 58 -23 72 -16 47 25 26 74 -46 108 -47 21 -117 27 -166
|
||||||
|
12z"/>
|
||||||
|
<path d="M2885 2444 c-11 -9 -51 -32 -90 -51 -38 -19 -72 -37 -74 -39 -2 -2 4
|
||||||
|
-13 14 -24 11 -13 25 -18 39 -14 30 7 74 -29 78 -64 2 -18 10 -28 24 -30 18
|
||||||
|
-3 23 7 43 103 17 83 19 110 10 121 -14 17 -19 17 -44 -2z m-15 -89 c0 -26
|
||||||
|
-14 -33 -25 -15 -9 14 1 40 15 40 5 0 10 -11 10 -25z"/>
|
||||||
|
<path d="M7156 2389 c-10 -16 -13 -36 -9 -70 3 -28 2 -49 -4 -49 -5 0 -24 11
|
||||||
|
-43 25 -38 28 -53 31 -68 12 -8 -10 0 -31 32 -86 24 -40 51 -80 60 -89 14 -15
|
||||||
|
17 -15 32 -1 14 14 13 19 -6 52 -26 43 -17 48 21 11 37 -36 53 -24 44 35 l-7
|
||||||
|
46 26 -24 c14 -14 26 -30 26 -38 0 -19 14 -16 34 6 20 22 25 14 -62 124 -30
|
||||||
|
37 -55 67 -57 67 -2 0 -11 -10 -19 -21z"/>
|
||||||
|
<path d="M3023 2273 c-28 -43 -54 -83 -57 -90 -9 -16 98 -87 119 -80 25 10 17
|
||||||
|
35 -19 60 l-35 23 41 67 c39 64 44 97 16 97 -8 0 -36 -35 -65 -77z"/>
|
||||||
|
<path d="M4430 2330 c-24 -24 -24 -30 -6 -55 13 -18 39 -18 652 -17 593 1 640
|
||||||
|
3 651 19 17 23 16 30 -7 53 -20 20 -33 20 -645 20 -612 0 -625 0 -645 -20z"/>
|
||||||
|
<path d="M6893 2243 c-30 -6 -63 -49 -63 -83 0 -19 8 -33 26 -45 22 -14 33
|
||||||
|
-15 72 -5 30 7 48 8 55 1 14 -14 -10 -41 -37 -41 -31 0 -50 -16 -43 -34 8 -20
|
||||||
|
58 -21 96 -1 16 8 34 28 41 44 25 61 -34 105 -112 84 -43 -12 -51 -8 -37 18 5
|
||||||
|
11 21 19 35 19 28 0 44 28 23 41 -15 9 -19 9 -56 2z"/>
|
||||||
|
<path d="M3432 2127 c-16 -18 -82 -160 -82 -174 0 -15 43 -29 47 -16 12 35 28
|
||||||
|
43 61 31 27 -11 37 -10 60 2 34 20 49 61 34 94 -15 33 -106 81 -120 63z m63
|
||||||
|
-87 c0 -18 -6 -26 -22 -28 -24 -3 -29 11 -17 43 10 25 39 14 39 -15z"/>
|
||||||
|
<path d="M6659 2111 c-34 -34 -37 -70 -9 -96 16 -14 30 -17 70 -12 29 4 52 2
|
||||||
|
56 -4 10 -16 -16 -38 -49 -41 -39 -4 -43 -29 -6 -42 36 -12 93 17 109 55 23
|
||||||
|
56 -28 95 -114 87 -45 -4 -43 19 3 33 42 12 53 32 25 43 -32 12 -56 5 -85 -23z"/>
|
||||||
|
<path d="M3631 2027 c-5 -12 -23 -56 -40 -97 -28 -69 -29 -76 -14 -87 25 -19
|
||||||
|
33 -16 45 19 10 29 12 30 25 13 7 -11 13 -28 13 -40 0 -26 18 -45 43 -45 17 0
|
||||||
|
18 5 13 35 -6 31 -3 40 23 64 55 51 35 104 -52 140 l-48 21 -8 -23z m79 -61
|
||||||
|
c0 -2 3 -11 6 -19 6 -17 -19 -29 -41 -21 -8 4 -15 15 -15 25 0 14 7 19 25 19
|
||||||
|
14 0 25 -2 25 -4z"/>
|
||||||
|
<path d="M6445 2015 c-58 -57 -15 -122 71 -109 41 6 46 5 42 -12 -2 -13 -16
|
||||||
|
-21 -46 -27 -33 -6 -42 -13 -40 -25 2 -12 15 -18 46 -20 36 -3 47 1 72 27 36
|
||||||
|
35 38 60 7 89 -18 17 -36 22 -75 22 -29 0 -52 4 -52 10 0 13 34 30 59 30 14 0
|
||||||
|
21 6 21 20 0 31 -73 28 -105 -5z"/>
|
||||||
|
<path d="M5928 2003 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
|
||||||
|
<path d="M5808 1973 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
|
||||||
|
<path d="M6257 1950 c-32 -10 -61 -21 -64 -24 -4 -4 54 -194 63 -204 5 -7 144
|
||||||
|
42 144 51 0 4 -5 17 -10 28 -11 19 -11 19 -50 -1 -49 -25 -50 -25 -50 1 0 13
|
||||||
|
10 23 30 30 19 7 30 18 30 29 0 28 -16 33 -49 15 -37 -19 -37 -19 -45 0 -4 12
|
||||||
|
7 21 40 35 32 14 45 25 42 37 -4 24 -16 24 -81 3z"/>
|
||||||
|
<path d="M3839 1911 c-77 -77 2 -215 104 -182 67 22 98 84 73 145 -19 45 -52
|
||||||
|
66 -104 66 -35 0 -49 -6 -73 -29z m115 -37 c23 -22 20 -60 -6 -84 -26 -24 -41
|
||||||
|
-25 -62 -5 -25 25 -29 54 -12 80 19 29 57 33 80 9z"/>
|
||||||
|
<path d="M4738 1903 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
|
||||||
|
<path d="M4848 1893 c12 -2 30 -2 40 0 9 3 -1 5 -23 4 -22 0 -30 -2 -17 -4z"/>
|
||||||
|
<path d="M5263 1893 c9 -2 23 -2 30 0 6 3 -1 5 -18 5 -16 0 -22 -2 -12 -5z"/>
|
||||||
|
<path d="M4100 1851 c-27 -103 -38 -167 -31 -174 17 -17 46 -2 49 25 3 26 5
|
||||||
|
27 45 22 53 -7 87 20 87 69 0 51 -21 68 -99 86 l-41 9 -10 -37z m85 -35 c25
|
||||||
|
-18 13 -46 -20 -46 -25 0 -31 13 -19 44 7 20 15 20 39 2z"/>
|
||||||
|
<path d="M5993 1868 c-31 -35 -34 -45 -22 -72 14 -29 59 -50 95 -43 16 3 27 0
|
||||||
|
31 -10 8 -21 -4 -28 -50 -28 -55 0 -64 -28 -14 -44 60 -20 108 4 122 61 11 42
|
||||||
|
-31 78 -90 78 -57 0 -58 22 -2 31 44 7 51 13 44 34 -10 25 -89 20 -114 -7z"/>
|
||||||
|
<path d="M5776 1818 c-35 -33 -40 -60 -15 -91 17 -22 29 -27 65 -27 31 0 44
|
||||||
|
-4 44 -14 0 -17 -22 -26 -60 -26 -36 0 -49 -19 -25 -37 33 -23 83 -16 116 16
|
||||||
|
16 16 29 38 29 49 0 31 -57 73 -94 70 -22 -2 -31 1 -31 12 0 10 12 16 33 18
|
||||||
|
36 4 54 28 31 43 -25 16 -67 10 -93 -13z"/>
|
||||||
|
<path d="M4307 1759 c-32 -150 -35 -134 23 -147 79 -18 100 -16 100 11 0 19
|
||||||
|
-7 25 -42 33 -60 13 -59 40 0 35 41 -2 43 -1 40 21 -2 18 -10 24 -35 26 -26 3
|
||||||
|
-33 8 -33 24 0 18 4 20 33 13 54 -12 61 -11 65 9 6 27 -7 34 -74 41 l-61 7
|
||||||
|
-16 -73z"/>
|
||||||
|
<path d="M4515 1789 c-2 -8 -11 -54 -19 -104 -12 -70 -13 -91 -3 -97 28 -18
|
||||||
|
47 -1 47 43 0 32 16 21 33 -21 12 -32 20 -40 41 -40 26 0 36 23 16 35 -16 10
|
||||||
|
-11 41 10 60 29 26 27 90 -2 109 -34 22 -117 32 -123 15z m83 -48 c21 -13 10
|
||||||
|
-46 -16 -49 -24 -4 -38 18 -28 43 6 17 24 19 44 6z"/>
|
||||||
|
<path d="M5561 1753 c-25 -92 -40 -167 -35 -175 10 -15 43 -8 54 12 16 30 54
|
||||||
|
36 78 12 19 -19 62 -21 62 -4 0 4 -25 48 -56 99 -64 105 -87 118 -103 56z m57
|
||||||
|
-76 c2 -10 -3 -17 -12 -17 -10 0 -16 9 -16 21 0 24 23 21 28 -4z"/>
|
||||||
|
<path d="M4727 1744 c-4 -16 -9 -64 -13 -106 l-6 -78 30 0 c28 0 31 3 34 38
|
||||||
|
l3 37 22 -41 c23 -43 43 -57 68 -48 12 5 11 12 -5 45 -20 38 -20 38 0 49 15 8
|
||||||
|
20 21 20 49 0 50 -22 69 -92 77 -56 6 -56 6 -61 -22z m101 -51 c3 -17 -2 -23
|
||||||
|
-15 -23 -25 0 -43 19 -36 37 9 22 48 11 51 -14z"/>
|
||||||
|
<path d="M5298 1748 c-8 -13 -18 -32 -22 -43 l-7 -20 -15 20 c-8 11 -20 28
|
||||||
|
-27 39 -9 13 -19 17 -35 12 -12 -4 -22 -11 -22 -14 0 -4 18 -31 40 -61 31 -41
|
||||||
|
40 -62 40 -92 0 -37 2 -39 30 -39 29 0 30 1 29 49 -1 33 7 67 24 104 21 47 23
|
||||||
|
56 10 61 -24 10 -30 7 -45 -16z"/>
|
||||||
|
<path d="M4943 1747 c-11 -18 9 -47 33 -47 23 0 24 -2 24 -80 l0 -80 30 0 30
|
||||||
|
0 0 86 c0 75 2 85 16 80 19 -7 44 10 44 29 0 10 -24 14 -86 17 -47 2 -88 0
|
||||||
|
-91 -5z"/>
|
||||||
|
<path d="M6320 1620 c-23 -7 -23 -8 -3 -9 12 -1 25 4 28 9 3 6 5 10 3 9 -2 -1
|
||||||
|
-14 -5 -28 -9z"/>
|
||||||
|
<path d="M4165 1526 c17 -7 53 -16 80 -19 l50 -5 -44 14 c-25 7 -61 16 -80 19
|
||||||
|
l-36 5 30 -14z"/>
|
||||||
|
<path d="M6020 1530 c-21 -7 -21 -8 -5 -9 11 0 27 4 35 9 18 11 5 11 -30 0z"/>
|
||||||
|
<path d="M5958 1513 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 40 KiB |
|
@ -0,0 +1,28 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/utils/global.dart';
|
||||||
|
|
||||||
|
import '../../../model/offline/offlane_modules.dart';
|
||||||
|
import '../../../model/offline/offline_profile.dart';
|
||||||
|
|
||||||
|
part 'offline_event.dart';
|
||||||
|
part 'offline_state.dart';
|
||||||
|
|
||||||
|
class OfflineBloc extends Bloc<OfflineEvent, OfflineState> {
|
||||||
|
OfflineBloc() : super(OfflineInitial()) {
|
||||||
|
on<SwitchOffline>((event, emit) async {
|
||||||
|
try {
|
||||||
|
List<dynamic> modules = await OFFLINE!.get('modules');
|
||||||
|
List<OfflineModules> offlineModules = [];
|
||||||
|
for (var module in modules) {
|
||||||
|
offlineModules.add(module);
|
||||||
|
}
|
||||||
|
OfflineProfile offlineProfile = await OFFLINE!.get('offline_profile');
|
||||||
|
emit(OfflineModeState(
|
||||||
|
offlineModules: offlineModules, offlineProfile: offlineProfile));
|
||||||
|
} catch (e) {
|
||||||
|
emit(OfflineErrorState(message: e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
part of 'offline_bloc.dart';
|
||||||
|
|
||||||
|
class OfflineEvent extends Equatable {
|
||||||
|
const OfflineEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SwitchOffline extends OfflineEvent {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
part of 'offline_bloc.dart';
|
||||||
|
|
||||||
|
class OfflineState extends Equatable {
|
||||||
|
const OfflineState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class OfflineInitial extends OfflineState {}
|
||||||
|
|
||||||
|
class OfflineModeState extends OfflineState {
|
||||||
|
final OfflineProfile offlineProfile;
|
||||||
|
final List<OfflineModules> offlineModules;
|
||||||
|
const OfflineModeState(
|
||||||
|
{required this.offlineModules, required this.offlineProfile});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [offlineProfile, offlineModules];
|
||||||
|
}
|
||||||
|
|
||||||
|
class OfflineLoadingState extends OfflineState {}
|
||||||
|
|
||||||
|
class OfflineErrorState extends OfflineState {
|
||||||
|
final String message;
|
||||||
|
const OfflineErrorState({required this.message});
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/barangay.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'barangay_admin_event.dart';
|
||||||
|
part 'barangay_admin_state.dart';
|
||||||
|
|
||||||
|
class BarangayAdminBloc extends Bloc<BarangayAdminEvent, BarangayAdminState> {
|
||||||
|
BarangayAdminBloc() : super(BarangayAdminInitial()) {
|
||||||
|
List<Brgy> brgy = [];
|
||||||
|
on<LoadBarangay>((event, emit) async {
|
||||||
|
brgy = await SQLServices.instance.readAllBarangay();
|
||||||
|
|
||||||
|
emit(BarangayLoaded(brgy: brgy));
|
||||||
|
});
|
||||||
|
on<LoadBarangayInMunicipality>((event, emit) async {
|
||||||
|
brgy = await SQLServices.instance
|
||||||
|
.readBrgyInSelectedMunicipality(event.cityCode);
|
||||||
|
|
||||||
|
emit(BarangayLoaded(brgy: brgy));
|
||||||
|
});
|
||||||
|
on<AddBarangay>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBarangay(
|
||||||
|
Brgy(
|
||||||
|
id: event.id,
|
||||||
|
barangayId: event.barangayId,
|
||||||
|
barangayCode: event.barangayCode,
|
||||||
|
cityCode: event.cityCode,
|
||||||
|
barangayDescription: event.barangayDescription),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
part of 'barangay_admin_bloc.dart';
|
||||||
|
|
||||||
|
class BarangayAdminEvent extends Equatable {
|
||||||
|
const BarangayAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddBarangay extends BarangayAdminEvent {
|
||||||
|
final int id;
|
||||||
|
final int barangayId;
|
||||||
|
final String barangayCode;
|
||||||
|
final String cityCode;
|
||||||
|
final String barangayDescription;
|
||||||
|
|
||||||
|
const AddBarangay({
|
||||||
|
required this.id,
|
||||||
|
required this.barangayId,
|
||||||
|
required this.barangayCode,
|
||||||
|
required this.cityCode,
|
||||||
|
required this.barangayDescription,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
barangayId,
|
||||||
|
barangayCode,
|
||||||
|
cityCode,
|
||||||
|
barangayDescription,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadBarangay extends BarangayAdminEvent {
|
||||||
|
const LoadBarangay();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadBarangayInMunicipality extends BarangayAdminEvent {
|
||||||
|
final String cityCode;
|
||||||
|
const LoadBarangayInMunicipality({required this.cityCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [cityCode];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'barangay_admin_bloc.dart';
|
||||||
|
|
||||||
|
class BarangayAdminState extends Equatable {
|
||||||
|
const BarangayAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BarangayAdminInitial extends BarangayAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BarangayLoaded extends BarangayAdminState {
|
||||||
|
final List<Brgy> brgy;
|
||||||
|
|
||||||
|
const BarangayLoaded({required this.brgy});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [brgy];
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/class_components _offline.dart';
|
||||||
|
import '../../../../../model/passo/class_components.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'class_components_admin_event.dart';
|
||||||
|
part 'class_components_admin_state.dart';
|
||||||
|
|
||||||
|
class ClassComponentsAdminBloc
|
||||||
|
extends Bloc<ClassComponentsAdminEvent, ClassComponentsAdminState> {
|
||||||
|
ClassComponentsAdminBloc() : super(ClassComponentsAdminInitial()) {
|
||||||
|
List<ClassComponentsOffline> classes = [];
|
||||||
|
on<LoadClassComponents>((event, emit) async {
|
||||||
|
classes = await SQLServices.instance.readAllClassComponents();
|
||||||
|
|
||||||
|
emit(ClassComponentsAdminLoaded(classes: classes));
|
||||||
|
});
|
||||||
|
on<AddClassComponents>((event, emit) async {
|
||||||
|
await SQLServices.instance.createClassComponents(
|
||||||
|
ClassComponentsOffline(
|
||||||
|
componentName: event.componentName,
|
||||||
|
minBaseUnitvalPercent: event.minBaseUnitvalPercent,
|
||||||
|
maxBaseUnitvalPercent: event.maxBaseUnitvalPercent,
|
||||||
|
minUnitvalSqrmtr: event.minUnitvalSqrmtr,
|
||||||
|
maxUnitvalSqrmtr: event.maxUnitvalSqrmtr,
|
||||||
|
minAddBaseunitval: event.minAddBaseunitval,
|
||||||
|
maxAddBaseunitval: event.maxAddBaseunitval,
|
||||||
|
minDeductBaserate: event.minDeductBaserate,
|
||||||
|
maxDeductBaserate: event.maxDeductBaserate,
|
||||||
|
minLinearMeter: event.minLinearMeter,
|
||||||
|
maxLinearMeter: event.maxLinearMeter,
|
||||||
|
minSpacing: event.minSpacing,
|
||||||
|
maxSpacing: event.maxSpacing,
|
||||||
|
roughFinish: event.roughFinish,
|
||||||
|
highFinish: event.highFinish,
|
||||||
|
withoutBucc: event.withoutBucc),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
part of 'class_components_admin_bloc.dart';
|
||||||
|
|
||||||
|
class ClassComponentsAdminEvent extends Equatable {
|
||||||
|
const ClassComponentsAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddClassComponents extends ClassComponentsAdminEvent {
|
||||||
|
final String componentName;
|
||||||
|
final String minBaseUnitvalPercent;
|
||||||
|
final String maxBaseUnitvalPercent;
|
||||||
|
final String minUnitvalSqrmtr;
|
||||||
|
final String maxUnitvalSqrmtr;
|
||||||
|
final String minAddBaseunitval;
|
||||||
|
final String maxAddBaseunitval;
|
||||||
|
final String minDeductBaserate;
|
||||||
|
final String maxDeductBaserate;
|
||||||
|
final String minLinearMeter;
|
||||||
|
final String maxLinearMeter;
|
||||||
|
final String minSpacing;
|
||||||
|
final String maxSpacing;
|
||||||
|
final String roughFinish;
|
||||||
|
final String highFinish;
|
||||||
|
final int withoutBucc;
|
||||||
|
|
||||||
|
const AddClassComponents({
|
||||||
|
required this.componentName,
|
||||||
|
required this.minBaseUnitvalPercent,
|
||||||
|
required this.maxBaseUnitvalPercent,
|
||||||
|
required this.minUnitvalSqrmtr,
|
||||||
|
required this.maxUnitvalSqrmtr,
|
||||||
|
required this.minAddBaseunitval,
|
||||||
|
required this.maxAddBaseunitval,
|
||||||
|
required this.minDeductBaserate,
|
||||||
|
required this.maxDeductBaserate,
|
||||||
|
required this.minLinearMeter,
|
||||||
|
required this.maxLinearMeter,
|
||||||
|
required this.minSpacing,
|
||||||
|
required this.maxSpacing,
|
||||||
|
required this.roughFinish,
|
||||||
|
required this.highFinish,
|
||||||
|
required this.withoutBucc,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
componentName,
|
||||||
|
minBaseUnitvalPercent,
|
||||||
|
maxBaseUnitvalPercent,
|
||||||
|
minUnitvalSqrmtr,
|
||||||
|
maxUnitvalSqrmtr,
|
||||||
|
minAddBaseunitval,
|
||||||
|
maxAddBaseunitval,
|
||||||
|
minDeductBaserate,
|
||||||
|
maxDeductBaserate,
|
||||||
|
minLinearMeter,
|
||||||
|
maxLinearMeter,
|
||||||
|
minSpacing,
|
||||||
|
maxSpacing,
|
||||||
|
roughFinish,
|
||||||
|
highFinish,
|
||||||
|
withoutBucc,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadClassComponents extends ClassComponentsAdminEvent {
|
||||||
|
const LoadClassComponents();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'class_components_admin_bloc.dart';
|
||||||
|
|
||||||
|
class ClassComponentsAdminState extends Equatable {
|
||||||
|
const ClassComponentsAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassComponentsAdminInitial extends ClassComponentsAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassComponentsAdminLoaded extends ClassComponentsAdminState {
|
||||||
|
final List<ClassComponentsOffline> classes;
|
||||||
|
|
||||||
|
const ClassComponentsAdminLoaded({required this.classes});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [classes];
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/land_classification.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'land_classification_event.dart';
|
||||||
|
part 'land_classification_state.dart';
|
||||||
|
|
||||||
|
class LandClassificationBloc
|
||||||
|
extends Bloc<LandClassificationEvent, LandClassificationState> {
|
||||||
|
LandClassificationBloc() : super(LandClassificationInitial()) {
|
||||||
|
List<LandClassification> landClassification = [];
|
||||||
|
on<LoadLandClassification>((event, emit) async {
|
||||||
|
landClassification =
|
||||||
|
await SQLServices.instance.readAllLandClassification();
|
||||||
|
|
||||||
|
emit(LandClassificationLoaded(landClassification: landClassification));
|
||||||
|
});
|
||||||
|
on<AddLandClassification>((event, emit) async {
|
||||||
|
await SQLServices.instance.createLandClassification(LandClassification(
|
||||||
|
id: event.id,
|
||||||
|
classificationCode: event.classificationCode,
|
||||||
|
description: event.description));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
part of 'land_classification_bloc.dart';
|
||||||
|
|
||||||
|
class LandClassificationEvent extends Equatable {
|
||||||
|
const LandClassificationEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandClassification extends LandClassificationEvent {
|
||||||
|
final int id;
|
||||||
|
final String classificationCode;
|
||||||
|
final String description;
|
||||||
|
|
||||||
|
const AddLandClassification({
|
||||||
|
required this.id,
|
||||||
|
required this.classificationCode,
|
||||||
|
required this.description,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
classificationCode,
|
||||||
|
description,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandClassification extends LandClassificationEvent {
|
||||||
|
const LoadLandClassification();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'land_classification_bloc.dart';
|
||||||
|
|
||||||
|
class LandClassificationState extends Equatable {
|
||||||
|
const LandClassificationState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandClassificationInitial extends LandClassificationState {}
|
||||||
|
|
||||||
|
class LandClassificationLoaded extends LandClassificationState {
|
||||||
|
final List<LandClassification> landClassification;
|
||||||
|
|
||||||
|
const LandClassificationLoaded({required this.landClassification});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landClassification];
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/land_subclassification.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'land_subclassification_event.dart';
|
||||||
|
part 'land_subclassification_state.dart';
|
||||||
|
|
||||||
|
class LandSubclassificationBloc
|
||||||
|
extends Bloc<LandSubclassificationEvent, LandSubclassificationState> {
|
||||||
|
LandSubclassificationBloc() : super(LandSubclassificationInitial()) {
|
||||||
|
List<LandSubClassification> landSubClassification = [];
|
||||||
|
on<LoadLandSubClassification>((event, emit) async {
|
||||||
|
landSubClassification =
|
||||||
|
await SQLServices.instance.readAllLandSubClassification();
|
||||||
|
|
||||||
|
emit(LandSubClassificationLoaded(
|
||||||
|
landSubClassification: landSubClassification));
|
||||||
|
});
|
||||||
|
on<LoadSpecificLandSubClassification>((event, emit) async {
|
||||||
|
landSubClassification = await SQLServices.instance
|
||||||
|
.readSpecificLandSubClassification(event.cityCode, event.classCode);
|
||||||
|
|
||||||
|
emit(LandSubClassificationLoaded(
|
||||||
|
landSubClassification: landSubClassification));
|
||||||
|
});
|
||||||
|
on<AddLandSubClassification>((event, emit) async {
|
||||||
|
await SQLServices.instance.createLandSubClassification(
|
||||||
|
LandSubClassification(
|
||||||
|
id: event.id,
|
||||||
|
classificationId: event.classificationId,
|
||||||
|
cityCode: event.cityCode,
|
||||||
|
subclassCode: event.subclassCode,
|
||||||
|
subclassDescription: event.subclassDescription,
|
||||||
|
baseUnitMarketval: event.baseUnitMarketval));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
part of 'land_subclassification_bloc.dart';
|
||||||
|
|
||||||
|
class LandSubclassificationEvent extends Equatable {
|
||||||
|
const LandSubclassificationEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandSubClassification extends LandSubclassificationEvent {
|
||||||
|
final int id;
|
||||||
|
final int classificationId;
|
||||||
|
final String cityCode;
|
||||||
|
final String subclassCode;
|
||||||
|
final String subclassDescription;
|
||||||
|
final String baseUnitMarketval;
|
||||||
|
|
||||||
|
const AddLandSubClassification({
|
||||||
|
required this.id,
|
||||||
|
required this.classificationId,
|
||||||
|
required this.cityCode,
|
||||||
|
required this.subclassCode,
|
||||||
|
required this.subclassDescription,
|
||||||
|
required this.baseUnitMarketval,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
classificationId,
|
||||||
|
cityCode,
|
||||||
|
subclassCode,
|
||||||
|
subclassDescription,
|
||||||
|
baseUnitMarketval,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandSubClassification extends LandSubclassificationEvent {
|
||||||
|
const LoadLandSubClassification();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificLandSubClassification extends LandSubclassificationEvent {
|
||||||
|
final String cityCode;
|
||||||
|
final int classCode;
|
||||||
|
|
||||||
|
const LoadSpecificLandSubClassification(
|
||||||
|
{required this.cityCode, required this.classCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [cityCode, classCode];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'land_subclassification_bloc.dart';
|
||||||
|
|
||||||
|
class LandSubclassificationState extends Equatable {
|
||||||
|
const LandSubclassificationState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandSubclassificationInitial extends LandSubclassificationState {}
|
||||||
|
|
||||||
|
class LandSubClassificationLoaded extends LandSubclassificationState {
|
||||||
|
final List<LandSubClassification> landSubClassification;
|
||||||
|
|
||||||
|
const LandSubClassificationLoaded({required this.landSubClassification});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landSubClassification];
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/memoranda.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'memoranda_admin_event.dart';
|
||||||
|
part 'memoranda_admin_state.dart';
|
||||||
|
|
||||||
|
class MemorandaAdminBloc
|
||||||
|
extends Bloc<MemorandaAdminEvent, MemorandaAdminState> {
|
||||||
|
MemorandaAdminBloc() : super(MemorandaAdminInitial()) {
|
||||||
|
List<Memoranda> memo = [];
|
||||||
|
on<LoadMemoranda>((event, emit) async {
|
||||||
|
memo = await SQLServices.instance.readAllMemoranda();
|
||||||
|
|
||||||
|
emit(MemorandaLoaded(memo: memo));
|
||||||
|
});
|
||||||
|
on<AddMemoranda>((event, emit) async {
|
||||||
|
await SQLServices.instance.createMemoranda(Memoranda(
|
||||||
|
id: event.id,
|
||||||
|
code: event.code,
|
||||||
|
memoranda: event.memoranda,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
part of 'memoranda_admin_bloc.dart';
|
||||||
|
|
||||||
|
class MemorandaAdminEvent extends Equatable {
|
||||||
|
const MemorandaAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddMemoranda extends MemorandaAdminEvent {
|
||||||
|
final int id;
|
||||||
|
final String code;
|
||||||
|
final String memoranda;
|
||||||
|
|
||||||
|
const AddMemoranda({
|
||||||
|
required this.id,
|
||||||
|
required this.code,
|
||||||
|
required this.memoranda,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
code,
|
||||||
|
memoranda,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadMemoranda extends MemorandaAdminEvent {
|
||||||
|
const LoadMemoranda();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'memoranda_admin_bloc.dart';
|
||||||
|
|
||||||
|
class MemorandaAdminState extends Equatable {
|
||||||
|
const MemorandaAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class MemorandaAdminInitial extends MemorandaAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class MemorandaLoaded extends MemorandaAdminState {
|
||||||
|
final List<Memoranda> memo;
|
||||||
|
|
||||||
|
const MemorandaLoaded({required this.memo});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [memo];
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/city.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/api_services/municipalities_api_services.dart';
|
||||||
|
|
||||||
|
part 'municipalities_admin_event.dart';
|
||||||
|
part 'municipalities_admin_state.dart';
|
||||||
|
|
||||||
|
class MunicipalitiesAdminBloc
|
||||||
|
extends Bloc<MunicipalitiesAdminEvent, MunicipalitiesAdminState> {
|
||||||
|
MunicipalitiesAdminBloc() : super(MunicipalitiesAdminInitial()) {
|
||||||
|
List<City> city = [];
|
||||||
|
on<LoadMunicipalities>((event, emit) async {
|
||||||
|
city = await SQLServices.instance.readAllMunicipalities();
|
||||||
|
|
||||||
|
emit(MunicipalitiesLoaded(city: city));
|
||||||
|
});
|
||||||
|
// on<MunicipalitiesSyncToDevice>((event, emit) async {
|
||||||
|
// try {
|
||||||
|
// final result =
|
||||||
|
// await MunicipalityAdminApiServices.instance.fetch();
|
||||||
|
|
||||||
|
// // Assuming result is a List of JSON objects, convert them to City objects.
|
||||||
|
// final cities =
|
||||||
|
// result.map((json) => City.fromJson(json)).toList();
|
||||||
|
|
||||||
|
// // Loop through the list of City objects and insert them into the local database.
|
||||||
|
// for (City city in cities) {
|
||||||
|
// print(city.cityDescription);
|
||||||
|
// print(city.cityCode);
|
||||||
|
// await SQLServices.instance.createMunicipalities(city);
|
||||||
|
// }
|
||||||
|
// } catch (e) {
|
||||||
|
// // Handle any errors that might occur during the API call or database insertion.
|
||||||
|
// print("Error: $e");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // emit(const LoadMunicipalities());
|
||||||
|
// });
|
||||||
|
on<AddMunicipality>((event, emit) async {
|
||||||
|
await SQLServices.instance.createMunicipalities(
|
||||||
|
City(
|
||||||
|
id: event.id,
|
||||||
|
cityCode: event.cityCode,
|
||||||
|
cityDescription: event.cityDescription,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
part of 'municipalities_admin_bloc.dart';
|
||||||
|
|
||||||
|
class MunicipalitiesAdminEvent extends Equatable {
|
||||||
|
const MunicipalitiesAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddMunicipality extends MunicipalitiesAdminEvent {
|
||||||
|
final int id;
|
||||||
|
final String cityCode;
|
||||||
|
final String cityDescription;
|
||||||
|
|
||||||
|
const AddMunicipality({
|
||||||
|
required this.id,
|
||||||
|
required this.cityCode,
|
||||||
|
required this.cityDescription,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
cityCode,
|
||||||
|
cityDescription,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadMunicipalities extends MunicipalitiesAdminEvent {
|
||||||
|
const LoadMunicipalities();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class MunicipalitiesSyncToDevice extends MunicipalitiesAdminEvent {
|
||||||
|
const MunicipalitiesSyncToDevice();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'municipalities_admin_bloc.dart';
|
||||||
|
|
||||||
|
class MunicipalitiesAdminState extends Equatable {
|
||||||
|
const MunicipalitiesAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class MunicipalitiesAdminInitial extends MunicipalitiesAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class MunicipalitiesLoaded extends MunicipalitiesAdminState {
|
||||||
|
final List<City> city;
|
||||||
|
|
||||||
|
const MunicipalitiesLoaded({required this.city});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [city];
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/signatories.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'signatories_admin_event.dart';
|
||||||
|
part 'signatories_admin_state.dart';
|
||||||
|
|
||||||
|
class SignatoriesAdminBloc
|
||||||
|
extends Bloc<SignatoriesAdminEvent, SignatoriesAdminState> {
|
||||||
|
SignatoriesAdminBloc() : super(SignatoriesAdminInitial()) {
|
||||||
|
List<Signatories> signatories = [];
|
||||||
|
on<LoadSignatories>((event, emit) async {
|
||||||
|
signatories = await SQLServices.instance.readAllSignatories();
|
||||||
|
|
||||||
|
emit(SignatoriesLoaded(signatories: signatories));
|
||||||
|
});
|
||||||
|
on<AddSignatories>((event, emit) async {
|
||||||
|
await SQLServices.instance.createSignatories(Signatories(
|
||||||
|
id: event.id,
|
||||||
|
signatoryId: event.signatoryId,
|
||||||
|
firstname: event.firstname,
|
||||||
|
middlename: event.middlename,
|
||||||
|
lastname: event.lastname,
|
||||||
|
designation: event.designation,
|
||||||
|
// status: event.status
|
||||||
|
// genCode: event.genCode
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
part of 'signatories_admin_bloc.dart';
|
||||||
|
|
||||||
|
class SignatoriesAdminEvent extends Equatable {
|
||||||
|
const SignatoriesAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddSignatories extends SignatoriesAdminEvent {
|
||||||
|
final int id;
|
||||||
|
final int signatoryId;
|
||||||
|
final String firstname;
|
||||||
|
final String middlename;
|
||||||
|
final String lastname;
|
||||||
|
final String genCode;
|
||||||
|
final String designation;
|
||||||
|
// final String status;
|
||||||
|
|
||||||
|
const AddSignatories({
|
||||||
|
required this.id,
|
||||||
|
required this.signatoryId,
|
||||||
|
required this.firstname,
|
||||||
|
required this.middlename,
|
||||||
|
required this.lastname,
|
||||||
|
required this.genCode,
|
||||||
|
required this.designation,
|
||||||
|
// required this.status
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
signatoryId,
|
||||||
|
firstname,
|
||||||
|
middlename,
|
||||||
|
lastname,
|
||||||
|
genCode,
|
||||||
|
designation,
|
||||||
|
// status
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSignatories extends SignatoriesAdminEvent {
|
||||||
|
const LoadSignatories();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'signatories_admin_bloc.dart';
|
||||||
|
|
||||||
|
class SignatoriesAdminState extends Equatable {
|
||||||
|
const SignatoriesAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SignatoriesAdminInitial extends SignatoriesAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SignatoriesLoaded extends SignatoriesAdminState {
|
||||||
|
final List<Signatories> signatories;
|
||||||
|
|
||||||
|
const SignatoriesLoaded({required this.signatories});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [signatories];
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/trees_improvements.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'trees_improvements_event.dart';
|
||||||
|
part 'trees_improvements_state.dart';
|
||||||
|
|
||||||
|
class TreesImprovementsBloc
|
||||||
|
extends Bloc<TreesImprovementsEvent, TreesImprovementsState> {
|
||||||
|
TreesImprovementsBloc() : super(TreesImprovementsInitial()) {
|
||||||
|
List<TreesImprovements> treesImprovements = [];
|
||||||
|
on<LoadTreesImprovements>((event, emit) async {
|
||||||
|
treesImprovements = await SQLServices.instance.readAllTreesImprovements();
|
||||||
|
|
||||||
|
emit(TreesImprovementsLoaded(treesImprovements: treesImprovements));
|
||||||
|
});
|
||||||
|
on<AddTreesImprovements>((event, emit) async {
|
||||||
|
await SQLServices.instance.createTreesImprovements(TreesImprovements(
|
||||||
|
id: event.id,
|
||||||
|
improvement: event.improvement,
|
||||||
|
pricePerTree: event.pricePerTree,
|
||||||
|
subclassCode: event.subclassCode));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
part of 'trees_improvements_bloc.dart';
|
||||||
|
|
||||||
|
class TreesImprovementsEvent extends Equatable {
|
||||||
|
const TreesImprovementsEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddTreesImprovements extends TreesImprovementsEvent {
|
||||||
|
final int id;
|
||||||
|
final String improvement;
|
||||||
|
final String pricePerTree;
|
||||||
|
final dynamic subclassCode;
|
||||||
|
|
||||||
|
const AddTreesImprovements({
|
||||||
|
required this.id,
|
||||||
|
required this.improvement,
|
||||||
|
required this.pricePerTree,
|
||||||
|
required this.subclassCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
improvement,
|
||||||
|
pricePerTree,
|
||||||
|
subclassCode,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadTreesImprovements extends TreesImprovementsEvent {
|
||||||
|
const LoadTreesImprovements();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'trees_improvements_bloc.dart';
|
||||||
|
|
||||||
|
class TreesImprovementsState extends Equatable {
|
||||||
|
const TreesImprovementsState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TreesImprovementsInitial extends TreesImprovementsState {}
|
||||||
|
|
||||||
|
class TreesImprovementsLoaded extends TreesImprovementsState {
|
||||||
|
final List<TreesImprovements> treesImprovements;
|
||||||
|
|
||||||
|
const TreesImprovementsLoaded({required this.treesImprovements});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [treesImprovements];
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/type_of_location.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'type_of_location_event.dart';
|
||||||
|
part 'type_of_location_state.dart';
|
||||||
|
|
||||||
|
class TypeOfLocationBloc
|
||||||
|
extends Bloc<TypeOfLocationEvent, TypeOfLocationState> {
|
||||||
|
TypeOfLocationBloc() : super(TypeOfLocationInitial()) {
|
||||||
|
List<TypeOfLocation> typeOfLocation = [];
|
||||||
|
on<LoadTypeOfLocation>((event, emit) async {
|
||||||
|
typeOfLocation = await SQLServices.instance.readAllTypeOfLocation();
|
||||||
|
|
||||||
|
emit(TypeOfLocationLoaded(typeOfLocation: typeOfLocation));
|
||||||
|
});
|
||||||
|
on<AddTypeOfLocation>((event, emit) async {
|
||||||
|
await SQLServices.instance.createTypeOfLocation(TypeOfLocation(
|
||||||
|
id: event.id,
|
||||||
|
distanceKm: event.distanceKm,
|
||||||
|
allRoadTypes: event.allRoadTypes,
|
||||||
|
localTradingCenter: event.localTradingCenter));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
part of 'type_of_location_bloc.dart';
|
||||||
|
|
||||||
|
class TypeOfLocationEvent extends Equatable {
|
||||||
|
const TypeOfLocationEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddTypeOfLocation extends TypeOfLocationEvent {
|
||||||
|
final int id;
|
||||||
|
final String distanceKm;
|
||||||
|
final String allRoadTypes;
|
||||||
|
final String localTradingCenter;
|
||||||
|
|
||||||
|
const AddTypeOfLocation({
|
||||||
|
required this.id,
|
||||||
|
required this.distanceKm,
|
||||||
|
required this.allRoadTypes,
|
||||||
|
required this.localTradingCenter,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
distanceKm,
|
||||||
|
allRoadTypes,
|
||||||
|
localTradingCenter,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadTypeOfLocation extends TypeOfLocationEvent {
|
||||||
|
const LoadTypeOfLocation();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'type_of_location_bloc.dart';
|
||||||
|
|
||||||
|
class TypeOfLocationState extends Equatable {
|
||||||
|
const TypeOfLocationState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypeOfLocationInitial extends TypeOfLocationState {}
|
||||||
|
|
||||||
|
class TypeOfLocationLoaded extends TypeOfLocationState {
|
||||||
|
final List<TypeOfLocation> typeOfLocation;
|
||||||
|
|
||||||
|
const TypeOfLocationLoaded({required this.typeOfLocation});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [typeOfLocation];
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/type_of_road.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'type_of_road_event.dart';
|
||||||
|
part 'type_of_road_state.dart';
|
||||||
|
|
||||||
|
class TypeOfRoadBloc extends Bloc<TypeOfRoadEvent, TypeOfRoadState> {
|
||||||
|
TypeOfRoadBloc() : super(TypeOfRoadInitial()) {
|
||||||
|
List<TypeOfRoad> typeOfRoad = [];
|
||||||
|
on<LoadTypeOfRoad>((event, emit) async {
|
||||||
|
typeOfRoad = await SQLServices.instance.readAllTypeOfRoad();
|
||||||
|
|
||||||
|
emit(TypeOfRoadLoaded(typeOfRoad: typeOfRoad));
|
||||||
|
});
|
||||||
|
on<AddTypeOfRoad>((event, emit) async {
|
||||||
|
await SQLServices.instance.createTypeOfRoad(TypeOfRoad(
|
||||||
|
id: event.id,
|
||||||
|
roadType: event.roadType,
|
||||||
|
deduction: event.deduction,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
part of 'type_of_road_bloc.dart';
|
||||||
|
|
||||||
|
class TypeOfRoadEvent extends Equatable {
|
||||||
|
const TypeOfRoadEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddTypeOfRoad extends TypeOfRoadEvent {
|
||||||
|
final int id;
|
||||||
|
final String roadType;
|
||||||
|
final String deduction;
|
||||||
|
|
||||||
|
const AddTypeOfRoad({
|
||||||
|
required this.id,
|
||||||
|
required this.roadType,
|
||||||
|
required this.deduction,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
roadType,
|
||||||
|
deduction,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadTypeOfRoad extends TypeOfRoadEvent {
|
||||||
|
const LoadTypeOfRoad();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'type_of_road_bloc.dart';
|
||||||
|
|
||||||
|
class TypeOfRoadState extends Equatable {
|
||||||
|
const TypeOfRoadState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypeOfRoadInitial extends TypeOfRoadState {}
|
||||||
|
|
||||||
|
class TypeOfRoadLoaded extends TypeOfRoadState {
|
||||||
|
final List<TypeOfRoad> typeOfRoad;
|
||||||
|
|
||||||
|
const TypeOfRoadLoaded({required this.typeOfRoad});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [typeOfRoad];
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/unit_construct.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'unit_construction_admin_event.dart';
|
||||||
|
part 'unit_construction_admin_state.dart';
|
||||||
|
|
||||||
|
class UnitConstructionAdminBloc
|
||||||
|
extends Bloc<UnitConstructionAdminEvent, UnitConstructionAdminState> {
|
||||||
|
UnitConstructionAdminBloc() : super(UnitConstructionAdminInitial()) {
|
||||||
|
List<UnitConstruct> unit = [];
|
||||||
|
on<LoadUnitConstruct>((event, emit) async {
|
||||||
|
unit = await SQLServices.instance.readAllUnitConstruct();
|
||||||
|
|
||||||
|
emit(UnitConstructLoaded(unit: unit));
|
||||||
|
});
|
||||||
|
on<AddUnitConstruct>((event, emit) async {
|
||||||
|
await SQLServices.instance.createUnitConstruction(
|
||||||
|
UnitConstruct(
|
||||||
|
id: event.id,
|
||||||
|
bldgType: event.bldgType,
|
||||||
|
building: event.building,
|
||||||
|
unitValue: event.unitValue,
|
||||||
|
genCode: event.genCode),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
part of 'unit_construction_admin_bloc.dart';
|
||||||
|
|
||||||
|
class UnitConstructionAdminEvent extends Equatable {
|
||||||
|
const UnitConstructionAdminEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddUnitConstruct extends UnitConstructionAdminEvent {
|
||||||
|
final int id;
|
||||||
|
final String bldgType;
|
||||||
|
final String building;
|
||||||
|
final String unitValue;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddUnitConstruct({
|
||||||
|
required this.id,
|
||||||
|
required this.bldgType,
|
||||||
|
required this.building,
|
||||||
|
required this.unitValue,
|
||||||
|
required this.genCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, bldgType, building, unitValue, genCode];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadUnitConstruct extends UnitConstructionAdminEvent {
|
||||||
|
const LoadUnitConstruct();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
part of 'unit_construction_admin_bloc.dart';
|
||||||
|
|
||||||
|
class UnitConstructionAdminState extends Equatable {
|
||||||
|
const UnitConstructionAdminState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UnitConstructionAdminInitial extends UnitConstructionAdminState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UnitConstructLoaded extends UnitConstructionAdminState {
|
||||||
|
final List<UnitConstruct> unit;
|
||||||
|
|
||||||
|
const UnitConstructLoaded({required this.unit});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [unit];
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/land_value_adjustment.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'value_adjustments_event.dart';
|
||||||
|
part 'value_adjustments_state.dart';
|
||||||
|
|
||||||
|
class ValueAdjustmentsBloc
|
||||||
|
extends Bloc<ValueAdjustmentsEvent, ValueAdjustmentsState> {
|
||||||
|
ValueAdjustmentsBloc() : super(ValueAdjustmentsInitial()) {
|
||||||
|
List<ValueAdjustments> valueAdjustments = [];
|
||||||
|
on<LoadValueAdjustments>((event, emit) async {
|
||||||
|
valueAdjustments = await SQLServices.instance.readAllValueAdjustments();
|
||||||
|
|
||||||
|
emit(ValueAdjustmentsLoaded(valueAdjustments: valueAdjustments));
|
||||||
|
});
|
||||||
|
on<AddValueAdjustments>((event, emit) async {
|
||||||
|
await SQLServices.instance.createValueAdjustments(ValueAdjustments(
|
||||||
|
id: event.id,
|
||||||
|
landapprDetailsId: event.landapprDetailsId,
|
||||||
|
baseMarketval: event.baseMarketval,
|
||||||
|
adjustmentFactors: event.adjustmentFactors,
|
||||||
|
adjustment: event.adjustment,
|
||||||
|
valueAdjustment: event.valueAdjustment,
|
||||||
|
marketValue: event.marketValue,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
part of 'value_adjustments_bloc.dart';
|
||||||
|
|
||||||
|
class ValueAdjustmentsEvent extends Equatable {
|
||||||
|
const ValueAdjustmentsEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddValueAdjustments extends ValueAdjustmentsEvent {
|
||||||
|
final int id;
|
||||||
|
final int landapprDetailsId;
|
||||||
|
final String baseMarketval;
|
||||||
|
final String adjustmentFactors;
|
||||||
|
final String adjustment;
|
||||||
|
final String valueAdjustment;
|
||||||
|
final String marketValue;
|
||||||
|
|
||||||
|
const AddValueAdjustments({
|
||||||
|
required this.id,
|
||||||
|
required this.landapprDetailsId,
|
||||||
|
required this.baseMarketval,
|
||||||
|
required this.adjustmentFactors,
|
||||||
|
required this.adjustment,
|
||||||
|
required this.valueAdjustment,
|
||||||
|
required this.marketValue,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
landapprDetailsId,
|
||||||
|
baseMarketval,
|
||||||
|
adjustmentFactors,
|
||||||
|
adjustment,
|
||||||
|
valueAdjustment,
|
||||||
|
marketValue,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadValueAdjustments extends ValueAdjustmentsEvent {
|
||||||
|
const LoadValueAdjustments();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
part of 'value_adjustments_bloc.dart';
|
||||||
|
|
||||||
|
class ValueAdjustmentsState extends Equatable {
|
||||||
|
const ValueAdjustmentsState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ValueAdjustmentsInitial extends ValueAdjustmentsState {}
|
||||||
|
|
||||||
|
class ValueAdjustmentsLoaded extends ValueAdjustmentsState {
|
||||||
|
final List<ValueAdjustments> valueAdjustments;
|
||||||
|
|
||||||
|
const ValueAdjustmentsLoaded({required this.valueAdjustments});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [valueAdjustments];
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/bloc/passo/bulding/additional_item/additional_item_bloc.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/additional_items.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/building/property_owner_info_service.dart';
|
||||||
|
|
||||||
|
part 'additional_items_offline_event.dart';
|
||||||
|
part 'additional_items_offline_state.dart';
|
||||||
|
|
||||||
|
class AdditionalItemsOfflineBloc
|
||||||
|
extends Bloc<AdditionalItemsOfflineEvent, AdditionalItemsOfflineState> {
|
||||||
|
AdditionalItemsOfflineBloc() : super(AdditionalItemsOfflineInitial()) {
|
||||||
|
List<AdditionalItems> addItems = [];
|
||||||
|
on<LoadAdditionalItems>((event, emit) async {
|
||||||
|
emit(AdditionalItemsOfflineInitial());
|
||||||
|
try {
|
||||||
|
emit(AdditionalItemsLoaded(addItem: addItems));
|
||||||
|
} catch (e) {
|
||||||
|
emit(AdditionalItemsErrorState(e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadAdditionalItemsEdit>((event, emit) async {
|
||||||
|
emit(AdditionalItemsOfflineInitial());
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getAdditionalItems(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
addItems = result.map((map) => AdditionalItems.fromJson(map)).toList();
|
||||||
|
|
||||||
|
emit(AdditionalItemsLoaded(addItem: addItems));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<AddAdditionalItems>((event, emit) async {
|
||||||
|
try {
|
||||||
|
AdditionalItems item = await SQLServices.instance.createAdditionalItems(
|
||||||
|
AdditionalItems(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
classId: event.classId,
|
||||||
|
className: event.className,
|
||||||
|
structType: event.structType,
|
||||||
|
unitValue: event.unitValue,
|
||||||
|
baseUnitValue: event.baseUnitValue,
|
||||||
|
area: event.area,
|
||||||
|
marketValue: event.marketValue,
|
||||||
|
depreciationRate: event.depreciationRate,
|
||||||
|
adjustedMarketVal: event.adjustedMarketVal,
|
||||||
|
amtDepreciation: event.amtDepreciation,
|
||||||
|
painted: event.painted == true ? '1' : '0',
|
||||||
|
secondhand: event.secondhand == true ? '1' : '0',
|
||||||
|
paintedUnitval: event.paintedUnitval,
|
||||||
|
secondhandUnitval: event.secondhandUnitval,
|
||||||
|
actualUse: event.actualUse,
|
||||||
|
genCode: event.genCode));
|
||||||
|
|
||||||
|
print(item.toJson());
|
||||||
|
|
||||||
|
addItems.add(item);
|
||||||
|
|
||||||
|
emit(AdditionalItemsLoaded(addItem: addItems));
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<ShowAdditionalItems>((event, emit) async {
|
||||||
|
emit(ShowAddItemsScreen());
|
||||||
|
});
|
||||||
|
on<FetchAdditionalItems>((event, emit) async {
|
||||||
|
addItems = await SQLServices.instance.readAdditionalItems();
|
||||||
|
emit(AdditionalItemsLoaded(addItem: addItems));
|
||||||
|
});
|
||||||
|
on<DeleteAdditionalItems>((event, emit) async {
|
||||||
|
addItems
|
||||||
|
.removeWhere(((AdditionalItems element) => element.id == event.id));
|
||||||
|
await SQLServices.instance.deleteAdditionalItems(id: event.id);
|
||||||
|
emit(const AdditionalItemsDeletedState(success: true));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
part of 'additional_items_offline_bloc.dart';
|
||||||
|
|
||||||
|
class AdditionalItemsOfflineEvent extends Equatable {
|
||||||
|
const AdditionalItemsOfflineEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
final List<AdditionalItems> items;
|
||||||
|
|
||||||
|
const LoadAdditionalItems({this.items = const <AdditionalItems>[]});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [items];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadAdditionalItemsEdit extends AdditionalItemsOfflineEvent {
|
||||||
|
final List<AdditionalItems> items;
|
||||||
|
final int? id;
|
||||||
|
|
||||||
|
const LoadAdditionalItemsEdit({required this.items, this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [items];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final int classId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String className;
|
||||||
|
final String structType;
|
||||||
|
final dynamic unitValue;
|
||||||
|
final dynamic baseUnitValue;
|
||||||
|
final dynamic area;
|
||||||
|
final dynamic marketValue;
|
||||||
|
final dynamic depreciationRate;
|
||||||
|
final dynamic adjustedMarketVal;
|
||||||
|
final dynamic amtDepreciation;
|
||||||
|
final bool painted;
|
||||||
|
final bool secondhand;
|
||||||
|
final dynamic paintedUnitval;
|
||||||
|
final dynamic secondhandUnitval;
|
||||||
|
final String actualUse;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddAdditionalItems({
|
||||||
|
required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.classId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.className,
|
||||||
|
required this.structType,
|
||||||
|
required this.unitValue,
|
||||||
|
required this.baseUnitValue,
|
||||||
|
required this.area,
|
||||||
|
required this.marketValue,
|
||||||
|
required this.depreciationRate,
|
||||||
|
required this.adjustedMarketVal,
|
||||||
|
required this.amtDepreciation,
|
||||||
|
required this.painted,
|
||||||
|
required this.secondhand,
|
||||||
|
required this.paintedUnitval,
|
||||||
|
required this.secondhandUnitval,
|
||||||
|
required this.actualUse,
|
||||||
|
required this.genCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
classId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
className,
|
||||||
|
structType,
|
||||||
|
unitValue,
|
||||||
|
baseUnitValue,
|
||||||
|
area,
|
||||||
|
marketValue,
|
||||||
|
depreciationRate,
|
||||||
|
adjustedMarketVal,
|
||||||
|
amtDepreciation,
|
||||||
|
painted,
|
||||||
|
secondhand,
|
||||||
|
paintedUnitval,
|
||||||
|
secondhandUnitval,
|
||||||
|
actualUse,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
final AdditionalItems addItems;
|
||||||
|
const UpdateAdditionalItems({required this.addItems});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [addItems];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
const FetchAdditionalItems();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSpecificAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSpecificAdditionalItems({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeleteAdditionalItems extends AdditionalItemsOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
const DeleteAdditionalItems({required this.id});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowAdditionalItems extends AdditionalItemsOfflineEvent {}
|
|
@ -0,0 +1,46 @@
|
||||||
|
part of 'additional_items_offline_bloc.dart';
|
||||||
|
|
||||||
|
class AdditionalItemsOfflineState extends Equatable {
|
||||||
|
const AdditionalItemsOfflineState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AdditionalItemsOfflineInitial extends AdditionalItemsOfflineState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AdditionalItemsLoaded extends AdditionalItemsOfflineState {
|
||||||
|
final List<AdditionalItems> addItem;
|
||||||
|
|
||||||
|
const AdditionalItemsLoaded({required this.addItem});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [addItem];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificAdditionalItems extends AdditionalItemsOfflineState {
|
||||||
|
final AdditionalItems addItem;
|
||||||
|
|
||||||
|
const LoadSpecificAdditionalItems({required this.addItem});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [addItem];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowAddItemsScreen extends AdditionalItemsOfflineState {}
|
||||||
|
|
||||||
|
class AdditionalItemsErrorState extends AdditionalItemsOfflineState {
|
||||||
|
const AdditionalItemsErrorState(this.error);
|
||||||
|
final String error;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [error];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AdditionalItemsDeletedState extends AdditionalItemsOfflineState {
|
||||||
|
final bool success;
|
||||||
|
const AdditionalItemsDeletedState({required this.success});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [success];
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/property_appraisal.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'bldg_appraisal_offline_event.dart';
|
||||||
|
part 'bldg_appraisal_offline_state.dart';
|
||||||
|
|
||||||
|
class BldgAppraisalOfflineBloc
|
||||||
|
extends Bloc<BldgAppraisalOfflineEvent, BldgAppraisalOfflineState> {
|
||||||
|
BldgAppraisalOfflineBloc() : super(BldgAppraisalOfflineInitial()) {
|
||||||
|
List<PropertyAppraisal> appraisal = [];
|
||||||
|
on<AddBldgAppraisal>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBldgAppraisal(PropertyAppraisal(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
dateCreated: event.dateCreated,
|
||||||
|
dateModified: event.dateModified,
|
||||||
|
unitconstructCost: event.unitconstructCost,
|
||||||
|
buildingCore: event.buildingCore,
|
||||||
|
unitconstructSubtotal: event.unitconstructSubtotal,
|
||||||
|
depreciationRate: event.depreciationRate,
|
||||||
|
depreciationCost: event.depreciationCost,
|
||||||
|
costAddItems: event.costAddItems,
|
||||||
|
addItemsSubtotal: event.addItemsSubtotal,
|
||||||
|
totalpercentDepreciation: event.totalpercentDepreciation,
|
||||||
|
marketValue: event.marketValue,
|
||||||
|
totalArea: event.totalArea,
|
||||||
|
actualUse: event.actualUse,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
on<FetchSingleBldgAppraisal>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getBldgAppraisal(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<PropertyAppraisal> appraisalList =
|
||||||
|
result.map((map) => PropertyAppraisal.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from locationList
|
||||||
|
PropertyAppraisal firstAppraisal = appraisalList
|
||||||
|
.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('appraisal test result');
|
||||||
|
print(firstAppraisal.toJson());
|
||||||
|
emit(SpecificBldgAppraisalLoaded(appraisal: firstAppraisal));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateAppraisal>((event, emit) async {
|
||||||
|
await SQLServices.instance.updateAppraisal(event.id, event.appraisal);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
part of 'bldg_appraisal_offline_bloc.dart';
|
||||||
|
|
||||||
|
class BldgAppraisalOfflineEvent extends Equatable {
|
||||||
|
const BldgAppraisalOfflineEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddBldgAppraisal extends BldgAppraisalOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String unitconstructCost;
|
||||||
|
final String buildingCore;
|
||||||
|
final String unitconstructSubtotal;
|
||||||
|
final String depreciationRate;
|
||||||
|
final String depreciationCost;
|
||||||
|
final String costAddItems;
|
||||||
|
final String addItemsSubtotal;
|
||||||
|
final String totalpercentDepreciation;
|
||||||
|
final String marketValue;
|
||||||
|
final String totalArea;
|
||||||
|
final String actualUse;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddBldgAppraisal(
|
||||||
|
{required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.unitconstructCost,
|
||||||
|
required this.buildingCore,
|
||||||
|
required this.unitconstructSubtotal,
|
||||||
|
required this.depreciationRate,
|
||||||
|
required this.depreciationCost,
|
||||||
|
required this.costAddItems,
|
||||||
|
required this.addItemsSubtotal,
|
||||||
|
required this.totalpercentDepreciation,
|
||||||
|
required this.marketValue,
|
||||||
|
required this.totalArea,
|
||||||
|
required this.actualUse,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
unitconstructCost,
|
||||||
|
buildingCore,
|
||||||
|
unitconstructSubtotal,
|
||||||
|
depreciationRate,
|
||||||
|
depreciationCost,
|
||||||
|
costAddItems,
|
||||||
|
addItemsSubtotal,
|
||||||
|
totalpercentDepreciation,
|
||||||
|
marketValue,
|
||||||
|
totalArea,
|
||||||
|
actualUse,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleBldgAppraisal extends BldgAppraisalOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleBldgAppraisal({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateAppraisal extends BldgAppraisalOfflineEvent {
|
||||||
|
final PropertyAppraisal appraisal;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
const UpdateAppraisal({required this.id, required this.appraisal});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, appraisal];
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
part of 'bldg_appraisal_offline_bloc.dart';
|
||||||
|
|
||||||
|
class BldgAppraisalOfflineState extends Equatable {
|
||||||
|
const BldgAppraisalOfflineState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BldgAppraisalOfflineInitial extends BldgAppraisalOfflineState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BldgAppraisalOfflineLoaded extends BldgAppraisalOfflineState {
|
||||||
|
final List<PropertyAppraisal> appraisal;
|
||||||
|
|
||||||
|
const BldgAppraisalOfflineLoaded({required this.appraisal});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [appraisal];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificBldgAppraisalOffline extends BldgAppraisalOfflineState {
|
||||||
|
final PropertyAppraisal appraisal;
|
||||||
|
|
||||||
|
const LoadSpecificBldgAppraisalOffline({required this.appraisal});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [appraisal];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificBldgAppraisalLoaded extends BldgAppraisalOfflineState {
|
||||||
|
final PropertyAppraisal appraisal;
|
||||||
|
|
||||||
|
const SpecificBldgAppraisalLoaded({required this.appraisal});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [appraisal];
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/property_assessment.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'bldg_assessment_offline_event.dart';
|
||||||
|
part 'bldg_assessment_offline_state.dart';
|
||||||
|
|
||||||
|
class BldgAssessmentOfflineBloc
|
||||||
|
extends Bloc<BldgAssessmentOfflineEvent, BldgAssessmentOfflineState> {
|
||||||
|
BldgAssessmentOfflineBloc() : super(BldgAssessmentOfflineInitial()) {
|
||||||
|
List<PropertyAssessment> assessment = [];
|
||||||
|
on<AddBldgAssessment>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBldgAssessment(PropertyAssessment(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
dateCreated: event.dateCreated,
|
||||||
|
dateModified: event.dateModified,
|
||||||
|
actualUse: event.actualUse,
|
||||||
|
marketValue: event.marketValue,
|
||||||
|
assessmentLevel: event.assessmentLevel,
|
||||||
|
assessedValue: event.assessedValue,
|
||||||
|
taxable: event.taxable,
|
||||||
|
exempt: event.exempt,
|
||||||
|
qtr: event.qtr,
|
||||||
|
yr: event.yr.toString(),
|
||||||
|
appraisedbyName: event.appraisedbyName,
|
||||||
|
appraisedbyDate: event.appraisedbyDate,
|
||||||
|
recommendapprName: event.recommendapprName,
|
||||||
|
recommendapprDate: event.recommendapprDate,
|
||||||
|
approvedbyName: event.approvedbyName,
|
||||||
|
approvedbyDate: event.approvedbyDate,
|
||||||
|
memoranda: event.memoranda,
|
||||||
|
swornstatementNo: event.swornstatementNo,
|
||||||
|
dateReceived: event.dateReceived,
|
||||||
|
entryDateAssessment: event.entryDateAssessment,
|
||||||
|
entryDateBy: event.entryDateBy,
|
||||||
|
note: event.note,
|
||||||
|
genCode: event.genCode,
|
||||||
|
appraisedbyDesignation: event.appraisedbyDesignation,
|
||||||
|
approvedbyDesignation: event.approvedbyDesignation,
|
||||||
|
recommendapprDesignation: event.recommendapprDesignation));
|
||||||
|
});
|
||||||
|
on<FetchSingleBldgAssessment>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getBldgAssessment(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<PropertyAssessment> assessmentList =
|
||||||
|
result.map((map) => PropertyAssessment.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from locationList
|
||||||
|
PropertyAssessment firstAssessment = assessmentList
|
||||||
|
.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('assessment test result');
|
||||||
|
print(firstAssessment.toJson());
|
||||||
|
emit(SpecificBldgAssessmentLoaded(assessment: firstAssessment));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateBldgAssessment>((event, emit) async {
|
||||||
|
await SQLServices.instance.updateAssessment(event.id, event.assessment);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,126 @@
|
||||||
|
part of 'bldg_assessment_offline_bloc.dart';
|
||||||
|
|
||||||
|
class BldgAssessmentOfflineEvent extends Equatable {
|
||||||
|
const BldgAssessmentOfflineEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddBldgAssessment extends BldgAssessmentOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String actualUse;
|
||||||
|
final String marketValue;
|
||||||
|
final String assessmentLevel;
|
||||||
|
final String assessedValue;
|
||||||
|
final String taxable;
|
||||||
|
final String exempt;
|
||||||
|
final String qtr;
|
||||||
|
final int yr;
|
||||||
|
final String appraisedbyName;
|
||||||
|
final String appraisedbyDate;
|
||||||
|
final String recommendapprName;
|
||||||
|
final String recommendapprDate;
|
||||||
|
final String approvedbyName;
|
||||||
|
final String approvedbyDate;
|
||||||
|
final String memoranda;
|
||||||
|
final String swornstatementNo;
|
||||||
|
final String dateReceived;
|
||||||
|
final String entryDateAssessment;
|
||||||
|
final String entryDateBy;
|
||||||
|
final String genCode;
|
||||||
|
final String note;
|
||||||
|
final String appraisedbyDesignation;
|
||||||
|
final String recommendapprDesignation;
|
||||||
|
final String approvedbyDesignation;
|
||||||
|
|
||||||
|
const AddBldgAssessment({
|
||||||
|
required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.actualUse,
|
||||||
|
required this.marketValue,
|
||||||
|
required this.assessmentLevel,
|
||||||
|
required this.assessedValue,
|
||||||
|
required this.taxable,
|
||||||
|
required this.exempt,
|
||||||
|
required this.qtr,
|
||||||
|
required this.yr,
|
||||||
|
required this.appraisedbyName,
|
||||||
|
required this.appraisedbyDate,
|
||||||
|
required this.recommendapprName,
|
||||||
|
required this.recommendapprDate,
|
||||||
|
required this.approvedbyName,
|
||||||
|
required this.approvedbyDate,
|
||||||
|
required this.memoranda,
|
||||||
|
required this.swornstatementNo,
|
||||||
|
required this.dateReceived,
|
||||||
|
required this.entryDateAssessment,
|
||||||
|
required this.entryDateBy,
|
||||||
|
required this.genCode,
|
||||||
|
required this.note,
|
||||||
|
required this.appraisedbyDesignation,
|
||||||
|
required this.recommendapprDesignation,
|
||||||
|
required this.approvedbyDesignation,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
actualUse,
|
||||||
|
marketValue,
|
||||||
|
assessmentLevel,
|
||||||
|
assessedValue,
|
||||||
|
taxable,
|
||||||
|
exempt,
|
||||||
|
qtr,
|
||||||
|
yr,
|
||||||
|
appraisedbyName,
|
||||||
|
appraisedbyDate,
|
||||||
|
recommendapprName,
|
||||||
|
recommendapprDate,
|
||||||
|
approvedbyName,
|
||||||
|
approvedbyDate,
|
||||||
|
memoranda,
|
||||||
|
swornstatementNo,
|
||||||
|
dateReceived,
|
||||||
|
entryDateAssessment,
|
||||||
|
entryDateBy,
|
||||||
|
genCode,
|
||||||
|
note,
|
||||||
|
appraisedbyDesignation,
|
||||||
|
recommendapprDesignation,
|
||||||
|
approvedbyDesignation,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleBldgAssessment extends BldgAssessmentOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleBldgAssessment({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateBldgAssessment extends BldgAssessmentOfflineEvent {
|
||||||
|
final PropertyAssessment assessment;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateBldgAssessment({required this.id, required this.assessment});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, assessment];
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
part of 'bldg_assessment_offline_bloc.dart';
|
||||||
|
|
||||||
|
class BldgAssessmentOfflineState extends Equatable {
|
||||||
|
const BldgAssessmentOfflineState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BldgAssessmentOfflineInitial extends BldgAssessmentOfflineState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BldgAssessmentOfflineLoaded extends BldgAssessmentOfflineState {
|
||||||
|
final List<PropertyAssessment> assessment;
|
||||||
|
|
||||||
|
const BldgAssessmentOfflineLoaded({required this.assessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [assessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificBldgAssessmentOffline extends BldgAssessmentOfflineState {
|
||||||
|
final PropertyAssessment assessment;
|
||||||
|
|
||||||
|
const LoadSpecificBldgAssessmentOffline({required this.assessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [assessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificBldgAssessmentLoaded extends BldgAssessmentOfflineState {
|
||||||
|
final PropertyAssessment assessment;
|
||||||
|
|
||||||
|
const SpecificBldgAssessmentLoaded({required this.assessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [assessment];
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/additional_items.dart';
|
||||||
|
import '../../../../../model/passo/building_and_structure.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'building_and_structure_event.dart';
|
||||||
|
part 'building_and_structure_state.dart';
|
||||||
|
|
||||||
|
class BuildingAndStructureBloc
|
||||||
|
extends Bloc<BuildingAndStructureEvent, BuildingAndStructureState> {
|
||||||
|
BuildingAndStructureBloc() : super(BuildingAndStructureOfflineInitial()) {
|
||||||
|
List<BldgAndStructure> bldgAndStructure = [];
|
||||||
|
on<LoadBuildingAndStructure>((event, emit) async {
|
||||||
|
emit(BuildingAndStructureOfflineInitial());
|
||||||
|
try {
|
||||||
|
emit(BuildingAndStructureLoaded(bldgAndStructure: bldgAndStructure));
|
||||||
|
} catch (e) {
|
||||||
|
emit(BuildingAndStructureErrorState(e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadBuildingAndStructureEdit>((event, emit) async {
|
||||||
|
emit(BuildingAndStructureOfflineInitial());
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getBuildingAndStructure(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
bldgAndStructure =
|
||||||
|
result.map((map) => BldgAndStructure.fromJson(map)).toList();
|
||||||
|
|
||||||
|
emit(BuildingAndStructureLoaded(bldgAndStructure: bldgAndStructure));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<AddBuildingAndStructure>((event, emit) async {
|
||||||
|
try {
|
||||||
|
BldgAndStructure item = await SQLServices.instance
|
||||||
|
.createBuildingAndStructure(event.bldgAndStructure);
|
||||||
|
|
||||||
|
print(item.toJson());
|
||||||
|
|
||||||
|
bldgAndStructure.add(item);
|
||||||
|
|
||||||
|
emit(BuildingAndStructureLoaded(bldgAndStructure: bldgAndStructure));
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<ShowBuildingAndStructure>((event, emit) async {
|
||||||
|
emit(ShowBldgAndStructuresScreen());
|
||||||
|
});
|
||||||
|
on<FetchBuildingAndStructure>((event, emit) async {
|
||||||
|
bldgAndStructure = await SQLServices.instance.readBuildingAndStructure();
|
||||||
|
emit(BuildingAndStructureLoaded(bldgAndStructure: bldgAndStructure));
|
||||||
|
});
|
||||||
|
on<DeleteBuildingAndStructure>((event, emit) async {
|
||||||
|
bldgAndStructure
|
||||||
|
.removeWhere(((BldgAndStructure element) => element.id == event.id));
|
||||||
|
await SQLServices.instance.deleteBuildingAndStructure(id: event.id);
|
||||||
|
emit(const BuildingAndStructureDeletedState(success: true));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
part of 'building_and_structure_bloc.dart';
|
||||||
|
|
||||||
|
class BuildingAndStructureEvent extends Equatable {
|
||||||
|
const BuildingAndStructureEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
final List<BldgAndStructure> bldgAndStructure;
|
||||||
|
|
||||||
|
const LoadBuildingAndStructure(
|
||||||
|
{this.bldgAndStructure = const <BldgAndStructure>[]});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [bldgAndStructure];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadBuildingAndStructureEdit extends BuildingAndStructureEvent {
|
||||||
|
final List<BldgAndStructure> bldgAndStructure;
|
||||||
|
final int? id;
|
||||||
|
|
||||||
|
const LoadBuildingAndStructureEdit({required this.bldgAndStructure, this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [bldgAndStructure];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
final BldgAndStructure bldgAndStructure;
|
||||||
|
|
||||||
|
const AddBuildingAndStructure({required this.bldgAndStructure});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [bldgAndStructure];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
final BldgAndStructure addItems;
|
||||||
|
const UpdateBuildingAndStructure({required this.addItems});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [addItems];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
const FetchBuildingAndStructure();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSpecificBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSpecificBuildingAndStructure({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeleteBuildingAndStructure extends BuildingAndStructureEvent {
|
||||||
|
final int id;
|
||||||
|
const DeleteBuildingAndStructure({required this.id});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowBuildingAndStructure extends BuildingAndStructureEvent {}
|
|
@ -0,0 +1,46 @@
|
||||||
|
part of 'building_and_structure_bloc.dart';
|
||||||
|
|
||||||
|
class BuildingAndStructureState extends Equatable {
|
||||||
|
const BuildingAndStructureState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BuildingAndStructureOfflineInitial extends BuildingAndStructureState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BuildingAndStructureLoaded extends BuildingAndStructureState {
|
||||||
|
final List<BldgAndStructure> bldgAndStructure;
|
||||||
|
|
||||||
|
const BuildingAndStructureLoaded({required this.bldgAndStructure});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [bldgAndStructure];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificBuildingAndStructure extends BuildingAndStructureState {
|
||||||
|
final BldgAndStructure bldgAndStructure;
|
||||||
|
|
||||||
|
const LoadSpecificBuildingAndStructure({required this.bldgAndStructure});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [bldgAndStructure];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowBldgAndStructuresScreen extends BuildingAndStructureState {}
|
||||||
|
|
||||||
|
class BuildingAndStructureErrorState extends BuildingAndStructureState {
|
||||||
|
const BuildingAndStructureErrorState(this.error);
|
||||||
|
final String error;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [error];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BuildingAndStructureDeletedState extends BuildingAndStructureState {
|
||||||
|
final bool success;
|
||||||
|
const BuildingAndStructureDeletedState({required this.success});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [success];
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/passo/general_description.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/building/property_owner_info_service.dart';
|
||||||
|
|
||||||
|
part 'general_description_event.dart';
|
||||||
|
part 'general_description_state.dart';
|
||||||
|
|
||||||
|
class GeneralDescriptionBloc
|
||||||
|
extends Bloc<GeneralDescriptionEvent, GeneralDescriptionState> {
|
||||||
|
GeneralDescriptionBloc() : super(GeneralDescriptionInitial()) {
|
||||||
|
List<GeneralDesc> todos = [];
|
||||||
|
on<AddGendesc>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBldgGeneralDescription(GeneralDesc(
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
bldgKind: event.bldgKind,
|
||||||
|
strucType: event.strucType,
|
||||||
|
bldgPermit: event.bldgPermit,
|
||||||
|
dateIssued: event.dateIssued.toString(),
|
||||||
|
cct: event.cct,
|
||||||
|
certCompletionIssued: event.certCompletionIssued.toString(),
|
||||||
|
certOccupancyIssued: event.certOccupancyIssued.toString(),
|
||||||
|
dateCompleted: event.dateCompleted.toString(),
|
||||||
|
dateOccupied: event.dateOccupied.toString(),
|
||||||
|
bldgAge: event.bldgAge,
|
||||||
|
noStoreys: event.noStoreys,
|
||||||
|
area1Stfloor: event.area1Stfloor,
|
||||||
|
area2Ndfloor: event.area2Ndfloor,
|
||||||
|
area3Rdfloor: event.area3Rdfloor,
|
||||||
|
area4Thfloor: event.area4Thfloor,
|
||||||
|
totalFloorArea: event.totalFloorArea,
|
||||||
|
floorSketch: event.floorSketch,
|
||||||
|
actualUse: event.actualUse,
|
||||||
|
unitValue: event.unitValue,
|
||||||
|
genCode: event.genCode));
|
||||||
|
});
|
||||||
|
on<FetchSingleGeneralDescription>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getGeneralDescription(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<GeneralDesc> genDescList =
|
||||||
|
result.map((map) => GeneralDesc.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from locationList
|
||||||
|
GeneralDesc firstGenDesc =
|
||||||
|
genDescList.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('location test result');
|
||||||
|
print(firstGenDesc);
|
||||||
|
emit(SpecificGeneralDescriptionLoaded(gendesc: firstGenDesc));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateGeneralDescription>((event, emit) async {
|
||||||
|
await SQLServices.instance
|
||||||
|
.updateGeneralDescription(event.id, event.gendesc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,113 @@
|
||||||
|
part of 'general_description_bloc.dart';
|
||||||
|
|
||||||
|
class GeneralDescriptionEvent extends Equatable {
|
||||||
|
const GeneralDescriptionEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddGendesc extends GeneralDescriptionEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String bldgKind;
|
||||||
|
final String strucType;
|
||||||
|
final String bldgPermit;
|
||||||
|
final String dateIssued;
|
||||||
|
final String cct;
|
||||||
|
final String certCompletionIssued;
|
||||||
|
final String certOccupancyIssued;
|
||||||
|
final String dateCompleted;
|
||||||
|
final String dateOccupied;
|
||||||
|
final String bldgAge;
|
||||||
|
final String noStoreys;
|
||||||
|
final String area1Stfloor;
|
||||||
|
final String area2Ndfloor;
|
||||||
|
final String area3Rdfloor;
|
||||||
|
final String area4Thfloor;
|
||||||
|
final String totalFloorArea;
|
||||||
|
final dynamic floorSketch;
|
||||||
|
final String actualUse;
|
||||||
|
final String unitValue;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddGendesc(
|
||||||
|
{required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.bldgKind,
|
||||||
|
required this.strucType,
|
||||||
|
required this.bldgPermit,
|
||||||
|
required this.dateIssued,
|
||||||
|
required this.cct,
|
||||||
|
required this.certCompletionIssued,
|
||||||
|
required this.certOccupancyIssued,
|
||||||
|
required this.dateCompleted,
|
||||||
|
required this.dateOccupied,
|
||||||
|
required this.bldgAge,
|
||||||
|
required this.noStoreys,
|
||||||
|
required this.area1Stfloor,
|
||||||
|
required this.area2Ndfloor,
|
||||||
|
required this.area3Rdfloor,
|
||||||
|
required this.area4Thfloor,
|
||||||
|
required this.totalFloorArea,
|
||||||
|
required this.floorSketch,
|
||||||
|
required this.actualUse,
|
||||||
|
required this.unitValue,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
bldgKind,
|
||||||
|
strucType,
|
||||||
|
bldgPermit,
|
||||||
|
dateIssued,
|
||||||
|
cct,
|
||||||
|
certCompletionIssued,
|
||||||
|
certOccupancyIssued,
|
||||||
|
dateCompleted,
|
||||||
|
dateOccupied,
|
||||||
|
bldgAge,
|
||||||
|
noStoreys,
|
||||||
|
area1Stfloor,
|
||||||
|
area2Ndfloor,
|
||||||
|
area3Rdfloor,
|
||||||
|
area4Thfloor,
|
||||||
|
totalFloorArea,
|
||||||
|
floorSketch,
|
||||||
|
actualUse,
|
||||||
|
unitValue,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleGeneralDescription extends GeneralDescriptionEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleGeneralDescription({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateGeneralDescription extends GeneralDescriptionEvent {
|
||||||
|
final GeneralDesc gendesc;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateGeneralDescription({required this.id, required this.gendesc});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, gendesc];
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
part of 'general_description_bloc.dart';
|
||||||
|
|
||||||
|
class GeneralDescriptionState extends Equatable {
|
||||||
|
const GeneralDescriptionState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class GeneralDescriptionInitial extends GeneralDescriptionState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocationLoaded extends GeneralDescriptionState {
|
||||||
|
final List<GeneralDesc> gendesc;
|
||||||
|
|
||||||
|
const LocationLoaded({required this.gendesc});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [gendesc];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificGeneralDescriptionLoaded extends GeneralDescriptionState {
|
||||||
|
final GeneralDesc gendesc;
|
||||||
|
|
||||||
|
const SpecificGeneralDescriptionLoaded({required this.gendesc});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [gendesc];
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/land_ref.dart';
|
||||||
|
import '../../../../../model/passo/todo.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/building/property_owner_info_service.dart';
|
||||||
|
|
||||||
|
part 'landref_location_event.dart';
|
||||||
|
part 'landref_location_state.dart';
|
||||||
|
|
||||||
|
class LandrefLocationBloc
|
||||||
|
extends Bloc<LandrefLocationEvent, LandrefLocationState> {
|
||||||
|
LandrefLocationBloc() : super(LandrefInitial()) {
|
||||||
|
List<LandRef> todos = [];
|
||||||
|
on<AddLandRef>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBldgLandRef(
|
||||||
|
LandRef(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
owner: event.owner,
|
||||||
|
cloaNo: event.cloaNo,
|
||||||
|
lotNo: event.lotNo,
|
||||||
|
tdn: event.tdn,
|
||||||
|
area: event.area,
|
||||||
|
surveyNo: event.surveyNo,
|
||||||
|
blkNo: event.blkNo,
|
||||||
|
genCode: event.genCode),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// on<UpdateTodo>((event, emit) async {
|
||||||
|
// await PropertyOwnerInfoServices.instance.update(
|
||||||
|
// todo: event.todo,
|
||||||
|
// );
|
||||||
|
// });
|
||||||
|
|
||||||
|
// on<FetchLanRef>((event, emit) async {
|
||||||
|
// landref = await PropertyOwnerInfoServices.instance.readAllTodos();
|
||||||
|
// emit(LandrefLoaded(landref: landref));
|
||||||
|
// });
|
||||||
|
|
||||||
|
on<FetchSingleLandref>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getLandRef(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
LandRef firstRow = LandRef(
|
||||||
|
id: result[0]["id"],
|
||||||
|
bldgapprDetailsId: result[0]["bldgapprDetailsId"],
|
||||||
|
assessedById: result[0]["assessedById"],
|
||||||
|
assessedByName: result[0]["assessedByName"],
|
||||||
|
dateCreated: DateTime.now().toString(),
|
||||||
|
dateModified: DateTime.now().toString(),
|
||||||
|
owner: result[0]["owner"],
|
||||||
|
cloaNo: result[0]["cloaNo"],
|
||||||
|
lotNo: result[0]["lotNo"],
|
||||||
|
tdn: result[0]["tdn"],
|
||||||
|
area: result[0]["area"],
|
||||||
|
surveyNo: result[0]["surveyNo"],
|
||||||
|
blkNo: result[0]["blkNo"],
|
||||||
|
);
|
||||||
|
|
||||||
|
print('landref test result');
|
||||||
|
print(firstRow);
|
||||||
|
emit(SpecificLandrefLoaded(landref: firstRow));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<UpdateBldgLandRef>((event, emit) async {
|
||||||
|
await SQLServices.instance.updateLandRef(event.id, event.landRef);
|
||||||
|
});
|
||||||
|
|
||||||
|
// on<DeleteTodo>((event, emit) async {
|
||||||
|
// await PropertyOwnerInfoServices.instance.delete(id: event.id);
|
||||||
|
// add(const FetchTodos());
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
part of 'landref_location_bloc.dart';
|
||||||
|
|
||||||
|
class LandrefLocationEvent extends Equatable {
|
||||||
|
const LandrefLocationEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandRef extends LandrefLocationEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final dynamic owner;
|
||||||
|
final dynamic cloaNo;
|
||||||
|
final dynamic lotNo;
|
||||||
|
final dynamic tdn;
|
||||||
|
final dynamic area;
|
||||||
|
final dynamic surveyNo;
|
||||||
|
final dynamic blkNo;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddLandRef(
|
||||||
|
{required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.owner,
|
||||||
|
required this.cloaNo,
|
||||||
|
required this.lotNo,
|
||||||
|
required this.tdn,
|
||||||
|
required this.area,
|
||||||
|
required this.surveyNo,
|
||||||
|
required this.blkNo,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
owner,
|
||||||
|
cloaNo,
|
||||||
|
lotNo,
|
||||||
|
tdn,
|
||||||
|
area,
|
||||||
|
surveyNo,
|
||||||
|
blkNo,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateBldgLandRef extends LandrefLocationEvent {
|
||||||
|
final LandRef landRef;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateBldgLandRef({required this.id, required this.landRef});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, landRef];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchLanRef extends LandrefLocationEvent {
|
||||||
|
const FetchLanRef();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleLandref extends LandrefLocationEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleLandref({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
// class DeleteTodo extends LandrefLocationEvent {
|
||||||
|
// final int id;
|
||||||
|
// const DeleteTodo({required this.id});
|
||||||
|
// @override
|
||||||
|
// List<Object> get props => [id];
|
||||||
|
// }
|
|
@ -0,0 +1,29 @@
|
||||||
|
part of 'landref_location_bloc.dart';
|
||||||
|
|
||||||
|
class LandrefLocationState extends Equatable {
|
||||||
|
const LandrefLocationState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandrefInitial extends LandrefLocationState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandrefLoaded extends LandrefLocationState {
|
||||||
|
final List<LandRef> landref;
|
||||||
|
|
||||||
|
const LandrefLoaded({required this.landref});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landref];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificLandrefLoaded extends LandrefLocationState {
|
||||||
|
final LandRef landref;
|
||||||
|
|
||||||
|
const SpecificLandrefLoaded({required this.landref});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landref];
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/bldg_loc.dart';
|
||||||
|
|
||||||
|
part 'location_event.dart';
|
||||||
|
part 'location_state.dart';
|
||||||
|
|
||||||
|
class LocationBloc extends Bloc<LocationEvent, LocationState> {
|
||||||
|
LocationBloc() : super(LocationInitial()) {
|
||||||
|
List<BldgLoc> todos = [];
|
||||||
|
on<AddLocation>((event, emit) async {
|
||||||
|
await SQLServices.instance.createBldglocation(BldgLoc(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
street: event.street,
|
||||||
|
barangay: event.barangay,
|
||||||
|
municipality: event.municipality,
|
||||||
|
province: event.province,
|
||||||
|
genCode: event.genCode));
|
||||||
|
});
|
||||||
|
on<FetchSingleLocation>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getLocation(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<BldgLoc> locationList =
|
||||||
|
result.map((map) => BldgLoc.fromJson(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from locationList
|
||||||
|
BldgLoc firstLocation =
|
||||||
|
locationList.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('location test result');
|
||||||
|
print(firstLocation);
|
||||||
|
emit(SpecificLocationLoaded(location: firstLocation));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateBldgLoc>((event, emit) async {
|
||||||
|
await SQLServices.instance.updateLocation(event.id, event.bldgLoc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
part of 'location_bloc.dart';
|
||||||
|
|
||||||
|
class LocationEvent extends Equatable {
|
||||||
|
const LocationEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLocation extends LocationEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String street;
|
||||||
|
final String barangay;
|
||||||
|
final String municipality;
|
||||||
|
final String province;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddLocation(
|
||||||
|
{required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.street,
|
||||||
|
required this.barangay,
|
||||||
|
required this.municipality,
|
||||||
|
required this.province,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
bldgapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
street,
|
||||||
|
barangay,
|
||||||
|
municipality,
|
||||||
|
province,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateBldgLoc extends LocationEvent {
|
||||||
|
final BldgLoc bldgLoc;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateBldgLoc({required this.id, required this.bldgLoc});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, bldgLoc];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchLanRef extends LocationEvent {
|
||||||
|
const FetchLanRef();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleLocation extends LocationEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleLocation({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
// class DeleteTodo extends LocationEvent {
|
||||||
|
// final int id;
|
||||||
|
// const DeleteTodo({required this.id});
|
||||||
|
// @override
|
||||||
|
// List<Object> get props => [id];
|
||||||
|
// }
|
|
@ -0,0 +1,29 @@
|
||||||
|
part of 'location_bloc.dart';
|
||||||
|
|
||||||
|
class LocationState extends Equatable {
|
||||||
|
const LocationState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocationInitial extends LocationState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocationLoaded extends LocationState {
|
||||||
|
final List<BldgLoc> location;
|
||||||
|
|
||||||
|
const LocationLoaded({required this.location});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [location];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificLocationLoaded extends LocationState {
|
||||||
|
final BldgLoc location;
|
||||||
|
|
||||||
|
const SpecificLocationLoaded({required this.location});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [location];
|
||||||
|
}
|
|
@ -0,0 +1,506 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:unit2/model/passo/floor_sketch.dart';
|
||||||
|
import 'package:unit2/sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
import 'package:unit2/sevices/passo/building/building_services.dart';
|
||||||
|
import '../../../../../model/offline/offline_profile.dart';
|
||||||
|
import '../../../../../model/passo/additional_items.dart';
|
||||||
|
import '../../../../../model/passo/bldg_loc.dart';
|
||||||
|
import '../../../../../model/passo/building_and_structure.dart';
|
||||||
|
import '../../../../../model/passo/general_description.dart';
|
||||||
|
import '../../../../../model/passo/land_ref.dart';
|
||||||
|
import '../../../../../model/passo/property_assessment.dart';
|
||||||
|
import '../../../../../model/passo/property_info.dart';
|
||||||
|
import '../../../../../model/passo/structureMaterial.dart';
|
||||||
|
import '../../../../../model/passo/todo.dart';
|
||||||
|
import '../../../../../model/profile/basic_information/primary-information.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/building/property_owner_info_service.dart';
|
||||||
|
import 'package:http/http.dart';
|
||||||
|
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
// as http;
|
||||||
|
|
||||||
|
import '../../../../../utils/urls.dart';
|
||||||
|
part 'crud_event.dart';
|
||||||
|
part 'crud_state.dart';
|
||||||
|
|
||||||
|
class CrudBloc extends Bloc<CrudEvent, CrudState> {
|
||||||
|
CrudBloc() : super(CrudInitial()) {
|
||||||
|
List<PropertyInfo> propertyOwner = [];
|
||||||
|
on<AddTodo>((event, emit) async {
|
||||||
|
try {
|
||||||
|
PropertyInfo ownerInfo;
|
||||||
|
ownerInfo = await SQLServices.instance.createBldgOwner(
|
||||||
|
PropertyInfo(
|
||||||
|
transCode: event.transCode,
|
||||||
|
tdn: event.tdn,
|
||||||
|
pin: event.pin,
|
||||||
|
fname: event.fname,
|
||||||
|
mname: event.mname,
|
||||||
|
lname: event.lname,
|
||||||
|
bday: event.bday,
|
||||||
|
address: event.address,
|
||||||
|
telno: event.telno,
|
||||||
|
tin: event.tin,
|
||||||
|
adminUser: event.adminUser,
|
||||||
|
adminAddress: event.adminAddress,
|
||||||
|
adminTelno: event.adminTelno,
|
||||||
|
adminTin: event.adminTin,
|
||||||
|
faasType: event.faasType,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
dateCreated: event.dateCreated,
|
||||||
|
dateModified: event.dateModified,
|
||||||
|
genCode: event.genCode),
|
||||||
|
);
|
||||||
|
|
||||||
|
propertyOwner.add(ownerInfo);
|
||||||
|
|
||||||
|
emit(PropertyInfoLoaded(propertyInfos: propertyOwner));
|
||||||
|
} catch (e) {
|
||||||
|
emit(PropertyOwnerInfoErrorState(errorMessage: 'Failed to add todo'));
|
||||||
|
print('Error: $e');
|
||||||
|
// You might want to throw or log the error, or take other appropriate actions
|
||||||
|
|
||||||
|
// If you want to rethrow the error, uncomment the following line
|
||||||
|
// throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<UpdatePropertyOwnerInfo>((event, emit) async {
|
||||||
|
await SQLServices.instance.updateBldgOwner(event.id, event.propertyInfo);
|
||||||
|
});
|
||||||
|
|
||||||
|
on<FetchTodos>((event, emit) async {
|
||||||
|
emit(PropertyOwnerInfoLoading());
|
||||||
|
propertyOwner = await SQLServices.instance.readAllBldgOwner();
|
||||||
|
emit(PropertyInfoLoaded(propertyInfos: propertyOwner));
|
||||||
|
});
|
||||||
|
|
||||||
|
// on<FetchSpecificTodo>((event, emit) async {
|
||||||
|
// Prop todo = await PropertyOwnerInfoServices.instance.readTodo(id: event.id);
|
||||||
|
// emit(DisplaySpecificTodo(todo: todo));
|
||||||
|
// });
|
||||||
|
|
||||||
|
on<DeleteTodo>((event, emit) async {
|
||||||
|
await SQLServices.instance.deleteBldgOwner(id: event.id);
|
||||||
|
// Directly fetch and emit new data rather than triggering another event
|
||||||
|
try {
|
||||||
|
emit(PropertyOwnerInfoLoading());
|
||||||
|
propertyOwner.clear(); // Clear the current list
|
||||||
|
propertyOwner =
|
||||||
|
await SQLServices.instance.readAllBldgOwner(); // Refetch data
|
||||||
|
emit(PropertyInfoLoaded(
|
||||||
|
propertyInfos: propertyOwner)); // Emit new state with updated data
|
||||||
|
} catch (error) {
|
||||||
|
// emit((error.toString())); // Handle potential errors
|
||||||
|
print(error.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Future<Map<String, dynamic>> _prepareBuildingDetails(
|
||||||
|
UploadBuildingFaas event, PropertyInfo infos) async {
|
||||||
|
// Fetch data
|
||||||
|
List<Map<String, dynamic>> genDesc =
|
||||||
|
await SQLServices.instance.getGeneralDescription(infos.id);
|
||||||
|
List<Map<String, dynamic>> loc =
|
||||||
|
await SQLServices.instance.getLocation(infos.id);
|
||||||
|
List<Map<String, dynamic>> landRef =
|
||||||
|
await SQLServices.instance.getLandRef(infos.id);
|
||||||
|
List<Map<String, dynamic>> assessment =
|
||||||
|
await SQLServices.instance.getBldgAssessment(infos.id);
|
||||||
|
List<Map<String, dynamic>> strucMat =
|
||||||
|
await SQLServices.instance.getStructuralMaterials(infos.id);
|
||||||
|
List<Map<String, dynamic>> addItems =
|
||||||
|
await SQLServices.instance.getAdditionalItems(infos.id);
|
||||||
|
List<Map<String, dynamic>> bldgStructure =
|
||||||
|
await SQLServices.instance.getBuildingAndStructure(infos.id);
|
||||||
|
|
||||||
|
// Parse data
|
||||||
|
GeneralDesc firstGenDesc = GeneralDesc.fromJson2(genDesc.first);
|
||||||
|
BldgLoc firstLoc = BldgLoc.fromJson2(loc.first);
|
||||||
|
LandRef firstLandRef = LandRef.fromJson2(landRef.first);
|
||||||
|
PropertyAssessment firstAssess =
|
||||||
|
PropertyAssessment.fromJson2(assessment.first);
|
||||||
|
StructureMaterials firstStructMat =
|
||||||
|
StructureMaterials.fromJson2(strucMat.first);
|
||||||
|
|
||||||
|
// Prepare details
|
||||||
|
DateTime dateIssued = DateTime.parse(firstGenDesc.dateIssued!);
|
||||||
|
final details = {
|
||||||
|
"assessed_by_id": event.offlineProfile.id.toString(),
|
||||||
|
"assessed_by_name": event.offlineProfile.firstName,
|
||||||
|
"date_created": "{{currentTimestamp}}",
|
||||||
|
"date_modified": "{{currentTimestamp}}",
|
||||||
|
"trans_code": '08887',
|
||||||
|
"tdn": infos.tdn,
|
||||||
|
"pin": infos.pin,
|
||||||
|
"fname": infos.fname,
|
||||||
|
"mname": infos.mname,
|
||||||
|
"lname": infos.lname,
|
||||||
|
"bday": infos.bday,
|
||||||
|
"address": infos.address,
|
||||||
|
"telno": infos.telno,
|
||||||
|
"tin": infos.tin,
|
||||||
|
"admin_user": infos.adminUser,
|
||||||
|
"admin_address": infos.adminAddress,
|
||||||
|
"admin_telno": infos.adminTelno,
|
||||||
|
"admin_tin": infos.adminTin,
|
||||||
|
"faas_type": infos.faasType,
|
||||||
|
"gen_code": "5TH",
|
||||||
|
"bldgappr_location.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_location.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_location.street": firstLoc.street,
|
||||||
|
"bldgappr_location.barangay": firstLoc.barangay,
|
||||||
|
"bldgappr_location.municipality": firstLoc.municipality,
|
||||||
|
"bldgappr_location.province": firstLoc.province,
|
||||||
|
"bldgappr_location.gen_code": "5TH",
|
||||||
|
"bldgappr_landref.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_landref.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_landref.owner": firstLandRef.owner,
|
||||||
|
"bldgappr_landref.cloa_no": firstLandRef.cloaNo,
|
||||||
|
"bldgappr_landref.lot_no": firstLandRef.lotNo,
|
||||||
|
"bldgappr_landref.tdn": firstLandRef.tdn,
|
||||||
|
"bldgappr_landref.area": firstLandRef.area,
|
||||||
|
"bldgappr_landref.survey_no": firstLandRef.surveyNo,
|
||||||
|
"bldgappr_landref.blk_no": firstLandRef.blkNo,
|
||||||
|
"bldgappr_landref.gen_code": "5TH",
|
||||||
|
"bldgappr_generaldesc.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_generaldesc.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_generaldesc.bldg_kind": firstGenDesc.bldgKind,
|
||||||
|
"bldgappr_generaldesc.struc_type": firstGenDesc.strucType,
|
||||||
|
"bldgappr_generaldesc.bldg_permit": firstGenDesc.bldgPermit,
|
||||||
|
"bldgappr_generaldesc.date_issued": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstGenDesc.dateIssued!)),
|
||||||
|
"bldgappr_generaldesc.cct": null,
|
||||||
|
"bldgappr_generaldesc.cert_completion_issued": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstGenDesc.certCompletionIssued!)),
|
||||||
|
"bldgappr_generaldesc.cert_occupancy_issued": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstGenDesc.certOccupancyIssued!)),
|
||||||
|
"bldgappr_generaldesc.date_completed": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstGenDesc.dateCompleted!)),
|
||||||
|
"bldgappr_generaldesc.date_occupied": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstGenDesc.dateOccupied!)),
|
||||||
|
"bldgappr_generaldesc.bldg_age": firstGenDesc.bldgAge,
|
||||||
|
"bldgappr_generaldesc.no_storeys": firstGenDesc.noStoreys,
|
||||||
|
"bldgappr_generaldesc.area_1stfloor": firstGenDesc.area1Stfloor,
|
||||||
|
"bldgappr_generaldesc.area_2ndfloor": firstGenDesc.area2Ndfloor,
|
||||||
|
"bldgappr_generaldesc.area_3rdfloor": firstGenDesc.area3Rdfloor,
|
||||||
|
"bldgappr_generaldesc.area_4thfloor": firstGenDesc.area4Thfloor,
|
||||||
|
"bldgappr_generaldesc.total_floor_area": firstGenDesc.totalFloorArea,
|
||||||
|
"bldgappr_generaldesc.floor_sketch": null,
|
||||||
|
"bldgappr_generaldesc.actual_use": firstGenDesc.actualUse,
|
||||||
|
"bldgappr_generaldesc.unit_value": firstGenDesc.unitValue,
|
||||||
|
"bldgappr_generaldesc.gen_code": "5TH",
|
||||||
|
"bldgappr_struct_materials.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_struct_materials.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_struct_materials.foundation": firstStructMat.foundation,
|
||||||
|
"bldgappr_struct_materials.columns": firstStructMat.columns,
|
||||||
|
"bldgappr_struct_materials.beams": firstStructMat.beams,
|
||||||
|
"bldgappr_struct_materials.truss_framing": firstStructMat.trussFraming,
|
||||||
|
"bldgappr_struct_materials.roof": firstStructMat.roof,
|
||||||
|
"bldgappr_struct_materials.flooring": firstStructMat.flooring,
|
||||||
|
"bldgappr_struct_materials.walls": firstStructMat.walls,
|
||||||
|
"bldgappr_struct_materials.others": firstStructMat.others,
|
||||||
|
"bldgappr_struct_materials.gen_code": "5TH",
|
||||||
|
"bldgappr_property_assessment.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_property_assessment.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_property_assessment.actual_use": firstAssess.actualUse,
|
||||||
|
"bldgappr_property_assessment.market_value": firstAssess.marketValue,
|
||||||
|
"bldgappr_property_assessment.assessment_level":
|
||||||
|
firstAssess.assessmentLevel,
|
||||||
|
"bldgappr_property_assessment.assessed_value":
|
||||||
|
firstAssess.assessedValue,
|
||||||
|
"bldgappr_property_assessment.taxable": firstAssess.taxable,
|
||||||
|
"bldgappr_property_assessment.exempt": firstAssess.exempt,
|
||||||
|
"bldgappr_property_assessment.qtr": firstAssess.qtr,
|
||||||
|
"bldgappr_property_assessment.yr": firstAssess.yr,
|
||||||
|
"bldgappr_property_assessment.appraisedby_name":
|
||||||
|
firstAssess.appraisedbyName,
|
||||||
|
"bldgappr_property_assessment.appraisedby_designation":
|
||||||
|
firstAssess.appraisedbyDesignation,
|
||||||
|
"bldgappr_property_assessment.appraisedby_date":
|
||||||
|
DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstAssess.appraisedbyDate!)),
|
||||||
|
"bldgappr_property_assessment.recommendappr_name":
|
||||||
|
firstAssess.recommendapprName,
|
||||||
|
"bldgappr_property_assessment.recommendappr_designation":
|
||||||
|
firstAssess.recommendapprDesignation,
|
||||||
|
"bldgappr_property_assessment.recommendappr_date":
|
||||||
|
DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstAssess.recommendapprDate!)),
|
||||||
|
"bldgappr_property_assessment.approvedby_name":
|
||||||
|
firstAssess.approvedbyName,
|
||||||
|
"bldgappr_property_assessment.approvedby_designation":
|
||||||
|
firstAssess.approvedbyDesignation,
|
||||||
|
"bldgappr_property_assessment.approvedby_date": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstAssess.approvedbyDate!)),
|
||||||
|
"bldgappr_property_assessment.memoranda": firstAssess.memoranda,
|
||||||
|
"bldgappr_property_assessment.note": firstAssess.note,
|
||||||
|
"bldgappr_property_assessment.swornstatement_no":
|
||||||
|
firstAssess.swornstatementNo,
|
||||||
|
"bldgappr_property_assessment.date_received": DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstAssess.dateReceived!)),
|
||||||
|
"bldgappr_property_assessment.entry_date_assessment":
|
||||||
|
DateFormat("yyyy-MM-dd")
|
||||||
|
.format(DateTime.parse(firstAssess.entryDateAssessment!)),
|
||||||
|
"bldgappr_property_assessment.entry_date_by": " ",
|
||||||
|
"bldgappr_property_assessment.gen_code": "5TH",
|
||||||
|
"bldgappr_rec_supersededass.date_created": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_rec_supersededass.date_modified": "{{currentTimestamp}}",
|
||||||
|
"bldgappr_rec_supersededass.pin": " ",
|
||||||
|
"bldgappr_rec_supersededass.tdn": " ",
|
||||||
|
"bldgappr_rec_supersededass.total_assval": "0",
|
||||||
|
"bldgappr_rec_supersededass.owner": " ",
|
||||||
|
"bldgappr_rec_supersededass.effectivity_ass": null,
|
||||||
|
"bldgappr_rec_supersededass.page_no": "0",
|
||||||
|
"bldgappr_rec_supersededass.total_marketval": "0",
|
||||||
|
"bldgappr_rec_supersededass.total_area": "0",
|
||||||
|
"bldgappr_rec_supersededass.rec_assessment": null,
|
||||||
|
"bldgappr_rec_supersededass.rec_taxmapping": " ",
|
||||||
|
"bldgappr_rec_supersededass.rec_records": " ",
|
||||||
|
"bldgappr_rec_supersededass.date": null,
|
||||||
|
"bldgappr_rec_supersededass.gen_code": "5TH"
|
||||||
|
};
|
||||||
|
|
||||||
|
return details;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _postAdditionalItems(
|
||||||
|
Map<String, dynamic> datas, PropertyInfo infos) async {
|
||||||
|
String xClientKey = "unitK3CQaXiWlPReDsBzmmwBZPd9Re1z";
|
||||||
|
String xClientKeySecret = "unitcYqAN7GGalyz";
|
||||||
|
Map<String, String> headers = {
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'X-Client-Key': xClientKey,
|
||||||
|
'X-Client-Secret': xClientKeySecret
|
||||||
|
};
|
||||||
|
|
||||||
|
List<Map<String, dynamic>> addItems =
|
||||||
|
await SQLServices.instance.getAdditionalItems(infos.id);
|
||||||
|
|
||||||
|
List<AdditionalItems> addItemsList =
|
||||||
|
addItems.map((map) => AdditionalItems.fromJson(map)).toList();
|
||||||
|
|
||||||
|
for (AdditionalItems items in addItemsList) {
|
||||||
|
// Populate AdditionalItems model here
|
||||||
|
final addItems = AdditionalItems(
|
||||||
|
id: 1,
|
||||||
|
bldgapprDetailsId: datas['data']['id'],
|
||||||
|
classId: items.classId,
|
||||||
|
className: items.className,
|
||||||
|
structType: items.structType,
|
||||||
|
unitValue: items.unitValue,
|
||||||
|
baseUnitValue: items.baseUnitValue,
|
||||||
|
area: items.area,
|
||||||
|
marketValue: items.marketValue,
|
||||||
|
depreciationRate: items.depreciationRate,
|
||||||
|
adjustedMarketVal: items.adjustedMarketVal,
|
||||||
|
amtDepreciation: items.amtDepreciation,
|
||||||
|
painted: items.painted,
|
||||||
|
secondhand: items.secondhand,
|
||||||
|
paintedUnitval: items.paintedUnitval,
|
||||||
|
secondhandUnitval: items.secondhandUnitval,
|
||||||
|
actualUse: items.actualUse,
|
||||||
|
genCode: "5TH");
|
||||||
|
Response addResponse = await post(
|
||||||
|
Uri.parse(
|
||||||
|
'https://${Url.instance.host()}/api/rptass_app/additional_items/'),
|
||||||
|
headers: headers,
|
||||||
|
body: jsonEncode(addItems));
|
||||||
|
print(addResponse.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _postBuildingStructures(
|
||||||
|
Map<String, dynamic> datas, PropertyInfo infos) async {
|
||||||
|
String xClientKey = "unitK3CQaXiWlPReDsBzmmwBZPd9Re1z";
|
||||||
|
String xClientKeySecret = "unitcYqAN7GGalyz";
|
||||||
|
Map<String, String> headers = {
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'X-Client-Key': xClientKey,
|
||||||
|
'X-Client-Secret': xClientKeySecret
|
||||||
|
};
|
||||||
|
|
||||||
|
List<Map<String, dynamic>> bldgStructures =
|
||||||
|
await SQLServices.instance.getBuildingAndStructure(infos.id);
|
||||||
|
|
||||||
|
List<BldgAndStructure> bldgStructureList =
|
||||||
|
bldgStructures.map((map) => BldgAndStructure.fromJson(map)).toList();
|
||||||
|
for (BldgAndStructure structure in bldgStructureList) {
|
||||||
|
final bldgStruc = BldgAndStructure(
|
||||||
|
id: 1,
|
||||||
|
bldgapprDetailsId: datas['data']['id'],
|
||||||
|
bldgArea: structure.bldgArea,
|
||||||
|
bldgType: structure.bldgType,
|
||||||
|
structType: structure.structType,
|
||||||
|
description: structure.description,
|
||||||
|
actualUse: structure.actualUse,
|
||||||
|
floorCount: structure.floorCount,
|
||||||
|
unitValue: structure.unitValue,
|
||||||
|
depRate: structure.depRate,
|
||||||
|
marketValue: structure.marketValue,
|
||||||
|
depAmount: structure.depAmount,
|
||||||
|
adjustedMarketValue: structure.adjustedMarketValue,
|
||||||
|
genCode: '5TH',
|
||||||
|
buccPercentage: structure.buccPercentage);
|
||||||
|
Response response = await post(
|
||||||
|
Uri.parse(
|
||||||
|
'https://${Url.instance.host()}/api/rptass_app/bldgappr_structure/'),
|
||||||
|
headers: headers,
|
||||||
|
body: jsonEncode(bldgStruc));
|
||||||
|
print(response.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Response> _postBuildingDetails(Map<String, dynamic> details) async {
|
||||||
|
String xClientKey = "unitK3CQaXiWlPReDsBzmmwBZPd9Re1z";
|
||||||
|
String xClientKeySecret = "unitcYqAN7GGalyz";
|
||||||
|
Map<String, String> headers = {
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'X-Client-Key': xClientKey,
|
||||||
|
'X-Client-Secret': xClientKeySecret
|
||||||
|
};
|
||||||
|
|
||||||
|
return await post(
|
||||||
|
Uri.parse(
|
||||||
|
'https://${Url.instance.host()}/api/rptass_app/bldgappr_details/'),
|
||||||
|
headers: headers,
|
||||||
|
body: jsonEncode(details));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Response> _postFloorSketch(
|
||||||
|
Map<String, dynamic> details, file) async {
|
||||||
|
String xClientKey = "unitK3CQaXiWlPReDsBzmmwBZPd9Re1z";
|
||||||
|
String xClientKeySecret = "unitcYqAN7GGalyz";
|
||||||
|
|
||||||
|
// Construct the headers for the request
|
||||||
|
Map<String, String> headers = {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
'X-Client-Key': xClientKey,
|
||||||
|
'X-Client-Secret': xClientKeySecret,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create a MultipartRequest
|
||||||
|
var request = MultipartRequest(
|
||||||
|
'POST',
|
||||||
|
Uri.parse(
|
||||||
|
'https://${Url.instance.host()}/api/rptass_app/bldgappr_sketch/'),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Add the headers to the request
|
||||||
|
request.headers.addAll(headers);
|
||||||
|
|
||||||
|
// Add JSON data as a field
|
||||||
|
// Add individual fields to the request
|
||||||
|
details.forEach((key, value) {
|
||||||
|
request.fields[key] = value.toString();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add the floor sketch image file, if it exists
|
||||||
|
|
||||||
|
var fileName = basename(file);
|
||||||
|
request.files.add(
|
||||||
|
await MultipartFile.fromPath(
|
||||||
|
'floor_sketch', // Field name in the API
|
||||||
|
file,
|
||||||
|
filename: fileName,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Send the request and get the response
|
||||||
|
var streamedResponse = await request.send();
|
||||||
|
return await Response.fromStream(streamedResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _uploadImage(data, infos) async {
|
||||||
|
// Create a map with the required fields
|
||||||
|
|
||||||
|
List<Map<String, dynamic>> floorSketch =
|
||||||
|
await SQLServices.instance.getFloorSketch(infos.id);
|
||||||
|
|
||||||
|
// Parse data
|
||||||
|
FloorSketch firstFs = FloorSketch.fromJson(floorSketch.first);
|
||||||
|
var file = File(firstFs.floorSketch!);
|
||||||
|
Map<String, dynamic> detailsMap = {
|
||||||
|
"bldgappr_details_id": data['data']['id'], // int8 NOT NULL
|
||||||
|
"date_created": DateTime.now().toIso8601String(), // timestamptz NULL
|
||||||
|
"floor_sketch": firstFs.floorSketch!, // text NULL
|
||||||
|
"gen_code": "5TH", // varchar(20) NOT NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
Response response = await _postFloorSketch(detailsMap, file.path);
|
||||||
|
print(response.body);
|
||||||
|
|
||||||
|
if (response.statusCode == 201) {
|
||||||
|
print('Upload successful');
|
||||||
|
} else {
|
||||||
|
print('Upload failed with status: ${response.statusCode}');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print('Error: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
on<UploadBuildingFaas>((event, emit) async {
|
||||||
|
emit(UploadBuildingFaasLoading());
|
||||||
|
try {
|
||||||
|
List<PropertyInfo> propertyOwner =
|
||||||
|
await SQLServices.instance.readAllBldgOwner();
|
||||||
|
|
||||||
|
for (PropertyInfo infos in propertyOwner) {
|
||||||
|
if (infos.dateSynced == null) {
|
||||||
|
final details = await _prepareBuildingDetails(event, infos);
|
||||||
|
|
||||||
|
Response detailsResponse = await _postBuildingDetails(details);
|
||||||
|
final datas = json.decode(detailsResponse.body);
|
||||||
|
|
||||||
|
print(datas);
|
||||||
|
|
||||||
|
await _postAdditionalItems(datas, infos);
|
||||||
|
await _postBuildingStructures(datas, infos);
|
||||||
|
await _uploadImage(datas, infos);
|
||||||
|
|
||||||
|
if (detailsResponse.statusCode == 201) {
|
||||||
|
final detailsInfo = PropertyInfo(
|
||||||
|
id: infos.id,
|
||||||
|
transCode: infos.transCode,
|
||||||
|
assessedById: infos.assessedById,
|
||||||
|
assessedByName: infos.assessedByName,
|
||||||
|
tdn: infos.tdn,
|
||||||
|
pin: infos.pin,
|
||||||
|
fname: infos.fname,
|
||||||
|
mname: infos.mname,
|
||||||
|
bday: infos.bday,
|
||||||
|
lname: infos.lname,
|
||||||
|
address: infos.address,
|
||||||
|
telno: infos.telno,
|
||||||
|
tin: infos.tin,
|
||||||
|
adminUser: infos.adminUser,
|
||||||
|
adminAddress: infos.adminAddress,
|
||||||
|
adminTin: infos.adminTin,
|
||||||
|
adminTelno: infos.adminTelno,
|
||||||
|
faasType: "Building",
|
||||||
|
dateSynced:
|
||||||
|
DateFormat('MM/dd/yyyy hh:mm a').format(DateTime.now()));
|
||||||
|
|
||||||
|
await SQLServices.instance.updateBldgOwner(infos.id, detailsInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
propertyOwner = await SQLServices.instance.readAllBldgOwner();
|
||||||
|
emit(PropertyInfoLoaded(propertyInfos: propertyOwner));
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
emit(PropertyOwnerInfoErrorState(errorMessage: e.toString()));
|
||||||
|
}
|
||||||
|
;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
part of 'crud_bloc.dart';
|
||||||
|
|
||||||
|
abstract class CrudEvent extends Equatable {
|
||||||
|
const CrudEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddTodo extends CrudEvent {
|
||||||
|
final String id;
|
||||||
|
final String transCode;
|
||||||
|
final String tdn;
|
||||||
|
final String pin;
|
||||||
|
final String fname;
|
||||||
|
final String mname;
|
||||||
|
final String lname;
|
||||||
|
final String bday;
|
||||||
|
final String address;
|
||||||
|
final String telno;
|
||||||
|
final String tin;
|
||||||
|
final String adminUser;
|
||||||
|
final String adminAddress;
|
||||||
|
final String adminTelno;
|
||||||
|
final String adminTin;
|
||||||
|
final String faasType;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddTodo(
|
||||||
|
{required this.id,
|
||||||
|
required this.transCode,
|
||||||
|
required this.tdn,
|
||||||
|
required this.pin,
|
||||||
|
required this.fname,
|
||||||
|
required this.mname,
|
||||||
|
required this.lname,
|
||||||
|
required this.bday,
|
||||||
|
required this.address,
|
||||||
|
required this.telno,
|
||||||
|
required this.tin,
|
||||||
|
required this.adminUser,
|
||||||
|
required this.adminAddress,
|
||||||
|
required this.adminTelno,
|
||||||
|
required this.adminTin,
|
||||||
|
required this.faasType,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [
|
||||||
|
id,
|
||||||
|
transCode,
|
||||||
|
tdn,
|
||||||
|
pin,
|
||||||
|
fname,
|
||||||
|
mname,
|
||||||
|
lname,
|
||||||
|
bday,
|
||||||
|
address,
|
||||||
|
telno,
|
||||||
|
tin,
|
||||||
|
adminUser,
|
||||||
|
adminAddress,
|
||||||
|
adminTelno,
|
||||||
|
adminTin,
|
||||||
|
faasType,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdatePropertyOwnerInfo extends CrudEvent {
|
||||||
|
final PropertyInfo propertyInfo;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdatePropertyOwnerInfo({required this.id, required this.propertyInfo});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, propertyInfo];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchTodos extends CrudEvent {
|
||||||
|
const FetchTodos();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UploadBuildingFaas extends CrudEvent {
|
||||||
|
final OfflineProfile offlineProfile;
|
||||||
|
const UploadBuildingFaas({required this.offlineProfile});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [offlineProfile];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSpecificTodo extends CrudEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSpecificTodo({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeleteTodo extends CrudEvent {
|
||||||
|
final int id;
|
||||||
|
const DeleteTodo({required this.id});
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [id];
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
part of 'crud_bloc.dart';
|
||||||
|
|
||||||
|
abstract class CrudState extends Equatable {
|
||||||
|
const CrudState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class CrudInitial extends CrudState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class PropertyOwnerInfoLoading extends CrudState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class PropertyOwnerInfoErrorState extends CrudState {
|
||||||
|
final String errorMessage;
|
||||||
|
const PropertyOwnerInfoErrorState({required this.errorMessage});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [errorMessage];
|
||||||
|
}
|
||||||
|
|
||||||
|
class PropertyInfoLoaded extends CrudState {
|
||||||
|
final List<PropertyInfo> propertyInfos;
|
||||||
|
|
||||||
|
const PropertyInfoLoaded({required this.propertyInfos});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [propertyInfos];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DisplaySpecificTodo extends CrudState {
|
||||||
|
final Todo todo;
|
||||||
|
|
||||||
|
const DisplaySpecificTodo({required this.todo});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [todo];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UploadBuildingFaasLoading extends CrudState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/structural_materials_ii.dart';
|
||||||
|
import '../../../../../model/passo/structureMaterial.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'structural_material_offline_event.dart';
|
||||||
|
part 'structural_material_offline_state.dart';
|
||||||
|
|
||||||
|
class StructuralMaterialOfflineBloc extends Bloc<StructuralMaterialOfflineEvent,
|
||||||
|
StructuralMaterialOfflineState> {
|
||||||
|
StructuralMaterialOfflineBloc() : super(StructuralMaterialOfflineInitial()) {
|
||||||
|
List<StructureMaterials> materials = [];
|
||||||
|
on<AddStructuralMaterial>((event, emit) async {
|
||||||
|
await SQLServices.instance.createStructuralMaterials(StructureMaterialsII(
|
||||||
|
id: event.id,
|
||||||
|
bldgapprDetailsId: event.bldgapprDetailsId,
|
||||||
|
foundation: event.foundation!.join(', ').split(', '),
|
||||||
|
columns: event.columns!.join(', ').split(', '),
|
||||||
|
beams: event.beams!.join(', ').split(', '),
|
||||||
|
trussFraming: event.trussFraming!.join(', ').split(', '),
|
||||||
|
roof: event.roof!.join(', ').split(', '),
|
||||||
|
flooring: event.flooring!.join(', ').split(', '),
|
||||||
|
walls: event.walls!.join(', ').split(', '),
|
||||||
|
others: event.others!.join(', ').split(', '),
|
||||||
|
genCode: event.genCode,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
dateCreated: event.dateCreated,
|
||||||
|
dateModified: event.dateModified));
|
||||||
|
});
|
||||||
|
on<FetchSingleStructuralMaterial>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getStructuralMaterials(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<StructureMaterials> materialList =
|
||||||
|
result.map((map) => StructureMaterials.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from locationList
|
||||||
|
StructureMaterials firstMaterial =
|
||||||
|
materialList.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('struct mat test result');
|
||||||
|
print(firstMaterial);
|
||||||
|
emit(SpecificStructuralMaterialLoaded(materials: firstMaterial));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateStructuralMaterials>((event, emit) async {
|
||||||
|
await SQLServices.instance
|
||||||
|
.updateStructuralMaterial(event.id, event.materials);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
part of 'structural_material_offline_bloc.dart';
|
||||||
|
|
||||||
|
class StructuralMaterialOfflineEvent extends Equatable {
|
||||||
|
const StructuralMaterialOfflineEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddStructuralMaterial extends StructuralMaterialOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
final int bldgapprDetailsId;
|
||||||
|
final List<String>? foundation;
|
||||||
|
final List<String>? columns;
|
||||||
|
final List<String>? beams;
|
||||||
|
final List<String>? trussFraming;
|
||||||
|
final List<String>? roof;
|
||||||
|
final List<String>? flooring;
|
||||||
|
final List<String>? walls;
|
||||||
|
final List<String>? others;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String genCode;
|
||||||
|
|
||||||
|
const AddStructuralMaterial(
|
||||||
|
{required this.id,
|
||||||
|
required this.bldgapprDetailsId,
|
||||||
|
required this.foundation,
|
||||||
|
required this.columns,
|
||||||
|
required this.beams,
|
||||||
|
required this.trussFraming,
|
||||||
|
required this.roof,
|
||||||
|
required this.flooring,
|
||||||
|
required this.walls,
|
||||||
|
required this.others,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.genCode});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
bldgapprDetailsId,
|
||||||
|
...?foundation,
|
||||||
|
...?columns,
|
||||||
|
...?beams,
|
||||||
|
...?trussFraming,
|
||||||
|
...?roof,
|
||||||
|
...?flooring,
|
||||||
|
...?walls,
|
||||||
|
...?others,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
genCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleStructuralMaterial extends StructuralMaterialOfflineEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleStructuralMaterial({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateStructuralMaterials extends StructuralMaterialOfflineEvent {
|
||||||
|
final StructureMaterialsII materials;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateStructuralMaterials({required this.id, required this.materials});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, materials];
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
part of 'structural_material_offline_bloc.dart';
|
||||||
|
|
||||||
|
class StructuralMaterialOfflineState extends Equatable {
|
||||||
|
const StructuralMaterialOfflineState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class StructuralMaterialOfflineInitial extends StructuralMaterialOfflineState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class StructuralMaterialLoaded extends StructuralMaterialOfflineState {
|
||||||
|
final List<StructureMaterials> materials;
|
||||||
|
|
||||||
|
const StructuralMaterialLoaded({required this.materials});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [materials];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SpecificStructuralMaterialLoaded extends StructuralMaterialOfflineState {
|
||||||
|
final StructureMaterials materials;
|
||||||
|
|
||||||
|
const SpecificStructuralMaterialLoaded({required this.materials});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [materials];
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/bloc/passo/land/land_appraisal/land_appraisal_bloc.dart';
|
||||||
|
import 'package:unit2/model/passo/land_appr.dart';
|
||||||
|
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'land_property_appraisal_event.dart';
|
||||||
|
part 'land_property_appraisal_state.dart';
|
||||||
|
|
||||||
|
class LandPropertyAppraisalBloc
|
||||||
|
extends Bloc<LandPropertyAppraisalEvent, LandPropertyAppraisalState> {
|
||||||
|
LandPropertyAppraisalBloc() : super(LandPropertyAppraisalInitial()) {
|
||||||
|
List<LandAppr> landAppr = [];
|
||||||
|
on<LoadLandPropertyAppraisal>((event, emit) async {
|
||||||
|
emit(LandPropertyAppraisalInitial());
|
||||||
|
try {
|
||||||
|
emit(LandPropertyAppraisalLoaded(landAppr: landAppr));
|
||||||
|
} catch (e) {
|
||||||
|
emit(LandPropertyAppraisalErrorState(e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadLandPropertyAppraisalEdit>((event, emit) async {
|
||||||
|
emit(LandPropertyAppraisalInitial());
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getLandPropertyAppraisal(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
landAppr = result.map((map) => LandAppr.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
emit(LandPropertyAppraisalLoaded(landAppr: landAppr));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<AddLandPropertyAppraisal>((event, emit) async {
|
||||||
|
try {
|
||||||
|
print(event);
|
||||||
|
LandAppr item = await SQLServices.instance.createLandAppraisal(LandAppr(
|
||||||
|
landapprDetailsId: event.landapprDetailsId,
|
||||||
|
classification: event.classification,
|
||||||
|
subClass: event.subClass,
|
||||||
|
area: event.area,
|
||||||
|
unitValue: event.unitValue,
|
||||||
|
baseMarketval: event.baseMarketval));
|
||||||
|
|
||||||
|
print('Appraisal');
|
||||||
|
print(item.toJson());
|
||||||
|
|
||||||
|
landAppr.add(item);
|
||||||
|
|
||||||
|
emit(LandPropertyAppraisalLoaded(landAppr: landAppr));
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<ShowAdditionalItems>((event, emit) async {
|
||||||
|
emit(ShowAddItemsScreen());
|
||||||
|
});
|
||||||
|
// on<FetchAdditionalItems>((event, emit) async {
|
||||||
|
// addItems = await SQLServices.instance.readAdditionalItems();
|
||||||
|
// emit(AdditionalItemsLoaded(addItem: addItems));
|
||||||
|
// });
|
||||||
|
on<DeleteLandPropertyAppraisal>((event, emit) async {
|
||||||
|
landAppr.removeWhere(((LandAppr element) => element.id == event.id));
|
||||||
|
await SQLServices.instance.deleteLandPropertyAppraisal(id: event.id);
|
||||||
|
emit(const LandPropertyAppraisalDeletedState(success: true));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,86 @@
|
||||||
|
part of 'land_property_appraisal_bloc.dart';
|
||||||
|
|
||||||
|
class LandPropertyAppraisalEvent extends Equatable {
|
||||||
|
const LandPropertyAppraisalEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
final List<LandAppr> landAppr;
|
||||||
|
|
||||||
|
const LoadLandPropertyAppraisal({this.landAppr = const <LandAppr>[]});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landAppr];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandPropertyAppraisalEdit extends LandPropertyAppraisalEvent {
|
||||||
|
final List<LandAppr> landAppr;
|
||||||
|
final int? id;
|
||||||
|
|
||||||
|
const LoadLandPropertyAppraisalEdit({required this.landAppr, this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landAppr];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
final int landapprDetailsId;
|
||||||
|
final String classification;
|
||||||
|
final String subClass;
|
||||||
|
final String area;
|
||||||
|
final String unitValue;
|
||||||
|
final String baseMarketval;
|
||||||
|
|
||||||
|
const AddLandPropertyAppraisal({
|
||||||
|
required this.landapprDetailsId,
|
||||||
|
required this.classification,
|
||||||
|
required this.subClass,
|
||||||
|
required this.area,
|
||||||
|
required this.unitValue,
|
||||||
|
required this.baseMarketval,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
landapprDetailsId,
|
||||||
|
classification,
|
||||||
|
subClass,
|
||||||
|
area,
|
||||||
|
unitValue,
|
||||||
|
baseMarketval,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
final LandAppr landAppr;
|
||||||
|
const UpdateLandPropertyAppraisal({required this.landAppr});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landAppr];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
const FetchLandPropertyAppraisal();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSpecificLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSpecificLandPropertyAppraisal({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeleteLandPropertyAppraisal extends LandPropertyAppraisalEvent {
|
||||||
|
final int id;
|
||||||
|
const DeleteLandPropertyAppraisal({required this.id});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowAdditionalItems extends LandPropertyAppraisalEvent {}
|
|
@ -0,0 +1,46 @@
|
||||||
|
part of 'land_property_appraisal_bloc.dart';
|
||||||
|
|
||||||
|
class LandPropertyAppraisalState extends Equatable {
|
||||||
|
const LandPropertyAppraisalState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAppraisalInitial extends LandPropertyAppraisalState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAppraisalLoaded extends LandPropertyAppraisalState {
|
||||||
|
final List<LandAppr> landAppr;
|
||||||
|
|
||||||
|
const LandPropertyAppraisalLoaded({required this.landAppr});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landAppr];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificLandPropertyAppraisal extends LandPropertyAppraisalState {
|
||||||
|
final LandAppr landAppr;
|
||||||
|
|
||||||
|
const LoadSpecificLandPropertyAppraisal({required this.landAppr});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landAppr];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowAddItemsScreen extends LandPropertyAppraisalState {}
|
||||||
|
|
||||||
|
class LandPropertyAppraisalErrorState extends LandPropertyAppraisalState {
|
||||||
|
const LandPropertyAppraisalErrorState(this.error);
|
||||||
|
final String error;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [error];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAppraisalDeletedState extends LandPropertyAppraisalState {
|
||||||
|
final bool success;
|
||||||
|
const LandPropertyAppraisalDeletedState({required this.success});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [success];
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/land_property_assessment.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'land_property_assessment_event.dart';
|
||||||
|
part 'land_property_assessment_state.dart';
|
||||||
|
|
||||||
|
class LandPropertyAssessmentBloc
|
||||||
|
extends Bloc<LandPropertyAssessmentEvent, LandPropertyAssessmentState> {
|
||||||
|
LandPropertyAssessmentBloc() : super(LandPropertyAssessmentInitial()) {
|
||||||
|
List<LandPropertyAssessment> landPropertyAssessment = [];
|
||||||
|
on<LoadLandPropertyAssessment>((event, emit) async {
|
||||||
|
emit(LandPropertyAssessmentInitial());
|
||||||
|
try {
|
||||||
|
emit(LandPropertyAssessmentLoaded(
|
||||||
|
landPropertyAssessment: landPropertyAssessment));
|
||||||
|
} catch (e) {
|
||||||
|
emit(LandPropertyAssessmentErrorState(e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadLandPropertyAssessmentEdit>((event, emit) async {
|
||||||
|
emit(LandPropertyAssessmentInitial());
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getLandPropertyAssessment(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
landPropertyAssessment =
|
||||||
|
result.map((map) => LandPropertyAssessment.fromJson2(map)).toList();
|
||||||
|
|
||||||
|
emit(LandPropertyAssessmentLoaded(
|
||||||
|
landPropertyAssessment: landPropertyAssessment));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
on<AddLandPropertyAssessment>((event, emit) async {
|
||||||
|
try {
|
||||||
|
LandPropertyAssessment item = await SQLServices.instance
|
||||||
|
.createLandPropertyAssessment(LandPropertyAssessment(
|
||||||
|
landapprDetailsId: event.landapprDetailsId,
|
||||||
|
actualUse: event.actualUse,
|
||||||
|
marketval: event.marketval,
|
||||||
|
assessmentLevel: event.assessmentLevel,
|
||||||
|
assessedValue: event.assessedValue,
|
||||||
|
totalMarketval: event.totalMarketval,
|
||||||
|
totalAssessedval: event.totalAssessedval,
|
||||||
|
));
|
||||||
|
|
||||||
|
print(item.toJson());
|
||||||
|
|
||||||
|
landPropertyAssessment.add(item);
|
||||||
|
|
||||||
|
emit(LandPropertyAssessmentLoaded(
|
||||||
|
landPropertyAssessment: landPropertyAssessment));
|
||||||
|
} catch (e) {
|
||||||
|
print(e.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<ShowLandPropertyAssessment>((event, emit) async {
|
||||||
|
emit(ShowLandPropertyAssessmentcreen());
|
||||||
|
});
|
||||||
|
on<DeleteLandPropertyAssessment>((event, emit) async {
|
||||||
|
landPropertyAssessment.removeWhere(
|
||||||
|
((LandPropertyAssessment element) => element.id == event.id));
|
||||||
|
await SQLServices.instance.deleteLandPropertyAssessment(id: event.id);
|
||||||
|
emit(const LandPropertyAssessmentDeletedState(success: true));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
part of 'land_property_assessment_bloc.dart';
|
||||||
|
|
||||||
|
class LandPropertyAssessmentEvent extends Equatable {
|
||||||
|
const LandPropertyAssessmentEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
final List<LandPropertyAssessment> landPropertyAssessment;
|
||||||
|
|
||||||
|
const LoadLandPropertyAssessment(
|
||||||
|
{this.landPropertyAssessment = const <LandPropertyAssessment>[]});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landPropertyAssessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLandPropertyAssessmentEdit extends LandPropertyAssessmentEvent {
|
||||||
|
final List<LandPropertyAssessment> landPropertyAssessment;
|
||||||
|
final int? id;
|
||||||
|
|
||||||
|
const LoadLandPropertyAssessmentEdit(
|
||||||
|
{required this.landPropertyAssessment, this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landPropertyAssessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
final int landapprDetailsId;
|
||||||
|
final String actualUse;
|
||||||
|
final String marketval;
|
||||||
|
final String assessmentLevel;
|
||||||
|
final String assessedValue;
|
||||||
|
final String totalMarketval;
|
||||||
|
final String totalAssessedval;
|
||||||
|
|
||||||
|
const AddLandPropertyAssessment({
|
||||||
|
required this.landapprDetailsId,
|
||||||
|
required this.actualUse,
|
||||||
|
required this.marketval,
|
||||||
|
required this.assessmentLevel,
|
||||||
|
required this.assessedValue,
|
||||||
|
required this.totalMarketval,
|
||||||
|
required this.totalAssessedval,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
landapprDetailsId,
|
||||||
|
actualUse,
|
||||||
|
marketval,
|
||||||
|
assessmentLevel,
|
||||||
|
assessedValue,
|
||||||
|
totalMarketval,
|
||||||
|
totalAssessedval,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
final LandPropertyAssessment landPropertyAssessment;
|
||||||
|
const UpdateLandPropertyAssessment({required this.landPropertyAssessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landPropertyAssessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
const FetchLandPropertyAssessment();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSpecificLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSpecificLandPropertyAssessment({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeleteLandPropertyAssessment extends LandPropertyAssessmentEvent {
|
||||||
|
final int id;
|
||||||
|
const DeleteLandPropertyAssessment({required this.id});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowLandPropertyAssessment extends LandPropertyAssessmentEvent {}
|
|
@ -0,0 +1,47 @@
|
||||||
|
part of 'land_property_assessment_bloc.dart';
|
||||||
|
|
||||||
|
class LandPropertyAssessmentState extends Equatable {
|
||||||
|
const LandPropertyAssessmentState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAssessmentInitial extends LandPropertyAssessmentState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAssessmentLoaded extends LandPropertyAssessmentState {
|
||||||
|
final List<LandPropertyAssessment> landPropertyAssessment;
|
||||||
|
|
||||||
|
const LandPropertyAssessmentLoaded({required this.landPropertyAssessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landPropertyAssessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadSpecificLandPropertyAssessment extends LandPropertyAssessmentState {
|
||||||
|
final LandPropertyAssessment landPropertyAssessment;
|
||||||
|
|
||||||
|
const LoadSpecificLandPropertyAssessment(
|
||||||
|
{required this.landPropertyAssessment});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [landPropertyAssessment];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowLandPropertyAssessmentcreen extends LandPropertyAssessmentState {}
|
||||||
|
|
||||||
|
class LandPropertyAssessmentErrorState extends LandPropertyAssessmentState {
|
||||||
|
const LandPropertyAssessmentErrorState(this.error);
|
||||||
|
final String error;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [error];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LandPropertyAssessmentDeletedState extends LandPropertyAssessmentState {
|
||||||
|
final bool success;
|
||||||
|
const LandPropertyAssessmentDeletedState({required this.success});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [success];
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../../../../../model/passo/land_property_boundaries.dart';
|
||||||
|
import '../../../../../sevices/offline/offline_passo/admin/sql_services/sql_services.dart';
|
||||||
|
|
||||||
|
part 'land_property_boundaries_event.dart';
|
||||||
|
part 'land_property_boundaries_state.dart';
|
||||||
|
|
||||||
|
class LandPropertyBoundariesBloc
|
||||||
|
extends Bloc<LandPropertyBoundariesEvent, LandPropertyBoundariesState> {
|
||||||
|
LandPropertyBoundariesBloc() : super(LandPropertyBoundariesInitial()) {
|
||||||
|
List<LandPropertyBoundaries> todos = [];
|
||||||
|
on<AddLandPropertyBoundaries>((event, emit) async {
|
||||||
|
await SQLServices.instance.createLandPropertyBoundaries(
|
||||||
|
LandPropertyBoundaries(
|
||||||
|
id: event.id,
|
||||||
|
landapprDetailsId: event.landapprDetailsId,
|
||||||
|
assessedById: event.assessedById,
|
||||||
|
assessedByName: event.assessedByName,
|
||||||
|
dateCreated: event.dateCreated,
|
||||||
|
dateModified: event.dateModified,
|
||||||
|
north: event.north,
|
||||||
|
east: event.east,
|
||||||
|
south: event.south,
|
||||||
|
west: event.west,
|
||||||
|
sketch: event.sketch));
|
||||||
|
});
|
||||||
|
on<FetchSingleLandPropertyBoundaries>((event, emit) async {
|
||||||
|
List<Map<String, dynamic>> result =
|
||||||
|
await SQLServices.instance.getLandPropertyBoundaries(event.id);
|
||||||
|
|
||||||
|
if (result.isNotEmpty) {
|
||||||
|
List<LandPropertyBoundaries> landpropertyboundariesList =
|
||||||
|
result.map((map) => LandPropertyBoundaries.fromJson(map)).toList();
|
||||||
|
|
||||||
|
// Choose a specific element from landpropertyboundariesList
|
||||||
|
LandPropertyBoundaries firstLandPropertyBoundaries =
|
||||||
|
landpropertyboundariesList
|
||||||
|
.first; // You can change this to select a specific item
|
||||||
|
|
||||||
|
print('landpropertyboundaries test result');
|
||||||
|
print(firstLandPropertyBoundaries);
|
||||||
|
emit(SpecificLandPropertyBoundariesLoaded(
|
||||||
|
landpropertyboundaries: firstLandPropertyBoundaries));
|
||||||
|
} else {
|
||||||
|
print('No data found.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UpdateLandPropertyBoundaries>((event, emit) async {
|
||||||
|
await SQLServices.instance
|
||||||
|
.updateLandPropertyBoundaries(event.id, event.landPropertyBoundaries);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
part of 'land_property_boundaries_bloc.dart';
|
||||||
|
|
||||||
|
class LandPropertyBoundariesEvent extends Equatable {
|
||||||
|
const LandPropertyBoundariesEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddLandPropertyBoundaries extends LandPropertyBoundariesEvent {
|
||||||
|
final int id;
|
||||||
|
final int landapprDetailsId;
|
||||||
|
final String assessedById;
|
||||||
|
final String assessedByName;
|
||||||
|
final String dateCreated;
|
||||||
|
final String dateModified;
|
||||||
|
final String north;
|
||||||
|
final String east;
|
||||||
|
final String south;
|
||||||
|
final String west;
|
||||||
|
final String sketch;
|
||||||
|
|
||||||
|
const AddLandPropertyBoundaries({
|
||||||
|
required this.id,
|
||||||
|
required this.landapprDetailsId,
|
||||||
|
required this.assessedById,
|
||||||
|
required this.assessedByName,
|
||||||
|
required this.dateCreated,
|
||||||
|
required this.dateModified,
|
||||||
|
required this.north,
|
||||||
|
required this.east,
|
||||||
|
required this.south,
|
||||||
|
required this.west,
|
||||||
|
required this.sketch,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [
|
||||||
|
id,
|
||||||
|
landapprDetailsId,
|
||||||
|
assessedById,
|
||||||
|
assessedByName,
|
||||||
|
dateCreated,
|
||||||
|
dateModified,
|
||||||
|
north,
|
||||||
|
east,
|
||||||
|
south,
|
||||||
|
west,
|
||||||
|
sketch,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateLandPropertyBoundaries extends LandPropertyBoundariesEvent {
|
||||||
|
final LandPropertyBoundaries landPropertyBoundaries;
|
||||||
|
final int id;
|
||||||
|
|
||||||
|
UpdateLandPropertyBoundaries(
|
||||||
|
{required this.id, required this.landPropertyBoundaries});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id, landPropertyBoundaries];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchLanRef extends LandPropertyBoundariesEvent {
|
||||||
|
const FetchLanRef();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchSingleLandPropertyBoundaries extends LandPropertyBoundariesEvent {
|
||||||
|
final int id;
|
||||||
|
const FetchSingleLandPropertyBoundaries({required this.id});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [id];
|
||||||
|
}
|