From 65fee98f79ca0f187fd224d0bd01751b2d772043 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 30 Nov 2023 19:16:30 +0700 Subject: [PATCH] Update peminjaman, pengembalian, transfer mode offline, perbaikan icon dan nama apps --- android/app/src/main/AndroidManifest.xml | 4 +- .../drawable-hdpi/ic_launcher_foreground.png | Bin 0 -> 14282 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 0 -> 8323 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 0 -> 21220 bytes .../ic_launcher_foreground.png | Bin 0 -> 38384 bytes .../ic_launcher_foreground.png | Bin 0 -> 59099 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 4768 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 2713 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 7035 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 12066 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 17742 bytes android/app/src/main/res/values/colors.xml | 4 + assets/img/siopas_apps.png | Bin 0 -> 85260 bytes .../Icon-App-1024x1024@1x.png | Bin 10932 -> 217339 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 295 -> 869 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 406 -> 2190 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 450 -> 3757 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 282 -> 1431 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 462 -> 3549 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 704 -> 6239 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 406 -> 2190 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 586 -> 5505 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 862 -> 9326 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 3038 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 7362 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 3575 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 8802 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 862 -> 9326 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 1674 -> 16541 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 4768 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 12066 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 762 -> 5185 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 1226 -> 13158 bytes .../Icon-App-83.5x83.5@2x.png | Bin 1418 -> 14758 bytes ios/Runner/Info.plist | 2 +- lib/connection/connection.dart | 27 +- lib/main.dart | 45 +- lib/migrations/databasehelper.dart | 265 ++++ lib/models/asset_status_model.dart | 117 +- lib/models/condition_peti_model.dart | 56 + lib/models/customer_model.dart | 62 +- lib/models/disposal_model.dart | 84 ++ lib/models/m_asset_status_model.dart | 89 +- lib/models/transfer_peti_model.dart | 84 ++ lib/models/type_peti_model.dart | 2 +- lib/models/user_model.dart | 34 +- lib/models/warehouse_mode.dart | 26 +- .../home/conn_home_page.dart/syncronize.dart | 259 ++++ .../home/controller/home_controller.dart | 62 + lib/pages/home/home_page.dart | 734 +++++++---- lib/pages/home/main_page.dart | 2 +- lib/pages/home/setting_page.dart | 4 +- .../peminjaman_barang/conn/syncronize.dart | 222 ++++ .../controller/peminjaman_controller.dart | 204 +++ lib/pages/peminjaman_barang/create.dart | 1143 ++++++++++------- .../peminjaman_stock_page.dart | 760 +++++++++-- lib/pages/peminjaman_barang/show.dart | 226 +++- .../pengembalian_barang/conn/syncronize.dart | 218 ++++ .../controller/pengembalian_controller.dart | 221 ++++ lib/pages/pengembalian_barang/edit.dart | 764 ++++++----- lib/pages/pengembalian_barang/index.dart | 801 ++++++++++++ .../pengembalian_index.dart | 296 ----- lib/pages/pengembalian_barang/show.dart | 274 ++-- lib/pages/sign_in_page.dart | 174 ++- lib/pages/transfer_peti/conn/syncronize.dart | 224 ++++ .../controller/transfer_peti_controller.dart | 191 +++ lib/pages/transfer_peti/edit.dart | 812 +++++++----- lib/pages/transfer_peti/index.dart | 751 +++++++++++ lib/pages/transfer_peti/show.dart | 175 --- .../transfer_peti/transfer_peti_index.dart | 287 ----- lib/services/asset_status_service.dart | 4 +- lib/services/auth_service.dart | 13 +- lib/services/controllerApi.dart | 372 ++++++ lib/services/m_status_service.dart | 2 +- lib/services/syncronizeAPI.dart | 224 ++++ macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 164 ++- pubspec.yaml | 18 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 81 files changed, 7876 insertions(+), 2637 deletions(-) create mode 100644 android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 assets/img/siopas_apps.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 lib/migrations/databasehelper.dart create mode 100644 lib/models/condition_peti_model.dart create mode 100644 lib/models/disposal_model.dart create mode 100644 lib/models/transfer_peti_model.dart create mode 100644 lib/pages/home/conn_home_page.dart/syncronize.dart create mode 100644 lib/pages/home/controller/home_controller.dart create mode 100644 lib/pages/peminjaman_barang/conn/syncronize.dart create mode 100644 lib/pages/peminjaman_barang/controller/peminjaman_controller.dart create mode 100644 lib/pages/pengembalian_barang/conn/syncronize.dart create mode 100644 lib/pages/pengembalian_barang/controller/pengembalian_controller.dart create mode 100644 lib/pages/pengembalian_barang/index.dart delete mode 100644 lib/pages/pengembalian_barang/pengembalian_index.dart create mode 100644 lib/pages/transfer_peti/conn/syncronize.dart create mode 100644 lib/pages/transfer_peti/controller/transfer_peti_controller.dart create mode 100644 lib/pages/transfer_peti/index.dart delete mode 100644 lib/pages/transfer_peti/show.dart delete mode 100644 lib/pages/transfer_peti/transfer_peti_index.dart create mode 100644 lib/services/controllerApi.dart create mode 100644 lib/services/syncronizeAPI.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 1198130..6345584 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + 4!GC)AVYx!sTVf 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 a!1g#biUmY9|NCnXNJ2zbxJFPv@P7bH0^5E7 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1b814a4f2bdb0c3a14f11e03ffea33e484aaa072 GIT binary patch literal 8323 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..3182e4b941ddca0fde312ecea758e6393bfe954a GIT binary patch literal 21220 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 z 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 lh)@AQ0b~ad{{JpVb^xl%c03&tjXD6>p{l5 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc2d7211e9dc31de7bdbd101d179c100f5b0f33 GIT binary patch literal 59099 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 + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..94b8f7157fcdc5f82af9dec54b973fb4b716ea38 100644 GIT binary patch literal 4768 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 AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..feb2461ae6473c28a9b4015dab78d18964e9fba8 100644 GIT binary patch literal 2713 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..5346a4d105c7e665aee6f6328ba20bf3fac84782 100644 GIT binary patch literal 12066 zcmbuFV{;|U)5e3d$%(nKxp6kOZQHhOI~&`!?ajt^PHfx8bN@fX^I~SIYo_K!S9Mo+ z|E@>{IdKG799S?gFa${n5vBjm`2Q^+)PMW2*j_sr82zcFh@grG_=PUC0Q$&Q-s*WW zWbv4Sp@Lo?~!2PNGHqG(BJgJiwwMl6wZ!(^En3g|Q%77&FG z6cH+x^AnDy$Lp(3ZA8dBa(|y+P95F7yPBGs`d(-HrmB(Q4ZyqvRzN?o{tm=~Lm&t+ zz$06Lc^L)>K+eKJ0&oKKu!v^C9{zy^LgiyZ0a?I$7zOgdPeT8{PhavVXU7jGLS@_R zx#{llkHs)B5S7s}5D^}p8k^B1Cx6hUO{tF4xqj+a191dD*{%E{7H z)Qo()lJZ9SegtT7+1H+GF-Mn`rKs^xbYd`z7AnEOSaJ6^g#Iw;BYHymWH#CQ4cO2F zTDC>9;y|RNAVM9Q24jLFGZK>IQvhd;thKXukKHdYORTOF4vGh(yq~=ewca7VT>(tY z%#eY(xo&W>vPaOYRH>R`dRc~x8)RrkN($_RjNjk~K#`szHIY5vqgHEwP(nC2aDIeT zpne3Fl`I|uV_lw>+S4=!%MN$Qys}nWK;-?s!TNmja@+OHLgN=DBkNf{(iWa6aGplzzUI(n z(B?dPnt@uK)r=qYCJ`$dUjZ&lro#Yi8BYO2qvi%ZQh~p?Buwpq_VwS^*X6%oM`lt~ zRZX@R)%bam0hvdKmahqq@y{RAdKwJ2iV{R@X>W4@0_R%s*t0|dH7TxYTriTr$?=J5 z$mh$=EJmZj?cV1b4|{c``JuJWPQFUlnVVUZlcp3J^KJ*$JEWus85$HAi^G)GhWC`Y zjSe-@Bne?j(vWaAzy)&?MK{uJXehI}->1jk6nm7k^t+<_2_6zcAWu&Aq+6`h_JuFC zOOIl-5`-rO+ll!*yBLp=Oiwv2O%hAF*#uIW)Kw%-(xESMYL=VfCW<_%8(&3Cu8> zjB+>yl9)dkQn=fBSP5zfmy_#Xrs|N1Uvw4+k1MME^mcyH;<4EnDH*D723D1XZ{&g1 z)lmJUe#U&xn@!(zkzvdh8Z-8NN~v9la%=Uv0iKjta5a~VG0$l68e?Gs>CO|6`9%XA zWq9~$V#mkFkE);CLVcw1J(tLPgT;>9v9O%)jp-&3nKJv&f4X;H#-6Fqea%J_!V?50 zDMqBezqev z*Z(Js(H}|xPwUFTz^ZE#F0*UL0-@FR=LxKsyR>S@d+7C8kT!$knbYbMw+2)3fT`wJ z+m;slgF^XXz9so{WoDP-5pADB@@jwCntmjNQ6Rg4`o z!TgHSg!EQxn}`nKlorWOqR>4g2C~7HGatdxLvTaQMu_LWFLocrATI$7Vjq{?XFx~y zUtU|Y7D`Tzu2IC(EaqpJfFVt)z0Cui4t>v&dn_~DSWL9v7+{AmTd4Hh00P7 zwL~cfhGLKpe=y{!V>gNv<~{>+%|KGfe_oWc`G}wWprw+l1TC_hFxzfB7yaS{uV-=7 z*T==nD{uYfGe}^2D!13{<*FxZC?b!(pbQXHvjjWnr>@AWX=<;YZp8nflP-pjQMWvZ z{ww*1Wcb&GivU;3lGfv2OVX_(F&ud&_Iq73Q~U!>ANN0ue0GH*!muvFD5Qo&^FvOr zxWryFSBvK{vJ=WINf`gB^u_$07 zK7u{v#4iJ?a7WxcTh$&*G+b}wn#xHH0ZI8}+>?U2*JTI>>ob?XK^3%aZ^RD)n z4*vId|8_>&3trz^Vf_cH!0v3kDL=L5kZ~)kspejM-Ws|!k)u-%*an3hcGq!+^>bWz zyl80&4~2fIi{D$04<7x9U|Z>I!{!rQG!v|Fuvgu7N(v`r5S<0F6D~ID{~E_^@%kO0 zEv&bg=X|pfVE#Ugj=Hx3ehk^dBJtk}&{x8pC_{X57#(0N!0m2@6#PR`f!h}wiE7C7 zT9VH|Z;`ZWwmV+E#}50|TNNQAQyB}`S&#Jd>+01xdd>xn#Xrj=;}G|U(O%8CEc%A? zSXT>6hJK2ua1L7~YUCx|`$m+Bd-zyseL{8@BhHxvyqwMA`{YH?jU8Q+_%?`L#E<^- ze)_*bODETH-m`2B2A)`Eav0Rp zhuqejGPpp)!K?7#`n$v~w|D#t|12A$#^&0B0#MP5uTXx)R&MZ?>FW1WnEv=0++XMST<@!!#`yT{*mJ9?-;uyI zO^Kzv3q8#F&RS&SPtGA-{dQZi*)`YW>CXqS%5AE*5CQv$p=<0ERjsxL@lHg!i+V?L zT3>WC3RgqvG+Upy(K*QE+yw?mf|<*8_ou-Z7~@tN9HdoqGx>j!4)s|FyTM6DE5?01 zG}a4#_Iad=W0Ffy)pz=ZAeaaLxLSv7=eG;50zS_1c+kOO{nD=_Hs6!07MJxc-?WFi z-C$7%ADyor$9;2KcWi<^XKr&S@C3a#LKEJl;h`bnzWaw)7aOPfZFsd+`h0a56NYb1f2xSfnz2)flJC9N$qp8{4NPtZ-6y`o@bU^t0#xP_Z8@zZPnNTCca za1g5-Cgu4>v(fTfzQ#|qB9^*bx)?e6o4b+}Jz=_WaZ>}D^N<~X8`!eICjcWw0$423 zEAHp&OI-{H4I~Fn2zC&^)yZo?+5azB-y<+wA$vX09t0&`~$CIdpgtEw%f+b zoE(HOr4W4GtNv@`y9QlK0gDf|!pYc>9WT7%3gvnU!E8 zX6NmT6}QOy@0RsH9mGZ{sVY8q2akiS%uFmz+aA1l-mYIj+c(DVq&UiNOT)0!!nUu(+y!>>Zcc|R6FKp+q- zzdhoQ`bCEmr?28{%=cs;&MkNj+|p(SMYTFAq4`E(d^IvKj|cMaaaf(J^#g2RYI@cT zv)VSsSxjxMmcER9@uM_eZa(6wsm-0Hq+6>})qA0yl&X(_08h_xw707MySBD1V?}v0 zsw?vNNi*$JT!2!U+GsJH-itl)tWKy?2iR@6$@RDtk^`>da}U@j ztozjlxB%I#U!0Uwx>;d5;xU9>5%|CuX0Zme-b{syZd`gjw=}69QzfmwqZ!h zSpWmWzF|k3xuHJ-I5*oiCwCfQDVP8#0JcEkF}7*o{>Sl5MfxYz0De-0heu0(X(>g( zqzn;>OXJZdb3s{JT%L#DOKgbe2IH_i_^w0=ZvZGchCRqqxIu~zM_b_qzQuGRxErbm z=E2)wCp__k2a`5Ja+y--TY%}#xLJZjq}qb5@RJQNZ#i3i9h#H(mnLB~tUrVb>rm5> zyiQk9{Yx)D8j>Cgk!HGS7-MyOZ4E@p$z5j>&J5O0W?XZL)NI;7kEQFyjG21)ZlE=n za8DZOcBP~JntzYes4kcj;mj7aoMCivh{VKBsnCyqJ|-MC$#Jpw!A#~ThaU8=^i2>) z1|a0#t2XAC@0y~ugvEq=TToR=!=}N>+3tu)1#Fk0@!}=zH04*UY#U75nu6dB*#g{w z%FQQmaCupZHkA`H(d(@kcAQZ2mB_8`?j-EOK8VFBEt^+|Xwz=oD27J~X1)rO$Fw#? zAux9=gre~!DnnrjB`c#fXx&jIH;|_RWa~!-j&1VdlADNY^a!i`)wmfM_VDW$rI0qP zUUz6JuJ>^_k8>U5AGkBRzmMI-6lmwm$wlZz(a{Z9R$^7EegJ>lU3m8nM}}z0-l&NA zZ9#Nl-)aZ=h-0w4L2Z%6b=Hv!oX@}gVqah%eiCJnE`PXALN59ov14GWMZtyY9 z{huyudM4foL*wF*Bs$$%)Mv0+OzOWK5!%P|j#to5WQnXcP#Jqa!5`2iB_(_ONdJn4U<$OJPMBPg00@>DutWmy z90MJURHU5RQ1d4boa$|tt0_}4(ff%1bh4!i;NVe1pE+qdht8y1CwKm8?MCHP;v~IE zT-x1McWv1a$D~iZ7#)*Fv0n6`!19&l(#>quLN4MZH8VsmW(Cx@!e^2jEujTZZq|v2 zxuvUVJuRYzhulW`t;`or7s%2QVN0X!VsMjT5MmiwicZo}dBQrSfMrV->P|vZg(BM` z0kgl>TC9)BVMCMq#-VEiq6BX0v)0AyLb5+fKG!VJfDb`mT*%6fIgV9I(IuXq^h%Xs zLTo7E+EJlyK-9?)K7^+{&aTK#@7^B4z`7}3?7I}KIZX@~&GZUX(Iy)Uu{C(`u|-K; zUE{eNCso%LGqaAijSw2T==V03i& z_|*X-rt@hvnYGdUC3s+_71}?WS!A1Wse7l*`b#phR}?Qc0*T9QcoeC&X0kyQ?TJhr z*&8GH>@RjOGEQTIsFWelJ)PzWJLShb(>=t4-s9o4**3T^=RA>#07fOZ-w%r9yAXIxMa8ig9StN=kl+ z)R2W`^mN+XWXNGn{lr$&_wOAz53TN=SN>)UK?F$T;{Dh8+KxdO%sdqeIc$uK7)g3Q zicKE}i#|FsY`g1oI9`Bqv(NBT-q0+Ko8a}`b1J&8WLaN@Y?M$hGyc?7Zh1`mE;__D zPl_`}N~k^qi;KyS_csEGwud;~T2ydMRJK=~AYk(Xi?#l~M1s*pB`?NquL#wuYODhN z*p+o1=%}AcB(>EkuP^Y{jS6RMA$K;E<^Ev56LZj+T;mhW)6vn*se|gS_bv%ih*7tB z!29tanC`DmGg{o6aQ))}cZsM@*8z zshKVbv)Weahr{o<&<7VSziVg_FJiQu;w;+yi-C=U<7n*uKIhaho?6-K^lnnTyE}WP zxcI>FopW6FP{gx>Z66s@R2L?l$0}J?#>|YfEzer=lr}?%>Yozl_|Rk7c>}1E#arn- z2Lu_0^Kb1FArX)S8l$&~@I2VtgB28$YMUvtR2wybV@3ex#aS`lVrE#PsNI|Kc0OJV zS#9Mg>%=ldA6W!iv_(UCwPI0l0P<=Z?fHcZZB5<9_MuXwHFM z*h(uJM)Kw)%AArN4VktQrmE?E9ygyhKuazK;*+~0`KYM2_-0P+h&p+9kvNbROdN)r zm~A&}cb>4OND<3);Asx%1+dAKMRVWo8KaZz?PdN;t@YsLBu5!EFD`L=^y$ZWoUvbD z>t&$ru$C_~P$1Jfsor|O2=4&cH zfCI;k8?vRQV1+QWnM`&ClhL%beVn^>^utZV=X^syDMdONd<@|^dvraosaK_Kd6e%w z*FyDqz{^LS}njAcv z4s|-RwSJ`sB4ETp^RP&4=mNfL))YoU|Hq=3hc`UrA*AbHLc3nL3!A#yqQ+7!-oA2+ zq1{*KKDQ1J!yFY+SfVuie{a%c)FK>uK>xRsq9qnlF6Vn;JHr3bZr?2GJ^{f?6&k|pZl+WS($Qleqbt#&# zD|H2S%fksp)I+zRoEucOaPW)2hAY3}Q3M#l0z35(#0*YAHyNCqQhC|gY1=^9kI&1} z&bpYyMBgC~R%I@dGBTK3sQZ(IQ|k4jAGWzTUg!t&U#p_weCpXoDt^rv}znz^T97^R5|n0xyd+hM31|R?&EF=GBtHS7yF#s zT-W!r3$e}VgPhupafrrK@%k$^7OoGFe+)n+{<=`2H;>?gF)UYv$E&R3Yn(G&DZ2|2 z68FL?JvfYrNI&$@utSedem_6=t7vye67_1o)>hK#j*R9{PfcEprLCzSdhT->ei)#f z);n3vjPxad3vSLU-aJ}V3UmG2|FkqmA1E<)lbMy&H0^(9B0oOO8{M`W_Q~|N#Ti9* z{O7;_bh1-E*@aYz~_E<#DM02f1Op?IYS7U^&3oX3aE&@E|Y&=f!G!;oNm_7sV*2oBE_;@XUd zuhhmkPAu;qkTa;Km(Al@=xI4-VPUV|Nb{SsI<;*JfrJ%c$Jzh*a%+t_>AvR8^?>-j zA`Dn#CJgMGQw~3|5>!x7TN~VlhBit=a?dhRR%R`nSMhrv&FL;*Ta#0}Q`nYAvparD zv4&DRI{MdQH*g$yMjfrfd@o%9!_LJD!;qQv)tX53MNTFO?#_po2>cPE=9L=}OGk@) zNx)9a?TyN>`<(lnF3l~MZ3FtiJw37LR-w;>*3u$V1fXDKWN4OlAzpHUeF{d}5w5(J zeFmlfNB~HM7Weqd*Lgflol?r#{WK2xnGz5R4$l3-ptq4v7fpgpFI=q#2V!UOMK!Yh zB>NU5gGDGF6QaCUzNS9=3@a>AEnQZ#&x@5G(RtUBI+d~_1}K-wtkyq`r{Lr3fk|GL z%mZK0h*y!hMCdNPJ8NhsL$UXV^^?PO5&xRlHCNX8&4cVWPH|z{xVfeZ(ydqRU;n^7 z%1P-CnpUvEfprQ1wPaWM7%*}RSGwcFz2$Iu&tV-&Q{z4^b`S-}kYg@iDX3%?}PqGF@|cbXnNnW4ZaC`01!7{k3CY#FikDFejqmw%+D9 zeZ{?Je4q1p1iSx@TQw*Yq1?Uy`ubIT_L^R^=~GZKwp-=cK=-kavA!~iq2GfSzzz4L zfvXPE@VUC`d1L{j;kN#}T@CGjhPZ&Sr-H;aVQ?|nUUf=ULpI?lknIOw5I1B)S;5X+ z_f>MYb^A1~O^i~*CME5R(zqWiDLFQaDHi8<$OT4dZJ$2Pyk?9QBoL9O(n$7q+e=?Y zs6wWOVlaDaz-)O3m*-GzIZ7B;OO0&6XTQt8wGl~(al3(b>0=THGTy(TbiBPF% z?#WIRa4E)S$8-DUPssl0-xE~B1u&bJl`GG8$K2i3oD7nB`HBcR+YDE`_T_QZK8|;G zc0%l_wNj0hTJGRjpW(_LOb1^pPeMRI?0jjj4yE2kstMH`hBoJbY5Owh_1xW47nodE z-lEBp>>2;uXmDy+37H-%pij+8HKxP(HjTNMa6UHLdVY|?G&A$qQHILOycnkGzjN#; zXRKJYe6dv&tc4?3-|y~mFAWQC!+lO9wg_2yB12}@24`hSw{mBUM>LPnzzU=95s{4| zvqJcE!OvzEMeXd|^KEd74#vjefeg%9NYPW%Q|dNZr4LW)XMnj`k-=AB=DpFFjLmZI zaAGai3cyrV=;As;B{yvqi=7fHRZUU589&5c*%(sxQCaL5zX&V6Xmoyg?>!l1^y975 z?Se`?p4#Lj=lP)fWdcm#^7~h7T_(4=4M|01uvVQo%PD@L)Zcx<^kyZxI1!NQ=glpw;Uf`+)+v zs@aN0QAx2tr^y)cq;#j1FInwriIk4GUJKx3CYA~zSoQ$i#yZktsiDP%GvlPt?l z>1JFZ%t!B#kP)$j{~=VjBq}s-MT-%FQ>W9W?{;BT(pA$8w6U>KFfbr0DsGMnXhmqb z88WrzR;xm*|6#%W_R+wK$%KKhhpLmd&SKwqXM2APFzG}QY!2G$8T;fIcnwS_G$ z-=E&s$qlcX)3QVKZU!e{OW*xDq-VJMB7X;@O-0)XK3+QC&cW>PuO)&>+R!0Xz^}{% zOg9>XGGVQGEDI|&X)ccA*dmIJ6;LI|ssjN=dDLU^sD3&Ow760Np`r>$3QqD>BfmhzgDm2yw*e-ApU{465C&1+?5KBf zF2*&J@bZE8%X}?RqUT%6aqjO@4^mH~kY>7ymlFcmz87AM_@vc^F};q*=W2zr|0?0n z6q|BODqn=rh1u#F=)kx$oM#Cu>n@hAq5-A~2<>dVJHIa1^Cpk{@3@mcG$+0QqJSH}c3s-xl@|Q}Zy5vXy&gCloPvM&-ARo-|B+?LG$aa%Rymj ze5e)skQmwgk;@PA!aG74TI+QIpASNGdIsx0 z)dK^wtyX_;D6-nT-ZcE64h;=`@DlNHkQ00}&T_Nid0B=_BTQ8s* zWq!Ej{EzF~6HNCl>~rY3&s8C5zjoFed^@cd*k`1oBbaWUOI9eX#x%E)74j=26krR~d@Xu}-Rzt$u6`VUSeXS#QN ztxG29`@h@G5dyOCma*4V+dX^rh~;R@U@M+nS7I_^!TLsIr*{%Ls%1r#zt5k( z>Ye^g&v1cSbj94FNRyKEGkA`jaqpwaIj^F9pND}^B6a)?4kI-eq}JWTIs}>7=n?DP zO{&W$R4kVtmA-rAUqX@io=%ydJB+DZW4fuTLc7CWpo8PrT!iOdV9Kca8uD<#CZA;shUmVv?D zFRCBZb2HD!HRjWU*wu}?B6&P6&l+2oCoR!wcG&(T9?UsFSvMIH9DGSCJMJO+Y%+UA zHLFiQk%smOgo&5Z1~4&9fZNOQi9Z?(d>aK`-m zF6(02U4`z{)Z6R|u3e#g#K>}nz9iIV1JMIHW?g361?rAg?86I)9vI3rjA(aY$Sf>4 zueqG}agb(a4D@=vABX-!L!ZlORW0-c>|2(36+V5EC!t^)EA`M(Owey@o8#X znb#wKe3`g7+PeoJ35ouLtXQJtIg*@ zZCEJtZ=vGg_y<<<4D=NviW!g`V>hqWdEH2&3_^mlkdA0l6gZxb7-^m+OB4|nI)0c8 zKq3NqjDXk;XI>-;ZR9&0J5R1Qp~Z?Zj~E=hREhl7sV?@I6SE?jh);S!J#^{mdDDgx zNV>@n71;aE_bD42eAt~F|8agsy^s4D{>_hJUM5z~Th4A7+%7Ta@VFt9Ni~-~rdh;v z&bx?QF|t4MH|s#dQ8+m{_rzc`s63_CY(8Z@oRq|zg=+ave0;q8xX_Gs+5(p=o?=ZF zmWw-=$i`5;uqg#W3_Dj1dJh?Hc-!y|Uu;zACcAC5kD*;8bYD557+HW9`O5mj3=8=b zt`i03ar(ZSQ1yDQwP0>^Mv}&J2OwUq&FBi;^lrOjpM~ms+Ik<%<1(-Gj;q~e=&*=c#>O!f)-wL{12K{htk2_{VZxAHKsi5ASQiHO-gVQB_==I>>eu^!vo!Hd}*ocsH@0N zMpj$o2y&@_oDiH8frVKMnZ>2C$ot*kh$Azqgk(AItQJF9EhCc4dMh9lvD{s~FBAjY zhKruB__B5^S}JV!_56XfzNG-pFFgPp z)5^jW-MRa0@Zs2u`;O2(oIE041x`V=UTzXAKI+EGASnX>*5Dt*HP&oS3ttEY z8kDOz|J(1g@Tc+FkwlXbZCg$cFOOiAHJ@32hsR+*5rP;$QKFdi?)A{78e6l_SOV8A za#CgmAodVWLt;eqr-Sg%<9T~g5R!1 zU5`oT5&+s3Q#&!uz%G#HkajLw!Vm9;Z;{B46_b?y83KS+B5s z@kx`W)Cax@Bk9$nz+KfM@n27&-Z@Uo_)MElwSO)qx_E}5ina!{=;ON$Q+vp{0r8#;@v;m+dc8E+?Z?{>3Hv# zC3|+Y;#xQB1pkF1-#|F(_^G{DYGowfIJgggTDa~LvlM$eRb^z{777^3xdOVqA+}k$ z7&mc#n)Vh+P4(*OHT;6P^$*TR0nV+>S#H-V;B}O*J<+;fOvIA+lwv*nD=1rm;PrRX zBKn)R;C=Kh)cTg8EXCy_bvWQmTBOc;_;cXiN8~Sx3IuU)TpV*+Cae6JQeu@oAy0f? zZ|Tt@>Nq)yXVU}Lb^6iumW5k#BsX7DEO-5#Oef{IapY~MHj1@Vl+{_w*K4T4f9Ev3?J?==Gss_V7Isi^WA>&uoyh5_?7B0Nu!GwEGCB;;DJU_Lx1#nU(a$Z8 zr6=LL&Z|Pxle?UUPD{67Q90a6TDw5Qt)P15VcZ6BT+SRykO5g-Rr&syI*6mkT-$1w z4?81=F6oM#)!t3=7v)&(vWI2UR(is*{-^XkMOd^KX-F?5n*uB8ai>L+ovn*+#nMyz zxPgu4?m+halNu-5p^&}$9-aADt7Ya?a@L@-W}1BWjM-W+u0)euQM$tgV9vo zCx4pChc~=@`sv%kme|+;<>Xl9I5dl6olKp2mOhjT5q4HQT7u5m!p?&iWWd?oIQ|Oalw(uuFIS zfyu&IX!~U`J-8=<{T5?s3BZB@`k(VL$3QQ;iNVbQ##+V(Ypc^nd*uWa;Y8Vnx76K) zt^S`h+?8)JTKny``R}o8CSj$acltmUTosS}##Xz+L?WEcwAc|An+?PiZAA*Q2&|~Y zc{!&ae{{YY#Cm8?$ literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..31b87965dcbdab2adc18c97b1f83102df11b70ab 100644 GIT binary patch literal 17742 zcmce6Q+FjywC#><+qTV)ZJQn2cCusJcGBtCcG9tJ+q&Pm=Rcf>s(PtWwJ;WH&Wch} zkVJsRg#`cr2+~qwD*vs0|1+Q=|C?1dZJ_`FaSUlO5j9VcOMNI|^(8!^lb&f)T3X`$ zKxC&NIIKE79#$wG+~YCjxPY?CRBekR>e|0KncD5hN>0SE)(XNZ+JC^If`Cb5p10eb zFP}H<7h6z~)Hf7kA7=+!9xFUAn>TzX*(Xv#5SWX`Qu!Vb^bNaS0|NleMJp}rzF=Mi zI4~`xa${ov+&Mcvypc$5co+zM#X=Uc&$__|^opLR=1Pm^J3M59>=0tX>3 zo~1fPDiMnO{xzqI{v`l851;4;bqWodN{c~J;B>GtADHL#Cyv1MS5m!xcV!C@h6l$> zh=%5jN9ZaV1P+X!tgBnV_$IA3+dZYagL|j*WCNk!{;fgx2z0NB z#06oS{FYPxFu?*6dhN>-Yv7022X)|5c^o(}7T{Yv3cpd!7}Cun>J%yebWgF~%-vcXdx*zo{gfiz(pc zU*VMq6jIu^>}b6p<{2Oy%sOFDunf#Wvn8*fn?(lcO_`=qh-@WXBm}CTI=^1+pU_a}{Sq zi&6Tc7rQ~=)b_4o9qP7zcx{ylT=`ny6AD-?%|DzxTO1uK{df)Mvz_CEd3ya#s6YE> zo@VGdgnAKybkzux+&FoV*Q3$vZy;8kqwb|z6I0}dr_-pZ|GnYyxir}+@&1z6IM8&2 z#kZiMXl`z~l8I8Nz|uDm<-nEi#<3^dT~N@X5=uk}B5Gz_xmB@_Jsc1Jio{vWN@S}d z;8*oBnh=T4`MFe|w%PlF!+^PTeqB&ifd>C?cvP~z$|t^ZyPrhX_U4GwELS7)>TVL| zwHYl&^@;|ZVt=iAiTa; zvRpB`kk2+uRCSGyHz$}egEmCox4cc6H5sDS(k$43L<>o>$CF+hwqHoCS^(3iAv|dP z-A}Th@z-K6%px$%A?6_?|I4WQsAufp&`|d$x8-nh*VLHFtY!{w9H2F~wY7G0Q6}b@6ni?a@5o&`_TcP9=r_$&EO9IkgZQ?9u3iV@X^g#F z+&bETf@A5FyA2B#Kl_mwnP zgZKFNsskYy)LU$P_oMQ22o!~dU)~RZ2^@^x(`Hll2QHq!eq!3i?8uK8v7;X6&v$^G z)4q${P$3GkMw{Jk0_^o56hOr`Ay=n7-4)2sh^EE@>hY3fb`=U*8Rh=@!;PDM1pmLBZ+E}id6VpogaThT_C$;ZJpj7Mz1Dk z?yXSDYx@9?j(MaZm9bS_3bB-56D1e4V*R0Q7_Gqj@pM37)1+Nx^utzPNa1j(j5es5 z3WNL?bYcp4+WDcrpPzcHoh<=B{$;KXA2&OR{f@m%S*d5>YpDBuFsLqxeZ(Gn3up$3 zrw!u%1vvbK(6>b#Ng|Rke}nL#8-1}z8jKNz2I&xMQH%M%7k?HVXF_S=Ih?Y;uXoWNL{`wFIE_}<5%`@ygoThSGdEASutEaG*5?dO zL_Fd<=lT8~e61iEGjqcPsO;%e4D3rl%kQ2)$*FEwy-5Rm9l1Uu8%LXN%JZcr;li72 zWM;^j$dXHP`e7OQ_jY8ru*fP_p{4`W_igKB%cA7P5lj_JG8<4(evKa6UD*P?+IPC@ z`K^=%%Pf7{jDkC>P~p#gELTd8Gqg>XLU6A%GM<${X%I@S0h3SI#|RQ{8*`Suov%fI z;vJXU{*Z$J!^yT}H{UvGnSyrfMT1=8T% zT77&n=%@OkC+R6-34-whbmzJ&7@&M_2@a~K{m%DRwZFasVGOWGJ@@2`Nx2%^sDCw3 zLq6n}%1_-ATMprt1)=nutdYEB9krPwP&|KtA539n!{=@ zmH4y|#19$3@@OGHm3yu2-Ve#et=~$@ZQ^@xCBSvj*s}`C zRet=T!vo1^aJ=Uuid{hW+jZYxb-f5SX;x!)0kV$d5pVn&XqeVh)@}d|3Nu>`^|KE7nXjGgW~B&%89_UnTz<6{I3U$+h|}4^vit5Sd>T1$cRdkP(+2 z-xr@e$%}tyq<&P2_4umaY!R@b01z=|34U$7EU3Ek<_WAoMT8@FIfSxeMh|%nf)4oy z(E{aa`e8seMb`c?yjj~`w({}1Lkr-2c*N#KSB$Xr711PT$H2h-3~^h1twkByzN1a; zLuMgI5@oY-*mWIndU-3pncXGHE_sHY1Y=}#9*MobBW}MRmx$X3bz)Vr<5KvqX(f)z z0oon8)ld?JLh|~$P$Z~~GW$6BM$O|DvjuXSaJ$p|Uh3*PW=$Cve?#^;eYw;dz^L!E zZ;T0lE?s<0V!y-xq2JyW%OedFGkopua3lZh(1wGxxMqa4&qlz9_X#@s zQ!hwtO|R^EvYN4j4$|N8MEv+gtibZJL~W^~cMs&$4HHAA8jx_{CA(j8m-u|-a*bSW5SWxNu#tfj_h&7- zjm81MxnMMtizO}Tvjh)1|8wPW#vgRm0twc>NP})%?;kgJ-kU9SAKz*)@(v`n0>_Dl zaN>lC{%2*m1;T9QR{uwUhzVQ=`Z*0JJG^EPTuKmmDEc(395kp{O>t@`(?wM2Ec-f1 zD7B+MwFX2vJeDY>ZgTvYF%uiBFljJHE80I~$kA}4-F|p1Nkj5qHG{a5M35#HilDaP z$R*UFDKfCuKn#jJ1Fnjpp>${^HwUNGpj6{vx0F4a-!(wEB{sIEmY?fO{=@v79NcDi zkyx|9{A{0^KY}hjAa{qV`LO%MQr{sAf~@!gE|+7>lxJX0iJ4=}D$M0TSBKxeT=wO6 z4k6wku^x^rycoeA^`wL2QmgS|PJH{a@Mp2)MD^r)s&%YWL{rNe?B+?IV?ZAKEKl@; zS7CneL-y#699W`P?~@t7mE*%4W@DNqiCEJ>9KVm2*6sES1nD)fvWAaeb9~`7oB6Ds zV~UNm!%ooTsDY34y3B>(dOZb7^z{rXQd<9_I~CuYCy)hPh_W^l#1^@d!xKfv3^0}X z(Huvi9*~Q)tO2nD1zy1?SMQK{Xr7X;tbEtI1=oMunY+pP8Nt+F!@Ai1M2x9MLy5n zu*O$@gj-SK!EA1(d9>Ewki-dUilWJM!}#$BuM973ZN|M*c?Uw~Tk)21nxaoi#n`(C zFBZJ*_CKZ-l~c|V0%R+RCQzD{nhc8niJg!$Qhn zJSca{Fe7Ev#%kf9H>12v6-u#itZ|@br<+@mKoCjV2*+* zc-s|oiLr%~nX{K(!Uj*h<0oN?VTFAABn~v{p-gd-gn6J}_QhFo$Ls4Iuu`5)&T*Z-W>}pt1G%IXcNZS>cndo4x&@mA^mPZ^%{sZaz&Sj$ja9f(sw1 zgXDGOeK7>avk$8v&j|^s$oHYbND3lGokrugB&}kX;p*lUv!n%IgLCCI?mix`(P#P3nLJ6CH+6IlsuImzR1nHz@+P^9QEsCUWgo ze_r`YRRr613X~;|mAu);{whAXGQ)w%oiBBop78O2xK6UNOEmtXM)zSQdD+;g zE``q%*gwKoFT0 zO8i$&-z~gn6Wh~{yik%?C-~fU z@6`h7NSD3Sg+T5)Y2BC%Yyyb%hmU*6@vq%Jlt*2wP!1s6H?rhpmZK}7u7E|HbU07o z`@f;iu>6|Cn^sMN>?C2%$dxUhvN6k&-c};vtXG?Olpb$=Q#e0G0@DAHW0je=d*WRSQ9m!)(!O0e5x~+3$Fd$~o zEPL=%ZYh1|Q`$vk`!Z~ct((++c6+0Jt;%I3o=|{+?0^WRl4#-UJe4d6M`!s)(?Px_ zKm`GOAW=vGox%JZm3OVnfwZvVpCjgl7LghLkktU*+?d5QTJANd#>Dnbe(-;uDlXK7 z4qmMEgIeKXg;q&rA1tDkw25OSI@Bc8V*A9dgFH@0vhps zO{y|WgECsAIR*C`X5a?M<^wb?6xXlpR~FAWb0X+F2;h-(90>ByryK=LUiWH?X|aqr zXvx1Humg!fk0j~GKzlUSpF+RB$UR_6z_*tt1II7fv%lOi`PURB)u}F~ zk)F47CpAN1=?ho|$`7|8d|YPp`{}8v;R#Ywh511_wt<#Y#jV-aKt4rSp(cbh`F&=T zsbVnZeiLXVPWQKJ(3hp_x26j~4??x_ot4Dt$>P`^!-Q`c>_ZG75|hy}wvyM@q_L0O z=x+~@{5M)ZKN(=ZbRiP}E*4>c$B15~wm8N*x*izZf5VC?Zq@2WMy4@ZV(nt=Mlny#x z{6@hg3j+yG#LCaEpT@_Hl}YB^8CC6Kw!J+`ZNV5!Y8lX8ov|JE7DgS z>?N<5>!q9a6%W_HmZM}1`)`epf0Nft>yZc8v3j&Zpjr|ceDiYcS7od+kGDkgu>Bck zV`OF~WP1{hZn{C!q(bv?+T|A!Yr1b~5@GTS&J@^>yL`oI7w`K1)hez|^E0EkGh5d3 zB_f2>LN>?B5e7Z96VpzYy&pqtV?MtiN%fO0be2xoEvQ5})O=)P&P?5iMH(W4&XOF3 zf_!!Qa!-e5V&YLrB=8rjW;C!9k!9Q!x!eqMUTCG&ip_cY*-kM-I?JOzLo$~=8At6m zlW9syMGYG2I*rx9fV&0%0a%cyZs8c_jGVv>W&J5RwA3N2rRw5EG1sV-J&IcdQ zjB}lyMHzb>>fzhZdI;Jc*oW$GVuu*|neLr}jw4!BG+kZ8?)5y;@K61IxA4G(2wQxZ z;0!O|Eux@gCfC3HF33#Xrm3nlrs)YM^^wu$(Pw!WbLwaa*?;J!*;K!eiww~Oe_t4t zk4e2W#C4uW7jrvF8n+?BU}`Lv#Zw_lJh~z4r_hxo&$DjmoNU<$JI+FesjS+nB>9)e zOg~e2EG3^aa<9|6V`<^%q~AW7zLgab%^Q=p4)2wbV^IO0L1p(XOx@rd~=kA>iq^!|M2$mG0mja1nB185}!dsziViewNe?xds~;U9kgR@oIn;$s!d5b~*>7}3h$Pss7(%bkE#a<;$n zFVDCptquXYQ4OKU(`NPXaJfAX@xtFZr<3WjBdKXKNJOvB7w>y0AzqDOiA$CMeWyeW zG^kJ*30jJHMQpC8hiK*AW({p=K9qS3NEYM<0U@q!o3na5-ZppRDEsk~ua8+gRGfCv z*c1AJ7h1-aD(g3rJ!4Ouf!@{}K^Vx7*ODs|qbdZ7dpj30)ocs2Tox4*J*#MyN zDZqIS2HiM=r_s1Lmg6uqax7LIA4 z)0`jA6JQL4Q{GB!2qZM{jIY}nnP%f_wQAy}Bq^-8bc>g|Ct;&b(^fGMO`|>EnmrSC z$fNU-zbozKqlN?G@DR;vKPtZDb>;zI#VgeFjOcBh`;$|hgVacu(h=zTfut14HcSRx zzyF-GFP?6~DD)Uf+Joop*TY}zZEQbp9#u=kI5P7dV{*9LVq@U*hkJnwP*f|dfq;M@ z*BI7YXk-@VU(HI!gCa;uZz@SK<3xW6#GDU`M>?%4tK5G$!^)YYxa-uPZgp}s$xJPn z5C!^dLl$(xM+@hu#8?J5wC8X9+nHVx3O`Q%vl3&c)Jyas6Whtj^HrT(c6d~a!Q3}0 zpQWJg+#w3{)g4`w=OwU5`&2Otcwhz)wSy~{#=uF7LR%fPHDTvQky7Y)xct$aa*Nsf@PONg#i$^doD3uH>gtSXaO z&P1h3Nzj>ip^3Suidc*rDSrj)SIDjUY{~rBc@)lTTXC@ZB}#0SD-uN}Yv#4c2<>!W zaI4jRuPdvTP;#51GfK-~aWooq2XdHW7bKULhcMp10t&53dxq-mVu}wY*#KG=uCWoF zWX(2M3jU+K%+#mrUzc@5p%vw|bbw%L{b+pS3gG30su>QmJt!I}R?)^2vBS4120G3( z_>*eA52MsHbneyq>vQcK$Ol&{dhN&AZQ@@9oRttLZ?Axgf7WWeROQz4r&*2^L2YQv z$9#0D1Jbfh3#B2FH#l)JVi$L$i6;rIbD+h~Ffed*t8GSi>z8f4cw(DlQ~nxITdBIO z&MM^!`qr&}AFa-1_!=h(bH&09CTzB{rE|ZJy1NzMrFoz5>8IkB)gtv8rQgdOEa$LS?nxp(8#rF;@-%o1Y?=*#7wRWy+`0J$(CGqpO!zD=FV@AM=q8Q zdA=O}+R3Wr>$^7HrAtYH!b+!w^TYtb%2(?Cx^Kib6s5({I}H{kO6Z!oa|cXVAr+PU zc7uGX;U8?R9pgmS8$(HBD*dEXiQ@Ns(Wg6DK-q1lWvdmRR9?cAd~ts*<6!62sk_?Q z<2(d|PFFW>;P5AhzQZOqQoDKC*tVZS9V*M>0zkc)%}*jD3WQjwa1bq=LG;!&tuqLw zk>$&KEU@LOjuRN|FkAK#;C!>uP(XXOd!jHO9=K!A0~828^xEO6q+Yf#$WrhnuJ|VXHT0$Lr04> zAQC;t2b03Y?|9VR-#>0<=VV#0FUgY^8KIaq4*}R_^|-vgkSq{=>$Y4K>DW$K@58uzsdJ)-40m|12>dEvS#^PF0$80fWLRngYOwSG<*Uxm(#*ni1bD6#Hvsnf_xJ$jzc_eHT9I+;O z*(i#cqIdEyZ;kTca#nQ-Hd1*`-S z_b>1JtUkmi2Nd+$brj(B&SqP9qG1GwGu_&c&marO+f1^Vj_MJmc@j1h-b9IlShm0s zbH{s%)2gGqwC%U*W0s@rJ6 zINu?lxFE>dHqfJu8WM-mJFOryrje9V&y#q&ku3t-#%&v|7}#qc(ws~<}Z!*h5H)o)nLSceF~Mjmt^ z2mnx<(;goA+~*?Oa$2|b3`-q$16*D&0a_S@%8Y_1POm&C%hyOK*t*Ni)BL>wvrUE$ z>#mAjKi1nJDFesTtma&-y2zv?P-p>#a%J87m*{%hUa`5j(n2q1w+evsRbYYG`5j;zJe`&B7gnb=eWA4$--s$7iUQ%F+dXEN!xPE(nCS4HX*SqI1dnJTCe)H$?&18etYi zP#r2bL7H~;r`TVL!3e7Ak?)^H$+L?=ogpn1Pv~TWsw?w43@OqQ=i!Jq9nX%xFO%y= zSHBcz<|=0poYg#>b0MP9Dg8V4o{vt57<~LS6cA+|Uxbc5$XqBLD2D?Y+DZsGoOcuh zuDg`Az4#=1o(&?VH~f{DEi^l3D$fkqQYPvk4n|vb+ilV-n)c*Wn`y~nM2@^~Ba*2) z68ETl3oAknB9y8JB3fzzmmq{qKq<$cpnUE6kDxn=`(M!C_Fo>CLy2Hee(0$Fa*?+~ zP5*Hm$05`B?BeGvmNVb}MQ#^+EKyOxau?_Opj0Z0axfl@aWcbhn1w|6|JD0A-=#2^oiNc>}p z043u$I7i1tds^*Uo2l)#`-}^#PXh(^#@yL%B$PZd#9CbI0Ji;A1elZREmO*7bJ_=- z9@2yeou?iCoi5Jf1D>YVwWN?rwL7|MqBz&utO2 z8Y00@)tRg1p(5q?)tDvJ4D9~(EfH(6Wr>3FU+9d5P72Dk;rCmr{o!=6l8#cze<=|3 z8|nj)Q;-Cal%cW#JtQP<8p@{k>kx2Jld4uqRpRgMBC74e*K^*g(~VMsE@diKKAv_s zzZ_4W|ID^IE@s5d!(nOZD?cK8s;njE)$+mtQbG`{}cM}`-MAWquYhh*Gdh&W;`TnR5WRCU*0q)SP_Ok^6wflUH&>m4C9d~ zG@*PCw-2Q(x5-!>|1)0nr_-mEy~C1M;0)5_B%feykE;DwS0{pJgMFeX4hQJWb70YZ!{$B7(@2V;r@Qg5T*f*A?R%{u!yl20gmq>DpY$Z ztFL{Mdn2aN9~t~j-t)C`B5PE)@LmNUktjx>4xCK@V9sygyz_drnqsZ?9%=g3-L0$f zJ4l7o#=ZFUJ4CO#>jS}2f$1<0%%K!eB|6}TpR_RlC@tU}?l#fE5nJGcz4@%nAkbo# zTeq4*MBt$ghUME8@@~8ofvTX{ad_N;l~do9)0cq!^>VddraZo))8vJE`LSRsak})y z-j+wn+qtQ7KpEEV8VKyh(#g#ck^=EZ$zZJ$RQ3eOw&p<64ftRcYkY4u>l$8Ez-_&~ z8M~pvc)jFG8-myC+x$fY%qOD~^i!Iqzk7VZk(YRGY|grnbMxc_KIstxrLQeClK!?Z z$~{{5Uhw6*uLU&}AJI!-kJ@iX67D$kEo+R%E1HfF2g~pF3cRMqN+u=KQSeuknkC34 znxWp1usip_oWNWKo@CT}N;mC>6qY{p8h)fLaT#7|{Kx$^MLhxzxtzKi7nZ&4%%3Wt zQJyZYtihtJoI4015b$rl^1c*HCoZ#cY7pRHhV?M!WjJKQj+N}M$E#9Y7CWCT2kQ-Y ztZEl%97P4o!v5<@*nW1l-TFA3dVXH6Q6-SksbGNtSB`}Rm@gF@9o5S%%ggGLU+Np* zK)WxSrFE0q^)yk(r!fN4YA{tW8FP$eEjK08E zlUqI>H!ptqPlB^GB^S{XZ&4Ic!g^RM$r}pgC1%Qa-#Miwq7)hSgDB!tPGb{&3Nd;k zru-b|1##RUBnYc~H}IdnhhuLJ$NXm@?Ht`cjq;t%f+D&zXRQ>2)dw1%n!N!ian;@m zxu_@eU0!!7B)_2GRq3dTY|{CcGPUh1#C{<^x5!lKXUjG==Xy}_a>2hK=;iCraSYTj zYZqsJEm-CgT)$EKfT|=9orOOQ_6pp4yguP!M9}1?P9nZM>(;8Rv}m%%3;TRsIvZWd z^*JUF!Q9(gXtbA{e-EcihP&N9ZgZOqd8k>G+5C|`Fx@fic|WPFsGuF)4J|7fn%cs> zPXwy1;d5iSFp&}$42Zf{hqP`JcAAZwA#qurY#=>cOEPMyRhHH)cwBF?1Icl@Une(-Fzpr#80g66wMb2r`gURlr5Ytz(lnxsFp+E9^m^R64IAMlue9r47DC4XzctqXtiz z5kOumXxU~FV2ioGf^og8G`BEej)J9)O7cxcwU}W*UJvC{q7FG>mceTl@k|HUHHdRC zZkz_Z;r>Z8BVvPbg(o;^M%ftSQe;TCz}Ak?Bs6)k?e7mqyFG_o-3siJRmkFiim-wR zAbOff{xnukow)@A(;4-3C}H-x68@0W)5q*@jM|~)_D&t7L755_shotki?&$b3DnZ= zzVBl5(^`q3ehk_yPWL7<5y>UQI7pwijhG(AN^k2n9GQ z-CnNcaqj^F;^*5PY4DkGzRP6WLWYM&`hhNd(@bh*#K;ZBdRNCly)B56b zOCs1Pjjh*08jU8Gahq8Ro!0GYLQrHL`jaIVPq0Oj5cH+@FyT(9Q0^Xaih_S#9f3!T29Q{eZ6mb_&zi`(~$leeDjt`4kM=yy$LwGQk z=_d1Iy!FhA^Bb>2QL(2>w~r)>NfnUk0cYxXznT`^TwriB33#xWn6u@{7YS=z zySx7g7OME1`5x!QzQKxv%oSV04_ii@c*AIhW1x~Hb_GDV)V-iXK%{z=!v{%2H(c)a zpPECfTT>tlK$sfaPpjtMlyO+5gF_1-oV|s)_HWYns7AIn6?2Vf7pjFpxD%C?|GWsB z6e%!oG|?;s-|g;36(Zo)ygl}9_g1-waX=yQy2%vO={@D7JUEVg2QXf6Gb{8Q5iF|y zatnUJ5P*t1TesUk%Y3WJ708s7BZBXG2xBYzTJl^vXNvWeRv)0NM@Pz>-tX?b#LLLz z)T|JPD=^r7qrM4>G)d@Nu&!SoOKazND1>2Fbr7l<2!+=G&43_w5U8{KLwIy`b?rv+ zCUBM0|LZ313|gRK(WB$$4T1Zh{bh3InXBSXqK}RWunQhXbgroE5{5FURiLF`vUYbm zz9W~@<}5B1$qWa*o|DQ3F#G(|^08R=KtVpv+F>!f^@tk(93=!5kpjySu*M7rI)r&R zipjS$lPWY@ZMUfheW??oLqWlrzth%y;2H7UJ*(d_)%HA`s#QafaT_trbs*vG%8kmm zgq|iD6a6Q)-q52L2GP(w0|I2fUXP}Y&s9q+yI8Ue?pG5_nu^N=O^rak$DQa2#8$@- zb2#DVE*+}vuMVBuR8ea0p--ZB<%X;Uw&Q}Fg$-=8jGWvEG@(wae4{*jrpmLBNf}UoZUyJhJV=`?u=vF3Xfz4y-mbmcbd(; zy*G3IoUQw{k8GEPj{i6ehZ9qNw4`GdL(Kj>7MImx)!@1i+9M#{m1Pbq|I86D9_f9etGio3 z8p1ARiOiD;wYlrouHm1)@~S|M_YNomP8Nb>Qqv<4USi?l{A^2(@!*?C zh3BU)vRsnO-=4Y?@u~fh!%+bT+M$ibnWCj>Rw_4bbS#7HM#v-uaY3(YkQ{1Q<_1sA zHY-X7280~}KRx|afx~ABuVNDU6L-(GX{;K@b1uRfUr7@k)ddbm?HsbYs#*>637mL% z7UF=uk%+bayeGZ1WuKfYQcKuj^*t0da#rOoygc=D;k6N~G=%o-cYW)Zykw^sVj9Lq z&VV@x*)s%^u%Z>;MI{E{&5IYOB0563Isg zw2KwvJwp&&;vv{b8`~~==S-G*iIf7S+4AnM!83gr8S$~?r0qWOr-=4-d(qN~^AOQb zh7d3jt%Fzvg4XLb42?b5rgVfRvc9|!<*;AdA4W4DiJgPcF+(udkQ&&S{UP)26mkxH zTy0K7?McFq3sxCv+c{my+j`>p@UUJ@Q5DQ}-ksD1a?VTpzm5JGZ7kkF zcI$&tI+OK?3{=Y!aEUvqos>c38Q0i-O+ouI|B~edP&;z_e05rsD`-IXeW8sl1w*GB zW|+_g4s_t!!|uG+{{aots{LzvFvi66ty_Uan99D;{=7Fi6ZCQ0 z(YF`mc$tBlN7nwci3!o(@Lu$p4N~Lqe&(wHe5yT)t`jqU_-z+{6AOwMdH4~6oHv2L zPtz+~c2JagUt4#MzJ|f*JGx|2j@bJq9&g#Bao4D2aPv# zJ9TrJ$RC%MKRJ>Fuot!i><^7-x3RpuaxWgT4Vz_4vQRB#0};4XiX@t?@RoSb&Y3O5 z=J2{FL;NvuzDR94G$`DwBGh)9^G^8UwsAV@hbxqO-%3guVtakp{xgx7OG3$Z`rkX~Suk63k zjQ=7qPJ|z!`<==kI0MFb;zPNESj`t)w^u-$=tIcQ9imzCyh82cuFb^~GND>h#*43@k%jx}*A{j}-t|LFwJcksi z9^f+4z2WNn93q~#AxgQ9g+WvBa1k1Sdu}S?%^48dR?-1|wBkIaU!?Yq?GCvxPy+*K z>MP2o@$YoJh=ED1)6TZttebA6_14Mf&siOY!96JC3Fw*x zt7f6=_I#BsL^5m?SqpeCLYvCvX53v&8+DLUCEvwwYse{9vzU%dA+EOFbtKOIR?FZ3 z0W=u-+!cTb3i0whI!-V+9?JWv6SUJ}%#!k!$$^;%BM*SB%mQuKOm5pV+0v)^2nlk0 zAJW!Nkh27=)uLhEAPimg@R-$=m39NOjrx$M8j8R|>|zESOGX1JF z7(Ign!12F6ss;+&rFjOoLXF%^R5iIX>)SF*l8;*P2;AmF2jm05vn&^23vw#^k&cEQJ z8&Y)NB}#q_<=ff`u}Oqss}7R>m$LoX->1fCRMWdL{A zxjdXV0^Ke!AY}N4(zVgUmQsLVqNEgBhX^CDx#EX34wQ3edYeAfwTz>yh`-ZQ7B#-E zJbI^E8}*M5mUwuIMM6SdvXWlO<(*_?M5L=?t8FYK+*^QA{Q)4vrn!_{DH(}Kk> z(H|iEM}gf!qQLO^FLf}Z{(VhIf+b#PS>OgJZ{+d%6YBgpO@#HzH_FjzN<1BUSlgxs zgmN}|t^3f+ZqQS^Z&r>gmZ1r&T8 z5D9C1^zgZm3BPLo@X7z&qjQ~R%dmySR#vtivt;Ga9SD~GFAxc{VyyTG;C}dd6 z6;)L0t}KTM?K*f)Ka~VAXm9vkTsmJYC)1LB85$nI=+gj!@d_iK=$iorekZ4=KkHWP z;HqY^1c=SvAd2v>L0SotqTtSJVXH$x0}82v9T1i|58o*iA8#24A{mb#SfxS}8`^%b z1s$JVCb}Ck@Vh^=8_lw}FZa0ZpR;b5#gFHMMKB3(w~1ATYKvSTA>n%Yj8~mWq8Hfrt$m{CFUUfK@jx+HP% znVDUP5@HYnPaZRz$vRr!ep(KtJnORSEj~{B_#Zx@0tsZm?KSVu7T#!V?&I}b@do;Y z2_ADiDn5+oo1vCTq*!q&bBSpOLEg@gWh$~o@_7kNqwQ@@giLmr!wXMO%Ml)0K#NhM zWDM>vK;Pfntxkh%!EWh|E8PIMe+_W$j)^={*t_HNWh!#)`)3&nPZkhz{IMAX@F@Sd zBPIQ>n;>fh9)C`*udM?9TJz1U+#p4(c}|MPk^+oO)KUz`Ja)=kw~-r`X)Z+2aLV*I z=(Ln&GNlrwu>Qqe`(DN*5X8=b#?DX6frIG`yZOpIW{yh-vN?UJ+23sc(5rJRz}1N4 z5-A-(I||W7pEvzB9y&GXp84dk9Wv2&{KxK7D#2L1st{vEy@e7N;^|hfdwmjF)H^iK z&nLt>hDsjF(H9xt7-UC$gT-F)Lv8$+QQyPw#7a&>vtE>=mnsrV28bV9UA2AZ_;?(E zXsrG8-vDh7G)n*hxh%v*j>s%uqmY7Lx&%UCim@-M3Yfo%w#nJr}9 zGEmwT2MYe^N?ZnsU$W-NUCoglN{UUzLc@Dn{DI5{vE~OMb~Vvax(zbW@4$y6;^LG- zA^h$^fT3A%nt>H#VGCY0G?LEkk?9j-%gF!)kA)}&C7WJHH6Ba#}Z@OG{z>gZ~eX+8rsY znsmBh$(Dnrs(;z#{{0u)dVbe|15c)3j45uoD!?#d;@q_}H)YT3X)jzd^Z?)k4}w{m7kwTMLZ2MSE`u ztz2W@{3OX`!Q<=&KACf^EMLh_(|NJ`)py>L%OA(xN|GyX3KeQNUSz+2POk5)nhkF* zM`pX(SK6@O7dO1;wse}|W=7W1?wb|WidSy+*fK0tXfaHPDa<<3`%6TtEPqGFG~RTcZZt)A(dsMcV*-suF3y3|V#x0rom zT~(GY0;j+2nH*)IJO7I88Y{DwT_=98-OTA5bC~IU>YI)mg1=5Y>D{d0!E%9F=VkPa zDJ-wW&X>KsaxuNFe0$g^Y6u3=B>=~Vj4p!jx@Sewp?6Nx923Km=M zmzysC)KD*iH^_F?Q=_e?PAeOp+xf0>Z_)0x{{$yys%7;abyjjf#6@HecFR(8-EnFH_P`D!I8%&@8WwsQe2%3Q;+cP+c!Z_Z&mj7b%Als z?Pl+N7S6k8bmgq-?}O1Anmc>k#bIoz}e-`MARUf}=hgMvH7_4bZ211J`qA`m&g%2_HFIi;-aCF1=nVI*|7a>8#Msl2x;pHs zzHTPskP;Q>5nBda3XW>c4FW$e;K3yfRqbs_w_*mA=mQ4zR4o#uXN)0Tl z+gunp!+1Lxgw{w2F{(tEsxWzM$ns#BkZ^SZhr+>Ciu6(VpE=Me?Y_5=%M#!@DGZ*j KelF{r5}E*pN@#rm literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..ab98328 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #ffffff + \ No newline at end of file diff --git a/assets/img/siopas_apps.png b/assets/img/siopas_apps.png new file mode 100644 index 0000000000000000000000000000000000000000..d85ef654fcbe9d88d4f76f11655acb4d40fc4e25 GIT binary patch literal 85260 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

9-Y;(TZs|{_FOmmllYG(T?rwmz|Bf^ zjd;gBcX!Ks?wN4#;Et4iXJ7I|^W`f}jDs5IpuIyqV9;Pinpb4zmawZZ%Ep4932>!_ zVdSF1B9@R9S~(|&Mwn(00|a-f6XUhlZf8$^ma4VP{3yB4ZKCRjT?7={F9Hp z5O07Usu2LzfQF7HIJKlI#-j`Lcmt2I#@(q|qk@<^B*&8`M7XbfIw4-F5yNC;dvddq zl&`)Rl5ysli&u8fT+@ET?v7Bbf}`9iX+CG6o%*%Li($V|-xSz$_2^IIKAUs}WQxFVH(mQl#+vQf)HJcc3zSbynzyh|TEE`Q8r6L5!5sAzfH?H{&nJxr_cvsEE7vvR zd-9n_3k&zeyIy$fp=4h<7Gr|KE7XK|bKw`4=5%Rp52obd4qZhHI@id#6(QUw1VhJY z7C7IG7#byo0Em0+x%)dja^Fiw{f22k0@w__0f{ZU+WhdN&m@f>_lTQO0!11yE?tDI zXmF^lY;nSuC4nc64lJYk+Qi@j%!!ITg1$ruV*_NcMgSxSvPv1Dq#!$chqLHF^W

` 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 F{vVeAhfDwf literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index dc9ada4725e9b0ddb1deab583e5b5102493aa332..6f02f643a3e82611773f89639de3c53a8f286a8d 100644 GIT binary patch literal 217339 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Ⓢ&bWI9u000>hR6vrEWF;jgkbu<&o`1&XZJCoV zQ(<`+S{jkMyeuwcJ*oV$dh*gQ2 yG|$!4)NshbQmAE+x^tO0@BFUGd12O=!|`AN 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 z z16o#x1l~_;*)oKr3KMBL%r8}-GG^pLRxmN1L)mkXQ~*TNEMDJ|`by#>OsFCjva z<;fmWBfsy%i#|XUvv*$)ppj!%p}?b#AvLX}$EjP{ub`^HC_u*bO4yioY$-8S1Z@S;p#^9IV(6M!98nD z=>IAm1F4@0DiH7}F$_kIa-aAYCZV5+sU)zaAC`y3$|3TMz$l~-m=9V!kfr{ym9{*v z=4_fAinyBS9W3Pke9;a6bln5ZVUvmwEN%wqFEhkX5Q;%L$`(}8l=3x8Kq+J8Pb|Uc zL%(NT79Rh7tlI|mJq$xU>?o}}`s5NINr@OQht7iXmqjm=z%R&Tx1Zw~#g7Ztf;NR{ zD_Kc$gqqC<8E{r{U`hdqI%i)Ev|)g~-6>Wg_YtZxNsBc?du{g@jba+70+p-7S<
N z^2NG0f%JI=Igd=K%YX(>8Vq`1n7o@B5OJWQ-~Nm%g-9kB_Sv*cQ7Az}{rj_5@}i_` zK0revAQmQ5a2FZvdG=FhoIN%f{Pre8ooM^EFAopGuvi8-trfu4kVP+rAPV}wy zQ)FS9*w=zDs>hxqIT|CZrt}wP=8UyDi!^JNi*3<-=49cB=ZQT+ecX(sCI{+Jq4%K! z)BA+?xzk&eioy#T!leYiTw@`9Irj25mESrdeE2L>lMHJeYWgMFrgCnlWRlfm`w32e zx_-!AM*R2*cRfqw#bOSV_Cpe%2)z9LE}waQ-L`=2_N=Zcs%lvg%F=N0TqQ43d6gyU zj8P((Py>^%{kC1E+o^GnUs-RZ(`i&bS#u&wPltq>B81S`W6Finy%8tOUdCr4ogcLp zLEi1(9KjuN|J2*d1sGWw2{vTY!Yvqw5@k@u4sh;E)Vu^ee~6U5ws{$E0mObL$RbCm z{>!;$FNrol-;;_3gVBy-2sW978pyYQg6r! z^DrJJw(_|G@2mcSu{F4m@`#CmZO4WyxHR2Fp=8<4Xl>|Pf`9M;YkVUVBnb3zd$AzR zpMN4xeGVM{jciY6t#nc5csbQ+b+iF>91Fsz6G&v@aKHkiP^<&dSR7bQH94gVBCbU3 zhR>QoUn7VLqIucw#r)>|W}Nx3TDT8eWx+wLj-hlch0E@c){H`(A5o{Vg3~!-x1o_*7`^C$lkp{icJGOR4{LO2lY_Wa7kS! zDyP9N6VIqvWr+G24I-nUlbG!pbQtSgAQZ^3gxWRilYFFC z7kivE4Xj^H)I;9<3oCafH1R14#x7LWP=%?)V`yZ}J+g|Q%So6cSc(-IE+p4F!a5y2 zsq33lp21>UP^nJqQ)ZTNRxOfTrf(dQMFU-Yh^O@X+tSC@il^Y2@HI!z_(BQ6@3!dM z9aebq@?FE!6|_J+mc42XjVI=8GoyadZ8{JuziV0@T@Pl=o?+Q^=N&k4#TegqSkvzs z>EHX~YE(aEz$ZyH(2Z9AV+HfWL>&sFlI>(>Muzm3NixqDQBIdeT(nYC>`=@b){tTi z2?_4K8D%oW@Og7dyy{mfTL|4>HY(YY0Ym~62cfq_PmAjkpGwg1$>j4}OB%PFPlq=F zey!!x?%>q49D5!*WyX_GLyECvivP#dH-<;rG;L38CmY)~HnweJv*E_JZQC|B8yg$j zww;On<-XtdeV(uW%#S(d>h9{EtE#3 zaYA3|E-`43E-aQ3YVJBMM2|Ao48LRyR!DK!ey=)G2aP2;e=TmRsVH=aU&SQbTRNU2@n{aBV0FBpfaTa* zk!tQo1@$e?&Js$JchnL+dmJ&%_>ETfJhTbb91t=Whq@yO<~gVCXT7VWSs_4iqwARt zRt1Yyj%^84oc_Vav2xnXV!3PRkmhv%q115ikw(~*p4(qQ z$mHI*^mlNnL+dI=z@`F2n^`dZlG@t%0wgXiWF)KF^9T00biB&6+m;dnd*yc4!GxX4wpLfLN7Z=wcEo-yPKp)r1{L?2canigbziWKl@wj zxLSi@)!HhnrFKm*YhFLdkDTAiuKBrXmA(5E=~69?q^5-uGV~Kb{Y66bj}M z|5scidrNbmrmUCYLqbCvZ?C2}dyuxgFm>BqF3@Pw1N&En4|=*X74X*uFjL3qxwVc< zg+To6gyTZ+>t|&cGMzN%zFa)#7^mwWMyPo;B~C8M6Gc9=CXROhBbwCuzVFW0*;igr zNz&vOZz~OEz31oWl&UmPp^c$VI4C06t%_|WR5<{7BTe6b9u-iq@zWs&WS)HGQE9Sz zruTou2w^)AiC+>43M$kya91MhuY+>U_bLT0u%1=%HZ5*h!*9~!xSdvNalGUKCF%Y> zc>fgws_SgVJnXYYa3tz&E6_9WFD0e;YrzZJd{JRLS_v)v$#u}s<_yFC&rb*puUCAj z)Iomwwb?TN8A5f@^!&$O$Q95WlZx&9-(ZhqtKgq3DahBf9~5I?;C#Y)Q-5S7pXk_Z60 z4#Ib1_-!_HqDhy>JUej!)c;8+6amvKD1rdsfJgNK@_#ms9g(0ZFaa7Ie-y)Y7ry)5 zhqMGs{e%0fvl3WOo6yZ*7P4#i<@SH%IuDcvies|0+r3P%^s^S~pV7o|W^$v%9H@le zWyuKx&MR>L{CD+;8vwDo8`VZh4J?r~F?82|kNQ_k$`xeb9I)|l81w@ZUiNr+tMBlF*vv>#RB(n6s$GEq52P9Ny^>h25HNe@Wihay70apC| zaF6~wED}>)7Pgar9|76d1iAg8XN>SWpA&83{=dcU`#;MPkMn|O0qcCeEU+_Z#T(FR zsB+fx@BdZEI(`;M{lDMBAftmH4p+Io*_rbGNBN;pSc+=Uvw9zGRVXem{cZkVrwyK~`@oM?0YX>;@a{KST6Z{Or|7asS z`8|@>j}!dQ!?t%J0P-uY|J9FT{3Q}({X(OF8m-*}{+%ZAcAd+=_M`4eDF~omcc(TD z_#}DJST)q!n~&9~jllbM-Ea7Kxq(cy@6Yv+s9u@yXUzmzjQCuXIHoWz3yJBwV8Rm_ zzESxyDHu{oDD>RPE6iOd_>&N5AXA7CvVWXcinMjDu4TVNt4NGF@Zn*YG%eANFeyFWuLR!Z2}y8f0>|DPo{B672!e3EfP z?(4WK8|O5chxQ`qLWQ>X3=czp)mn8Uc0XixpP&SH2ZaH*y1YGA%sf0uH8t@-BO?Rd zEXre2Qz7jdw8$kOD5d;%m!V*QAktofa_2dzZpF$_>Z8`R+P^#&{2{BBQn$Bz5(HRy zajn+5E^ODCu56d=|p^X8mf_{omD747G!tfVK|3zFfw=}Z^>JPgW?+o~OdJg3>w?8^P z-#yAz<-Uaj=T4GFMEIz3DtTc~8K4!DbfN{mI$VESKsGh7d&vAyq{p9@Zj6w`W>XpF zK2_GxOaeK@u4@ZjX9k;L)308=wrm`H8W44QK3yn76Z`wj?ezl-2L}|1?+*E5i6Ei? z(9C1iRSf4b7yRd0t<86P=ze26XmnXBG&sVY3vysohg=hhNQx zr5F{EP9VC+l0+52$C#EG-WmqW1M^?H8y0%e4!nyunR+}5V9L4~JJ71t&in<@yZbDc ziDT^f$WC;^qu;n%^lsiYWA5v8AnoAk!F^E$wvf?mdsG8Vl!#f(#aV0HDI-KwRsk#0 zhq8(yDm&jF6ENHbc{<;=b1+(q8NkKPfDz}EHNfsh(QEUdk4W54v?NxCJEBemlL0Y0_d!s{ zJ2u!dK3Z?ui5e2>2oHH3&bTGBDmB~c@%pekFg^~11?sXcx4U9`9q02QvlV)n3W6eYO|s)JRy$IsJ)Q1sLW{j(FBn*Pb>D={Kv#9@}o+x0f|-) z@r;H{NM-}5Vzlgk{{lRBD3tq|<>q3;&`5)%Ub%BwPY;#}8Co%qEdP=ykt|nc_A{2w zcD7()NzAbzSB}U;Ei`yM!vBa8#9ad~1t+yeKc+V3t9b64)AB{B*3Bf<|9Xq3DR^nE z_pk!^@b^K;quu~@1SllDYu`^--{#-0Za=H+PiFmp+V~WPDhfL5Q^EG_gqyLZN3Vey zTDm3K<_)`Pu97ZTam7ML*-DLQ6%`$+{(^o@Swu-$+1ACs)TGK++v18AmiFBfZwVL3Od}{_gv6M+vv}xr3BA`S!MIhINL#)@%#4 z^|IK!Ei)xR==ALyWWh;#^vJ@^#?A%ytVeSbcT&H~+Dy z=uE74+5iZdwL;Q|6O3OhlOCiX5BN_dm#}RSaGB%hFe-FtD4zgt0U;mcKKfD>OsZT#gWf z&o@lYw?Sit^L1Xn&*LxNn^&LQD4|%`OJqeb^nh|Z>CyO%!Zbzs7fLTH%QjZ8{Tca- z5efPE9FMz=?vELP$&D6g+8A89p&bnn#;&J=$1fJpH4#o58$E8%4Wct^ z5^pj-Dy186cjaViI*2JNHB1i99{~`c*s8x1SF6;bQw}xV#V3TN78zfum;lhLj0(4X z2XMtVpgSIxr>w#|EH-R}aE*`Ds&<;>f~H-jH2Ab6_cMnzyHikXhYS*;=v>x73>O7icywwUe@~ zrqRYK7R@?y(XlEbfOJ?FyD+rn8D0w4o0!NSlrcqJUk|TOnBGoqy*&+a27~13SGs?m zvgX!$-@_T;g;P*8NhBt&L08|G7Wies_@@^ z#G~poMJmjolOcELW#)iEntzxvyv4;$-|^dPaywk!Cm%l_Y*T|k46S~O+;ir78a=W? z5v-nyRm1MY=S$FLObcwrSmZpwDv!ZADp$W0l$Z#U#%XejDiM+AXT6q$QhL<0d@vvE zh3OMNy2C)rT&&jcY3%jx+ zo{;@2!vyn=e0-|O+@)3Cpd~6St z5YwdrQwkzp7CAUU?6)U|j0?q_Fg4UIqdTy85q9o?m=%<2HYi2gjyC5TTp)v}3CyOXeHH0Ip>Ox@p+3@z2>h66IwqkjQKcMa5YONW`3X1@!SgPV-{&;!H`b88b zz|Z!le$L#6IJy~u(i}-&e-omVqM4%E*4DqFq0r99ht!;7)TdG`$hbhwm_c6BUFuGF zk`3cRX57n8Nkw)FY#*g@0|})}O~>5M&feV3?O`}1-lA4FhfI1;G>(i@1}h3FWi;_f zoO9x-{c(Jz80_l}cayu;?R)g)E(Fe;s3?dL=6n|)#d}gUltNI(655mj>FYyI8NJhy zE}n!W8HbOFrbpy|84g}j=-9gB^Tp;u`>Ze=TCCo@Rp7@KpWfp0+yTM?*h8VksNBng zlbmo0-b8|U=@xYIL$SmGV$TO`@!4b0IVKh8W-BmoRNFOx5Sj@XONu~aq7Df%x9+B6 zI}T(2@AVY-L}l4S!l6@1yp7-H;p>^+c4gD|Yl&I^R*3b?L;r?4GZ~H;Kj!}tfw;>q zj?h{Zj2g5vE8FPuYj=32cyW9C>0m7N=IP0e;k7Z!+F0k!EJi?G+^qIIql@jH4lscr z6i^}BTMP*Re-;I0!%eW)fEL>tNRWcPA!{B=JFG9&MaJViiwgNpRG9x=C-!(Jq%D+O z?9fC*T;)O4sD!AEdS?R=Yy_uP!5P}I4VxdIWVV%0-A{DwV!g`yw7==SR#1GfcQX-Q z$S=)nX=k#RF~Zt6KMqp6whkfr2+0 z>WCdm_@=vBb0V;xTDi9~xltD=$fjED{N-sDc6vSrls;V63bZ@F_6`NkqIA!d+|};J z^YXI%P7{KRATTC1>R69k$bYL|B5K#t_{h(R{kYU*2iO%5%OZavKMgO%@5IqZA|^vv zsM?AFGGLh;sk_90|CbC7^9u0|)FBh*t)N`k6?jeW>@#F9!_?F>x&%PGIV z*=13Ohn(BxJg+ynww(Y*eYZ3Z0CeCc@P zBZW-i{CJ^n((&oE<3E6^ZGQsN86bjGMYTwr^C+}2qXhl9iDWyd5M>H8OQ+X&Sx{a| zM@){4->G}Pn74Zf-+BrChGOv%3R_opfV+JU^sbk9Ij`-X_EfD-&&0ew#u{9l0(f)` zi0;*rg-eb|2-9IkmIYfKpkh7+XHlm-Gkl9 z+X^Ya5*?on9hySutOL@?xd5$EIeK9np32bX(1Z(yX#E~cWjGaV&#W@Gx08kM+n7c- zz|52*K%N#oL{>rb2i>SYjL~4y9U3j0JZxnfGF_encqUAXpagRbZHTseZ$Yx=CA$@P zMu<)868FT=eByd>2P%~YPufFd$7t}xmF~3$ZFtv@-B&4PLd_bh6^{$w=RPw={7=r$ zmyIi*$98isFE2fJhx~7_d(TB73^9aZ2A=PZn-^=wY16!t7`i?1f)Ov(UZVsl-|t}h z{bn~UZ^v???)8mNGCZ1@L2eE5vkIDu#-8J^?*e?mxW{DBJGH&3S39qi+f}h8OU!CU zbP@(6;BHB8?$6q9!qF67zt|kV6aJm1yvtmSPc<1mJ7W0Bq$a6ct+VR6)I0=Gpz|xhd2B z0FUr?I#GDMu*8o$t`PeY{TC!wuGQEQlFCY>*mqe?X#cs~!FnIcAyi z4pJn(lq8W@xaTg#%f@?^Ja$p0o)d*LhVS4}vrWDTP4u~hD}VpxmGy1ngw|;8@m6KH>nHuLm6{-^J-|duawoi0(Hs4K_SPG-PJAU35#(*_o1eGffXH?agXOV{4 zd7ER8kH-d-sT9`BoAYMx4aEjhx}MW~rKt{TM&42Snp!&6u?Y-lNCPo2-?0IzD@wnN z15LGFNylFzNCt0QzZyiENef&-0TZ*LEW%G_JLBV9_aF9~%-!vw#V(Y4;i|~1@ zJNvc&L9Wn#4n7oUCBL#8VndYv+76h%Anc7xA`TJ;nbC6XE@sk1p(44V^`^CE_rED; z6>%xZY@v;!|FP&74Cj|+RHp?V%itVXBp+5IMl%#xiS0kLQ&aEz>GSmZ)k(AWHWbMg zPe-4h?Grc^^OsVAK!VWQi7Bn4vz3>%9fc$1jKJs;M7o2>T886S9F0cAwxz9NaV(BQ z=6C8~`lG+&F;D|^NGA&R`#T2*EHMSqZtmq#wsKYqlewPg$)hOd9A}%eyMlH{lagiB zpX*JvPA*-7E)pNc$oe!kE)FEvJ<$ISUm|yQ1^S+{Cne7-jtX6q1}>#9|CM1R@ypiOZ9V z4u*p``s9Jen4!n2ry`YkrMVG{=Yflsk$H~ff6V#lvm*X9u=0*+HX+XLA=m#cBqEP z-LoyWoun+{aHOt1eti3dN-82^IMigl2^Y(!?t3zwKSO%|A`-1qnq!m8bpy`reW=9c zW1PBWncPnWTi$b4+y|?Oxak$5ocmWvT{{g9wPb{{w2f*I{D$=+MBMkUQ#F^RC)X)> zOTDhdoU7zc*y&`JV>t?9h`lJfN0YYpc>2#l*b;Elo3`QCBI6YLC8Nt@SDgk#j-p<{ zLNY&l;b?%qA2OX%AzW$vY$CXWKaW{7TXGP8PWjtJHv0+Pd2+K*I|hzL`xINA%a}&4 zJME+xz;f%>wfJve(;Hnn)=MD86YaBMm^-dfT;71f?r^A+mPDzD>w{+OAKv@%2jxOT z&=Y0;RSglqPrkJH&tT>m)oIPLu8$Yn%QiWUDT0wM;lg(ZsrouGKVIi#>V2&nzW8qD zFf`MSLY5eH{WQzA@(0Sn-yAt&J{hk9^YBB@k4?B#4oyuq_1E)eI@bPLLzu7~K7}j{ z#EPe}8)VvvF>v|lj$H}T!a05JDJdyEUnu^~VXM1tZZ<^YJhC97L!xalkJgGT_Oz_d z-2=AR$(Ce5^c4x|1VGSOxM%(rX|`T)(w!fm)iHDrQnd&XJi+z%bAONGhA>6{%9n%s`0il;ZlhadykcZ>xxllp^31DY+vw=3{D&O&_db0ahr1vg+0>ofX;c+tYS3@#3 z?%?%`?GAqVy^6|Cy;K*?{P_IbsNQr-f}Sx+gaSKS(gwscR)RNjoexzZFG$lx$%8%{ zboR1#ji-dGCb3-txP80I!(JFR;5drrr;HS@O&ZGOrzzX_6SV@iGAXVqIS6a&XY$rp ztzPTFE1S_M>|7#x>zcU=$_RFBE2;G8>W;7tIpSk+-3G7x8y(%F_Mg{@&|_(YPRXnr z^9!Zc5xZP~2%V=kA?+z@OofdFb3x?tW$l-IQ$Sr7)S!Ew-c{)IvNqZ;18eCjz53wv zA5akV^T~Y7>v=!U{hHGF;*=)%4M2yB)tL6E9VD=_YHQEMJkq7>ZX!DscZ5Y`Eb86h zYr|x}e>*g;Ha0?U%_fKM5sJ#u7|u_8As@j zb%hM#uGW@RkTEdKA$L_^{?;=6_q!^gqI~)-nw@6lKcF`P!yhx@{h?T^N30ReV0JZa zWr+Kr6@4!bb6mKolpXx z@9QsvN?vA;rqZvHWd%n4))#cQ&waFmUrP@mGBRMQ&zKD#V!gEO)S~G<;f~aorHw;T z8)G4g9K-WeH(COJreX8_aS~k+A0d-OeNfrQ^znj8g1%MjB1M!isVO6>golpSdSTA_ zwd>B^E_Kt^cQuaZ#n(LLzvp2pUD?am8=!wHEu(XIZ5dbmH34Qym_S<0!uY@>?S(F8 zG<%YSEL>ecQUy0mzm?V`VI8e#?k&g+qz#2kT*_p#XpFG%iodAPXA0v~QNLGEIWZ2x z!1%ig<@IWicd-L9QItYZV%aIiVSFKWiI(?}uY<79AEJ3))8a zTOMEXDqEVS8|2tQ04QsTs^2=5Sb|U1A)7imxn#6CE*%h88uu*v$|i}r0jruK(9DUa z$L>)+K?Om}^0>b-GPgsHiHYeejlsiy*)5EJD1 zdFJUGRFkgAGXzKLkidvd5Sbs7sUq0 zJ5We10Oz|)byW(BP`;Q}wM?ENk;O)nz}`PaPbaEFRy9;&qba?Zv*~ilR;7Vqkf5Rj z5s6IUyDZXiNQ1{9!Eu#W`7dcFmN%e1U#LBY*O=Q1oCX^I0Yj8 zgHec5rO%A}pbb}>>4ZaUfV7ITCM17%7ckBt&G9jUv-wqk?L|}jTqu%%>iV!~gIeJ& z$bPm;!KkDDX1QH=KZ+9vG$@Ral!pM+YW~ct`4)nyqwTp>bb>K5i*~z5%TQ2xSkhRtH zn-cxrSx&f@w%yY-@#mSryXEuK@O9Ve36j2*eiu;H4tQt06P?L37F}#9DeB$UnX7p; z+M=`QYRw0OyLHec^cDh|E%(d@96IDHV0AtjiaL##dy zidYF~Q|FD4zGHR9nH(7uqbe~rJxhD9r?q0M*oG12z4}nSec71V`k^+QFij^s@2Zf3(6uZicDMxkDOTC?aMbhf^Q7$qqc@ogV0Rv zd=W7fofcM>Sl@gvZ^M$oQ9;SW*ySIi zCQR`y49N*lLv@lDob^j0q8rvcU{SpDG0Q`^_j*!ncT=^C4{Z&L4uu@7D`D|2!D0vn zcD?s-4IT*bH|r{0KJFT3S|g{Drwn-UHgh(WEt+M>Z$dQ&^-+}bhUA=GZ$ zgUX_a38q24IztjkvQlX!rwlbF5#*tLo7LB z9u4^dKcJI0f1a?NQvd2^;mLJZskwWhR7B_A!%>|y5f4bxF;j@&*_?nPUc?+OO~Wq9 zJ>jT71u`-_)>x4yEku9N43@R?6s4mt#M*D7Drr%l`&4xvDR9VyzuPzuW_mvL-3E6Xf z&E)oSvv;ud0jyo%+{juNcy#@I5_Z^~PfY%`^q7MAEmS&8?6rBsxwX2g!vHrCOpsCDi%}dzG+csoAkw;Yc7;4|n3;t; zlcW_?kt^YL%|87qu@h_xO8GBgV#2IecYzMRI-(^&GWjnVJHXFojV`TCafZDb0d98e zjLDS~&60TD+@2tP-s%B5EMF??0;$@jsj`!{RC2x~0oiSA*^f>{t;Im4^+X?BX-;x%trFho97v1bi`QT*^T zCmAzzh?B+1Gl2U_o8+_|NuS48x(F{*Pu_5fw{4zi64m$pun`bqQT`bN!$EB_w22@{ zy||t%FWA2jH(HQtX-_SZF}ia@gbZe2M2d9pY1AIFj=M`@qK1QlXbi{$q9>H6_WAONNk@Mb@s6U+oC7?;RhUziN%J{#=4E||uNPvJyx6MRk>4OYbaBN%v{i0Ng z?zC!RYh;f#Ic0m7F;THaaTEqh0Nj8sOZ98R1wo5rIT#5--raY=l~GVRu({DGA?`#| za&?Yc3TC>s04aJMbS*$03}*~-RLf%sP|c`XqJ#ZYq_JXKm1Wcry<%l`Xn19^B(&%| zTMr0!fBcxEbN(ieU>KHsR`F7c-MWvdH-h>YZcne8l>A&{3Lj=`o9O|_E7R*cn*s9^ z`zRG3;|kCh<>bFBe?)C|Gh+)(KS8+?Qnm;8!gWKDR9;D8Gs|t&P-&5y(Wogmkxpm) z_D%L71@<-I?le=ZkI1;e%SMNZ})X$_iRykutVA9?6eJ_C^}(Y=1Ow-A}JL z&gX$sPZfQ$8HgtD>!GlAjd?g&v}tSRb=;h+U~N}<*$oiqz>=l$@j~z`xcsPKJ2;e{bfPUg z^|x5K*#3~}YU4blq(JqF7e?q*J7h5A8$)JerK0LJ< zgf4(0fG)>Kj{}Ivw91arU$}i6) z=#z6{H-ervdPwXLp7edl>(7X6ng(c=&v~N-k%YRXr-7tDmztrySt8I(sZb!*yJ3wh z4_l64XIO*#(=^SiP{4lGf$aXo#{obS1_~h;T2}jiRlX#+v}gU%L5V5^pqUJzRca`6 z3z@5)wu-uaf49^nC3R1XLYn|-is45vAupi1WPyS8IDco`gqGj^y(kkl*oBvW397ZX*_ zI%3ul^-I4KEC#1|1st#4X%}}}*6JOb^ymK2WyGZN(izQ$cBSYRrz~hOjRM4>}fo zh0Vs_xj|=gto9?`Fe24U5Z8%lOsRsZYHIu_=`>HWM4sqSpDPCJZwP5a{gEK$w&>sc z=H?{p)^T9|2@}A9MUVs1xQYrL5LP7B^8#RaGwRJ~_Tc&gJXghW+Grase)PjyXjKOH zdNXbGDwkg%MUO)k8m9)7=DOosZ}Ns0l;KI>7YsXrwn3u9n?5aB(uAy1MnT21^k~X8Qz> z4i{#QUmE+LIv;aF2=zRubS>4vilAP{Ou<<8D$kgl6=$441=>51V6nlrp&>58s+5YWQ)2n zXL0_e;&1}&T5NR;-P2Lgx$fJACfcLej?n%*?f78uCe2Y z6ANy)wGn2P$WmiZiL6pTFu;PDRZy6sjg$j%q< z_XbH;tr}wDGLqCBcp9}q&P@3gk3C9=b{u{^W}b^?49~)Bm62{W+aCRz&ERx<07dCHK+8z3(4ay#m2aj5<(lV%UKk?b);St= zZ)qZd(|1hyjz7M$f)PsSCC=ifVR#353l%Ba6R_B>Mlfj3sD|`JRX<`{x}A#zTe_OV zJ7!6oXR+}zuHX@-b{#BRV#+|ziz(nv{~m{z;B&ccuJLmCo0)zK|AA-l z#TM)J`MNcP>2hw#zb0RE<@>ZVm%TEhQ&-P5>ws5zv z>*!z;)UH;Q;wFC~+Cj17bSAT)NE#Gl;8S^?1jBde651>m8O2YfvDPhTGwN&um*VjZ zyeId~>%xocuU$$VTNrh)`02*rw*T~MxHd_#Oax8S|D)hV5$oK_kR{cRvcQB~;yx|3Fqq zu}B655!)L1416&G!Iz~06~NvQtx5!oz^R=Y$)Ba4VQy4l%%Lqeq6ed+mu<~Bxu%;?#u9f&8#2>n$j zhuV$G5h%TUYPIIUOrvJQ#^(zH<_%og*%VsBU9@CZ6dF-v^D(g%MYr%eoG<)n4A(Pa zr3qdKUfLLcD~_QCReDuMdKf-1OX zkpncT#Tltr$-r8T;u1$yjx;K!x1s1NZoHxNUKP+uE$@s5lh>2b1B(Y6)e|CEQkMRt z`%q!{(D|T&1|hHcM1EEF-%xppMk}4nn5%Y*H>7Yg2@!QPVo;(oi-q4p(9j%9$K9&O zt=Mld`xV0GHz!--7Nmt8F_#Z=-R+X)-PX=0%3ed}R!~R}O}TV3ZJ^w_#xK?v zoDJTEmEZRs4a(WpWG(n2%l<*7Dk7aw>Bz}(4`SnM;Dyq~2praJe7Jv?)(%Dk+~C>w zIEXbf?mI^g;t`HAcwC|8n|r{@?Uzc$1%TO;q$2ZHYW59U^prP(*h65&!L9K>eO$mS zInMGnYD&?F{1~2hXKpVSBxjHQRHGbYsnib2m#^EXo{c$@;@XVcV0DI6ESM;k|KSxD znAN(T_w7|M`I?HcAny^6P2qLK(-)I51qiVJz{rqzWV2NSCzWo)oWN77#9&`Bf^1x?%} zsr)Qs(bQ2^y$_XUUm!ue1Oa{sip8FKl6%{-J-8-WiY0GP3BM z3UyTc7cx%T?Vf)CKR@mtGjVB?N8AqOqf%2DL1@lrB}ewriqFUk?Os#piy7ZnF{Ou) z@GE-c+aprHK^2bZWb*9ot))&HxMAtFw$(0LA*#Z_AcCBwc{$T4f;ER>YB^IyDUDam zqo0WkO zr5WHbh}mzK#taDFU^GrOTHaQ!t7T-5fbz`V-A(bdHR&OwmBdxD@NUJ7qbJAK+BwGjDL!g5!V2LLLx%~sFA z^W!P+JSSGpt-i@He*hhSc+)r=Unu_l4o||y%N8mjZW>5$9HegDc7XuT@N(~OB5;kC zThr_P`d-Ro+x@8;Mj{|dLTGAKR~5>qoUiEKcD4>12kG6KKlIQNhV-clW3q*N!du5D_+;Kn9{2 zN&u+s{@{M;7kCrdX4jsZ8P}Cfddn2ms@{=r4_eEfRrw0pzC<(nFt7hH5(%HQ0Xsdx zY@~H_F%@w*JH%>pyAiydFW;LPsJ33=Jb22wH7AYg5mNi`u#p;o#wg`JR=t4WsKOUp7fnsdAyxDjJ%jjDmma2;gJ?LGKG$Cgh)V-t$&W_1>`g!%8)|jZV#^ja|$FO=bj|Z?9xm!RdZ-OZ|;}gq$?V55VQakx74VvtLuZ z&tuyo5?in?HrZuX_?e)21QL-{{Lia8+n$6uIu`zT>M%ou?gO8XTOTg19>9%kR)MFn z(%oB3#N?w?sD3IK?}2qXwO(e*xQe5L?|dPwI=4tdl<<3tJw3`DzMs^0=M4fdv4jFA z7hehBI-hSWFMC%$&9+xDbEOK#4%77wqOn`g*|nQKr@pVJC(Ky-VnWW?y-faN(L&Rf z8sXFXDvz^O=UN6STj(oFtl)R7@@YoMZRCJT_$D~Pa2!zCp-6alQa^6TYM9mt^-3Ef zu_RwS_qZ~k&nz8;eY?7r_*(Pk08f*_?Zf%^tE;beQe15o6@TpKoI3Tzk{!02Gn9&N zKU(*MLV-ccW=QqeAn?WDnMY#8uW2!?)~$-i{))HIM1L?F1M9#De4g+=W@|rt?~NQBLvBS~_bx3oLUBwun+&rrOUE+eUdM6)9;FMWW@|nwvy4I!rx+hQc?zDZUvK z1HCM_AOvjQLf2C?vaaGKFDHq@#avvfGDU;sAAk5^%Lyo3JUZ*^#cyBzO`Xakq zyn*viv7bY}v0HD)>v}Lk6Y6lEV?4HubAfMJ=SMj^at2@qFQXbnY1x}gyq`NlL3X&h zxLY6@*~-f{3%r*;{WNfy_$Zp|xY$wkmhbuU@YGF!9ecm0Ro}W_Q)-{ZQy;s1l>)x6 z-JS1;?YGe;?Psg7%$*$_Z==DEn8QnO??r^zcy~w_TMf?JXWfnM?3@C#K1c7AbKgC< z4W=wqzwwa3wUqU-!9zdG54*5^HT~e@p=~t%WpyU%a6AlkFy(VN)N35urLo!O%#BB& zPd2i<_8yFPGnM8mcyK|w!a?}F8Is&Bn`_sg`HS$&a9!+uQ1$O&aU!3Q z`4sB1n4n~}p`@Vb*?ODUDr(5_gPe}$o|qgTpU^Hv6X-UU@H)rcN{cdhPo0|Re7$5P z6*XiSQYwQPd<@8$E8xZcHtw(Wmq!ShJv8K~Fq@|a$>*WffCKT;_jW-hmC^g!pi6)N z9)S+>UK?Hz#+e(d<6-sJR|R{hrx2T?nepEG2!64n86jd#%oS3}5eI}4x(8hua^~Me zbtc0L71PHapdk-`QQuE2mtE^MTe@iL)~D5h0Z+=0kE<=l&W{&sE|vgE!j{q;kC!|5 zuS_!F##3=&?7El5=gtzx5+}!=L-E{q??Wtt?j|V4@#wlVfEJ7fy)cidP^aLOvnV1h zht+t)8?3sXY2d1JX7!M{5Df> zXlm-oW*>-`$kQ{h|4_G56|9uhmJ3zl-$xfL=YBf#IOq9e-=7NRc=g~CqyEG0be{Tp z$oFl?!jCi0X{cyMGwjH;_G+LE*w+iTpqI%p-n`}e3G>xQY!bFlAN#h>vy#uzd_;cM z`X<=M7RNcju~fnHDvLXCv%~8buG+?9M>tgsQX{dq*Lw2TL?$0ce)9>He z{$SZ`@vjizXNRAGjY<6~kI5K!BtrODp}b1;7NYq$X9ac^DKRuA>haVr>A##$+1e0z z-V!Qgad{pX=y&cR!LxNZq_r>A4v0ry8i?dJAAn>_r>Y8I=0 z@+xXSOd?>?w_AY)iZ0XAgs0jnUKy(V*+eK>9Utww>-{>3)Oo!=wT5)z{jBkIT|HxN zy&4@6$n4fhUwaGi_4J*GEVj;t?%o~|Al7WI2}&*D14kGSCU+8*M7bXGWy)&W+t31#c;@Hd!Xljf8{cF zp&?gpg4L{WcIQhv+8-ff)29sbS5RT6|Fy!$oE0`G~dL7#lH1 zqOnMF??@a?J`1=V>D~2KOC^yJ*803Ytl5@A_2TjQJk}3=(b3)fW!9xx*bCR;c^9w5 z0nE^gy+sJmX)(VPY+~EWH1prRVY;uwgE#*OwF236nOgiLD0;d7ptyM9%s|LjFcU5EGiY1a|DaT6y-_U(R6s zFaO^^{b>HDzxu_RU(bJ6;PGLxVmHg#aZ@+}VLiba0M-$79T{q_WP;dpk@8bBhUXU- z(LcWYa%1}X_?^RZvzHFiHJ?|m>`%s@L zKfM0Vt#^O=a_hYhPPqvFpCZt0hQ9EHFTf{#Fjl^H<0!sNyxNn>nC?AUlJ8UYii5GyLN5*cmMW(FTXxM4qtiY6-=Yle^T%_Zk(6Uyl&?${riuqK&T}jpE z#fk-kSb*FT8N+@X^C(z|!JSGCsZ=Gd7f&tM3+y z6G2X_GiDE%(*eW@^r-=$RoZ{xQftSq5B}lr|J%e5fAz~%Srg~5dY}e?|MNfoM?d_R zUu~ZM-gl3IYd3a=&2}k7+@%>PO{^;ZhG8H#0i`J=Yza*V`boQ5Yn1ox|ET`>6DPvA z-YATDaW9|-0CM1ouYUE;k^l6cW_Iu0jT=`k?~U(FjryHN#cM5BDG&A`bLo+L$`@Dy zx(*$=y8*QUAQr^RVby>V$r>AyvT{rRX_sz#l$Ew@Y0 zJ@Z=Sr5ArObnMX&n^AJ@mp^|s`OCljuXar$6`;xB2ojmw;u$zUH(cqo zOEjL0*gBB$lf2V^c1FLJc|t(>9h0`CaUDRi{&oSlS6rW*YLer|h0U7>tH&NWw{_?4 z?bYSRK$-A#>ID!`!wv+>8t&DA&C1Kpr?hdoQNy<;#|}RB_@?Ln;NMpEUA^L6ym&GB zWDNitX3B>TedsMW4>xNA%g~!nN*GZ?6&HC5cCok{9! zJ$%u>aOqG))VC0@EqUx~HSZ77yEn5Ef8(PgnjEos3N?|*(*BpAC}^1>z1kT z_+#(QZQXL>XX7{Dx%7j-K40Ga^Vvm&&<7uU(4z$j+s9?<`>Wf#I4iNp(|4!y7fsJ8 zD6$D;E~v1t*wiQ9I~o1ofAU`%<)!6IovSzEBjwWV7e4#h>$S&kD~dxk#Z8J z^N8|YdlXe~6X9+{Jpei(Znw(V82}0q4h=309zFEoK()3B-Jaamn!2?uOts8DI>m~i zSokfC3)}6AKRvq%Ox)Vqxp944`}Wi%>a^+J?Vs3Ez7Ib9u=W3Z?|UoD}w5oAqez4V;8i_iK9a4rEe6rKLY_2~}N~Ha&-xyfD?{Bl_aWAeq4xd&y1Hc*v zo3_DBod@a;(fku1VZ@-dDY>Q1q{Ntx@GIF!2=IpNJie8iO7plUwey_-zq#T ze~Jm5atk1C0H`&}TesY*?b#)~{FZ>rBbTix|sb&vo5v-joCksMcgnRWJkpc^+ZIA$;hhlfTSlA^>VcezWg ztd-=DthK!nitujOj`dHDP=x*r{iq)t3Ogj4Yl*t)l_*LgwtB%4WTtSc91QtCEx|;~ zn{^4dy4W`e!YnrA;;nQP)_*3tkN}SMh?@_YVQ|$eD0qByEAY(I|F0Gf|I@FZe}4TJ zZ@!r|6TI%czL_=%>i7$!=k!l{`cj9A4ibPEkz&T60CxQCd)GcvuU(&4wc}mVez^SC z&pf?!<*BFcGHdH4X*)ZDE7bst2+t4%Y#DQVqPr4EkBC8{DwF{5=;dx*bOjd*mO>9) zycq}tqO}j+e@uc9`+#04&t7fvU`{S^+#LNq09qOIjg7-b!^295C&}cfw6QiO=W=UU zlBjy*z7hcQw{JJT6pZ91B7?<2kGBq_su!U9V3SklT5Ygutr%!jx1*|DsStvxy>ma8 zJ6Z$)(~!N;sJdZ{O{7JPI!k<-unVm$5?}kP@Pb?q1`Fco$eQos`T1a_a)%4}U1eua z*!z;Hu5itR(*kz_J5|t!#NNG=G}p!1Db!;E$Uw~bgqjfX73&_pu0jT3h*@2HZKiGo zz%jw^Gd$&-F)TLOs1J)Z*9wcC8ukUsBoL@VzhAG1yT3DYahO2GVpv{IOnX!5A-Z6<8Qw{KY!z$LLqrO zk*KN&?X4{u8OK|B{|N;4MWFpK@reBi>}Yqk=I7))Y;kuz=x6WIJ@%!2QB{%oV=|ve z6rO+ew~JT3-q@A7x!90D@CaJGJBLceu)aUiUXTttxkAS@N-R&6CIM7Aodm$H0-zT* zQ`_=Oul_c>5e}_CsL0FHW20wCHW$N{N^r-Ks$)v;9eE^K+w1w;S9550W-WTZYRU6wiJ4Yp6Z%rF1Bt5@r14dFH@9I_kX!1%vL@b)gKd zmP1N%YgFqaC4g~eH|KFE&^kP-)x2^x7a`@6pKUZejI44DHtko((ugii1h$354Cy~z z`%j_+IpOj{A8q;q^RK`9TK4VamYi5$KMqSC?lW4Ve-|GgxCFpyL9@UgG%d#t*epxZ zEDCs>pv^$6kFN`1PqFS18Z^F%fg{OMr`6n7SZp!FAS`<7*zYeBf1nC{J_+!=J4qZv z;6f>)EGK42Dm})!GE>_f_i*EWGmCYmJ{ImWV7L zO#o?SV?)~bc}iXy8(j@Q{17DohH$AILWN?K*@N5H%ZxT$LChFYYFgUtc#(rA8AcL7 zi4p*uGw+IX80)40FqKKF_J+hT07YYY_LGmko%8u#f9d6yZ@%`y2Ps8W4-`iQ_w9za z_dRFmYex17;jjaFI*{S83@v&LlkUY3j4YIqUDR&8b zC+e^Zj5XtQe>wqBDu(67<+F0Fwnl38+XvryA3y^OUQZohRnnYRD*+2>HMc{9o$%JC zI*6;~AWkO7P^pw8_mc?L#!0nW^~%|7SexepY`x)Ou-Z!MYe}daBtQqCrRvn9|2hE> z&x;Q}^5I6Kas7o~zLI~U6tz8`C@XRA>9fG}$v`efz#@Tyqy+fA^ zJ8gC=;@Kqa%(e-2=dE`o!g~N=OptbMa4?whT)sTdr?Z37oy7~9V z46z77S{=cduN?Qc3sGXv`md`xsgh0*WySBWGUH?Gz6UPd_T+La3ddF(lB@o20ycF{ zT^dwtHgb*N(*>6RIO(vW`K=+ZcYqu^v{T0jwDv0{064GAa=c2H1VHC_V{sb0l>qFW z0Wb&v?TT`OLU>Uk42!yK$i;oelTSVgzVVH30R9iZ^EdwSXTvli4mAh1y_QXPE3#|r zX?_KEP~b-GYKAThQ6$d*&-=gl+0XKS^2kHro8SEAkq`hT*if+Sy>#K0HyDgo-h2NE zl@}Ba$vj7+_e}{9(K8<~pfw)suDg?FeRG13nKJ04gXREe$RbgY75MB%%UW6!0zoSb zL-dk=^p>cix2_BgZL%}di{ga~x4jszaDl)9LsxqZ{&ya6e?Tnb-rTYg?Sqzmzh7_z z0|oEp%T*zh8?3x{?TVVt#09A#(!`9qwcF-Bz_xp1%mog!m);K*vq({SmjJjopwCwm zre{`!f#^87aqB^)PAC|cW` zgoRRwLx_?%078r6?jU(gSlR!Z-!hg^L4X87Qp1tFI6krNyL91>FS(WA0{;7!1LF9> z6j>2RyR%c#E>0U<0^sDsQZ+l}qehRm-fb1sJ7&>;3%q9PdNePNhlpia3=O}gH}*It zbv1?7#?0}#9|rb_f`3ZByfttGtK4)?Tw)M)M_4% z_R$l>VfM5(rT?Wjic?gct5p3=u^1Bzg$ce|Sz{C>seN?h34R~Ac#(PR$`$sBO5GP< z+YED!x}PCb!AA6@XU+PqU5q*>cD^{h<^hZRf-QmsmWm;;zBcjD*jW5OUAf|WcVVIN z-nDCLyTmM@y1p)LC6n&5&V6AwX;fXD1h@piX+T$p-V`&!9lmpnKo6Ej7IP_4Q}0FDQZM>RHX8?( zT96@xVHm@Bf~32CxM#Dmb(1!u$$UY}xRpy0l1UGfvSuhX8UirZULTnevAVITeEXNY~5eVvl(G>8HWhzy5U~ zzw$C$ed#B>9#Pw|o@vt>w_CMzRR*MMSGA|%U`f1m@m5+CZ~WlpmkV!v^bx644wAzR zLerQwxTAgC^!>Dx&W6|Od*+d~T_D)rDffu^`FW5?B=B>WAI$%kr~c&5(Dd{ex^wq} zs<{ws)3Gp!GyB4!9S)xoWh!DR0ifMeR{?MjFoGb7gF{Jid^}N)$1+mDUlkB$ctyK@ z)bX?kOK5KZo#gFa0s$5g+Tx#dCs*r(LZjh9xqP&qNKDqHMgrCAv>f1(Pwt<5_+j?H z|NY;KqaS?a$1i*@%Gc|Dssb<%*pUrz|JZ@iGe0u(BrxT25UL7u^~om(AOG6d{Qu|W zmn*jy7PL!LKiU~VYab|=jTr<$Az~~UG2&MC(!Tc7YMZNd;uN={|MY`Mv>;r#bR*HI zEqwO}KPbJsvVvWkZhtUarfVjge7FR_=>T*->oMjVIv;#YjeOGvW@uX4R(5JYy6}w$ z;x>B!z^(#NF($=g31qX`z3#xpAp=Q>mrIHlm+O8~srjHR2@JuIA)SVkGpY|eKeXPo z0xz)L?u2yPvLupHF{G@oP1f$-Ij<9IVU zp>C$epw0WdM7k$te+C zlmRfyA?)E5Fc8ZNGc#)}AsZ!GuI6&NgB+e!7Zw_cpKKrO@FO!R=3ZA0-0RDvJz8ss z)XexKY3^}<6P6@N`lEtTi9a*BD1^dO%D_NgO>K|zN}U5(HJmPMj)6@QxZ7bGju}J> z$0(8j+$sR~#CA4|e)Hy=jmpG$eg>13(dp?WytFcdYIUy}M>L(fHlN=dkGpW0ZF-Fk z=fBmMOi}?7b3X*K7(r4l1(if%N|mJquGJEKKIL6O1i%|1Fcv^)pf1&Y+T0>Q+*|@+ zsZw@m^E)OMnwXMCJ5i@x+-zsCj=W?Tja%`{Y<$zI$HYM%a@lX&duE>xqMXJ-X6BE=WgBIUZd3> z&}5RFf*a~U(sekvTK40Wl`}|HCrPd5+xrd<4pgoA5m0-9ej*e`4&z-yF75D_JmtAzxj-99dHr0g@XmD+W zQvjC$IN{LkcG8TQ>{=^%4Ert}xv4wV(9S|_)}=8&+XLCHf2~)>+%CIxZnhu*?TPO)dkHim;Z1ZEIYtry=QVoalxLWlQN%ENAu?b{4f8Qnm zGPE|j{9jK3=q5JnBQy&Xvrtv3v&ePJNg8{r>lbKh|pX z&1CWbNy|)!S_a1I*xkne_xi29pcU@5NPu=F+ktnvwz;Xk{Q5stHX)au5{1?H@X#1h zq;aA-^2BmNp?&=C?t$q`02E$ip!meqM_K&jr@*yq*T9V%Hx7D;rxLWpS|*nR+krq$ z9U58@Mn-R;yNh!TZbhY4M;J5vy=l2XV>v)uoQu?JK9t@bB*lD$k!7AS$6YgTlQTfk(Gm7$ z2)BU0$9+nan0okB;QhE&vk4Pu%>d};A4SFZ?v`pnat4?pza^8fttOIt@t05GB;^YNi9 zH$J&ZMn*SLd|(?Rbp%KaPiqOw-nL20|6z<+z1_QQz8^58Oq2jnC;_1TC05=o9VSWR zBp~$_TCh33dpvbG7*8fDmE;RQ{9*N9G8xT2&mZsx(SV)=Avj)kaH~5uL+z$ctq=KY zZY?aJR632H9v#bnZEALDaC~eGWHSS#QVN-}anr4|vSFKO-l%4t3_S^;m*>R4eC|2! zsmC4z-}=_KTms-8V7%VCI5o8_Oif2Be|-DX3NNUvB5{0^0I-t)R!#sDwobAWvDp(g zr%|uyQm=bqGC4LqHZn2(SAR7yrzpPv@%;1EtyJpBvci*k&5N=+0T6Vvi8Rmr5ZI11J0&8&`bsSnX3ogCAC&{*(Ee zD~ZbO)zw4KER@OS@Ed>lgRE|D7AG)XADoz21J#-z7mE=yl4+0echuPKl-bgd8&v=> zx{|_0zd#iL98^?ZCjzWDL8s>r9m|l+G0!75U_72~AT_<2%{DgsQM24is!yzOwqpXZ zf!Hl;&^z+Fj{~vq!2XVH4{b-dZ&YhF`XH%5u&NFWY%+mB5-)h`SnuP_wf)w&9c+5r zt_=c!L0E`IqwLVk42(n~CuD-Xe<)Nc%D-H{o@eugtua;J7#bc-qFinOS4tsMX2)3f z0NMiK?PHke?BU&J6Lg!rKiEV!ICe#yv^1cDK4ojzGN{K(Q1diPhnYhvcaqldr7|p%IbLN3<7v;u3%AsbwUy0$ zzLwnHcKd1%vvxLa5&$O|`k-hE)|;YvVmYynA^rqFpP?Dp$~I;Dtczi~ zzi_}#`?qbHV6!Y*A9vuQZ_pf8U`YSjwh#{?HixCnjo8Ds+keT}M5ojN@W`sb6=wh;L6!)V_A%!ur_M^fKJo8aG`! zov?7K9qt9Kz0>kbwA~-lVSn7vQ~(ft34oph0Jd(4Q_gB%QE4tc(MKPTM*@TKjJAy| z6a}eIhh}q!bR3I8uAP>J&7iv_-0sUhpx0aDMn|^ThO|vYkAw{AbK6n0IhQua!yrkB zQ4vH@MBtVI+%=NvH2UeUepS6WFp&9bY#>Cz7jSlC zJNgV$9icxjmBVChZTjkGpBuXJr7wAZ^u`<9+Qx=bJM3xz2(c)c8df}a&a=7P03?=e zYaL_P0|%|kqbL5;{;C|O%3g2XGc>gAyLA4RmxBq$>p9|jh9?IQv<-Fl`l4Ga=#;=E z08T!3u;d)tIrFVvHPY@k%rpi~7;CzAnEQH+Se+67d!g$dU?>!XPdxqvB&Y#y-n_39QsJe&a6 z=O0laOIa&g2>}8#s%h&Z#JnW1&An;HfoaAh44X*+T^tyyb{*>sz!D2omDioc4#KjN zplUAbGM>}_L{Va5u^gi)IUtCK9HDe7qq?ETXRYw%?tf!_Y>(P@`&~z>#C?PDcpCgr zJk8dm4EB0u#L&E#*mmme-j)?rG~d_y2Ub-MD+*7Ln=fOxkYt%`q*BO-P`P$~ZkZh! zxv3P31NCHb%tOahZMdZu(~LVhg7|h}R`2hHG-vn%# zf@bvrMrwH2B8UVqi3cN*p}|0)#xYDDfWuicRt3HApnWO#IIoshM6Km0KD$Cc$`u~IpbWQHzWoD{eOzzK&{ z>c)BvY|re|rU^p&7*IJB+%IOrDL9D72jQ1L|L5S*p#kviZ-3h*0FDvt6TV%&Yt@q` z_HVYZ=VsrGq%*{BfB+-$Mnm#&DrVJp-@hs+R?j>!ac1J&v(F9$E?t`UKkz{9fBnNh zNDE6#Se6gRZ_}I^i60%^;wC3o21}5_(mWLev~r&J5-%AE(2UP@Er#awGtq$@Bg=Ux2+Cm`slLCR5~teb z3i=N~dmn?2@9uK|Z;RIMZxifQsOR;mHC zxO8qb6yExqFMjEdmt>jI=6ReR4U6q`oRwh*SAwrDw8>~B#$m!oCLT8 zz)6SG_}U3A59atq|80Q1EWpE-!kN*Arj}atc);+PDd?LX2hnKs5O?fiuYj6m069k0 z{x-t|P2(Im{FU9d7l#96MH#F%*CG~}rjS5Dm}QX6Na^$tD3wB^oT!Y3qdsq?9P?Dm zvBzW4I_!EF2qq&z1 z0X|Qiiw@*?sZn5fzF$ldvBkDqmVb{M-*sAXvZZ_NZ(X+EY2OoQD%SedDj7jg*l@VS zik>0}_^MbCB!Uq~u%1h#HFlV{3EBe7#&f7SLsS7E03&nz0nYs6hpHsW*SEGdqa3$5 zte~x-V7RE(Ykn*>yo}8-u`X(JJxnY5Z{wZramB4MoPahNIb%NR4KGNgM|}C>nGv6F zv=|IVgB}lcbo;c_rV~+749tbY6H$R5mZW+JDw3#|UxoK*;jrV04kt+k_t;a~0!HRF z(#9&5AchnQ5qWj(jGD=$fU43Q35RlBc*t<0yf8E;dd{kfIzsa!u!v6WtsJ1%aoPrn z_94i~)q^0!GGquI7|8G!FW#)Kt*$J*`^ReH2rE3CXjuKk)}D6!ri+sdmjF0DXu7TU z`!MuBKwJ|u%`25^$Qz8W|082f2fEjiYgL}UHfT| z$QBC9FW-DKyBG?ueSzaQ2I500oZcS6jfNM)mV@5r5AXNhJ0<{Vd*}p!q6%!G6eY>j zn370LNus!ns?{}chy(yG79z^Z(u|r)4gd}ADDqUwPx11enPyKSwffDno7_FV= zyrFCuDip)Y^2#*YPOs>tb`J?eQFvv2V_crU^#HS-jth!POYS<34}i8Yp<^S)e=5V^ z2Ft4aU_9-;{J^}(vCE9d>#qI32gq*M^^@il<{HMQ0`3HMTF}N2A9kqx@BwZA?}&X_ zth?K8xmWmQh(s0Pw8tV$pB`Rq+yM(|52)&XP)Pkp=tr z9FbamvkoNGT8cri5uO-d!;P93mkJSk z$7m%nY#`C2b~2}}jRVJfgcHlXXnk*pcb3gRHbx&pvXx=>ir%r;`ikp3f{S5UxT zWy0Yi8_^yNQ`MZ;{z!1`A=Dl2G;uuXLp8o0JKAZkB7HSC)7dP3>z#LG#PQX*=8s0g z;XJO_c+CM7=;zi_f4lQ<_8*fiqZJ*@ybh;fvOPjHWEm$mHyhgInt$f}(B#A}Y+<K)1Q*xOBFronv3HD$g+qPc!@?ub;pQdu%4-p zG;2PQcFTOvYJko?wkZJ2t=bJ0n#q|(L^JX#eq56UTz%hz?=H)(=>}7v|k;1C7=2)sSbrdDJ{Q8}asU8lEVR?vFxCKI24ci&9flGBjN@xAb^)4<(K9=<H0sORBH{gno#@qbx`1ZgdyD`q6$9$+Tjz&7Lh9dt?sJP5o_Pj*_q*RcBm$rq zR#y|#B$FOw6_wNH4>QS($;g8C#?--S_x-3^x&!*qSuO2Y65y{_Icv zFTe9n{=47*e&4DAL?aRAOP~F$@WrcF!{OK8oWcM4)`KvYi|cFuf&Dz&&)(_$o2n_g z{+~qX+W&J4^Of?_KmP0|$@xsWl*#Aa&h5*htX(_d6u>0_PBvg$@zc&vyT89< z#N{}^w&=?|hi>O`0OPXTE?Z9wJrw=Nb371;pxNGTzNg~^mg7{;%R1d?_f+C#0^{c37^6m4vc<6xjN zG&MCeJTp7QVtj@rB*C&=it+k0`H|7$-HR8?TZ4mDMid+ALP1?wUB#8^&J_i#+UK`! z-2$LeX*_#=Zk?Z+S|GOn>Oj)cfP^}em?89DX%D2e9~EP$`n^>gAIM|?$u8c!S${vZ ztrm*KKHVLfj({^-ti9nMWb2(O-Cb|ksWfnOM$*suDxc5mkMQ_p{n<}GwvFTQw7Rh| z0r?_T5n=toG8ixn!n6lz&*{2i#4<=_S%d^$fj)nYA0OLd0)bNB4(wwFD2lRo>ddp~j=(B^8w)|>^JW^c3XuhvJ2N;&LUJi}kQbfd7ESh{xY{lZE1}m^wjF5WWLu*_dNmH>5%GP2P`+m)6Aq}bH zdd-6rnZ*t10^ZmhQ-U8|X@tThGCY(5qobSCe*fa%J@wQb6pgM5gM(Xt_~3);3qSgi zvaqzYt5cz*0Y5RhCd{3WHsbH3717fW6j=m7VQ6fmm0jDEP#SCgiJ9pf8pjIsDggHy zM_lX%48y4$?~(cG*#-Wo&-@nTvN5Gp4B=WWfU5NXl`ke? zvZEtZ7KV=CXips&L6AM;<6FK97yZik_+}#$%jIy|VBUK( z8;tAZe>~t404Ewf9D2usF-z6kwEtnBqbhwzD+u2v1nBtALAFoPQ&(ra@cI2<_JPY_ zXl4w&`s%9(*rAJlV!4JfdubEqz+1!CEJqkW6I-WW-_*u8BcBPZl$KORjDL3 zKV+-6QpvxNRPxJC&0dw%Cbb#Q)|ST}XFNL|U$QOPmSsznL`l2}f*=lpxEp=F_tFnQ z1Kl9NOO(u`KXwa1qtX4k`Ht`R^S!EjaCzaROM^=nqe@-@iY7>D8!QwYXf@G>SXM9?v53`(slBgKMpJdyaP63h8`aSqgicok3et!9DNnQ#q6jYVz3ips^wX9^{D=q!B9{thqNaLGoslY1fRag1P z4R%RhEQ+9jX0GcvScLzeW$9qc~D=rZ5M}UoyfSng9yIm9@6c<;bay*@p zG-Xsm6cDv}g~aIOX@t_OD6P6@XP2>1K+DU^yVtFd?-z2I^tzwd1hInvE7 zI2Q9`MKu>T1LnS7*Lrd{9wxO4OGSFYl(7__u67aEdm2KT#TbyJfl!p}R65lH=Vr#l zwzinq(XkR}a?kwH$ppTHGx*hHvx#~qMJF*6y2IDH;zjCRZZE4TBGTq;c2GRAEDi@EU*ZGyT*k} zm(=Bz6@>EnkebV;Ui<#{Z9`8z&AaUmwwOQ;lG1==LrgK7yi(vODbFEEfgrOWru)f^O4X5j6O0Zf@{7w*Pl0?Mx0pt??#ny2+mnl8mj?;?QPm0^Yl zr}?q5G&?$Uhba`Ctfu_acAG>woN^+(ti1Ps-+-S?OhBxS8_Z~9hhbFAvMMRRN!x4^ zd+}0Q(`G1=FwVmEu(q~_-+JpUIQz{v!plBi@QI_NlR(Hj)o8SfTBq{uE_AMdF0)Du zNqR@-!)(T_&Q6U;O-*5xN|6KryXNu-lS!XCGkXMS_eV>zohFGSOPN@b_&lX3cdawDwY7m)UwxH%;q-&f zw$DEAM_*kz22#lu-SuB@)4Jvx7)iaYh$@%=bGfrfQ~v3mo+Vp%*9z-vP677b6HTPfNkN1C7WO68xr9hNEJl_n*>SFKw#RMl~PXth}T(}%GS^ZE-K_-WFP~I$)~WUQXohnP3eH5 z=tP772x~%2lPiaso0GnQq3-tMCt7*0*U$Ug=RL9*p6TmL*kqUi4o4v`%W_y#F4LKk zUYO74@%3A`)I@kC-FoJsJN7{j0xatS9PglLs41A31~jRZK%nBI-be^kEi%`MZKi}12n}_>zsrP zP#EnG#A(_lPwa0@z922+^0ENoy|H8!we1>3zG7aZ8ZQ)hvja>AZtAmaEJ0YOjRwz^ z-9uKA#Mxvb+LTTvS%BwRr=4OsPNsRALUEirLjib6$m0viwcWk2g(678)9cr-<5YOL z@bLFu3fhk!y@{8W`V>;um1JKaB}pkWfqJ*HOFhN8RPv4}x(MKWzDZtK7|`b3$Y4wB z_2Z*Q*_BuXCR3>$O9owCT~r_tpn5zW9|{IXP%P$W6ouCYI!&%!QT`364J9)>##G;x zhzxVlz(&ufc9k<km9P3MuG1ZKP zy$Z(bO>;wo^B|KMQ8|tz@}d}A5)X{Y0Jd!{sfR|Um>Sf2900?fihHI0T8zfgHceGT zf?$IxY#|{7cs1T3-<&?CF;X}{$1`@Z@!hAUJB+l z!O0>3b{SuM@kP<<$#ER{xV|T0h$y52?M2226^gN#Gz*D$$I|lhJ)MLq#UHnNmD*!> zWpEizhf9spFJnlKzH3-qT*SZps3$^z<%Y)j}-* z&&!U!o}laGF=y`jwbKO~FVeEia|+_`*+q44Kdk2hC@GT+37ZP9^mf>s@mHUEu6@|) zbo|phZ;2N#f4*Z)^0CJrqh5dgb5_OwzI%Kzo zUu{*;VpSXRn#+2?@^b&F@o|6P<(D0Qn4DzZc>8U*6b|obSYk=y)s+>$GBYzsg~NU} zo$@e}$kp{s1%}r$0bhD##Vj@?_McJ-ZP3=S%AFX$c|DN`{`MEYkS1nl$b7q#<{erz zj0LlBU||sehX5we_Ns5?x73;qK&<~f@c`I@yk|5G>=dfuF2n7d=WfmY!x&lT^haSZb?#kOkKVQ`dTC3u3dWPcv#d_DET3?)$T|%RaJ(Jr`X6IFLp*3;KF@X+|F7T)h~<@@`6y)JiXwzoGWt*vEghoc~A3QRN> z!>M#yxfKaVZ$+r+R$4+_tB2Dm>Ol;_mGCnD;L2B&v_q?og^e*cH&@&Ys8ylA1sH2) zQ0vWvHJSxzn1Xy)n`A)MGhnwbnMfos*{Bk~VBuSWf{+>!3-MVYZ(}(w%(r+GFrD#Y zCC3~8?x5z?+%-4u9d*AokO1VhXnj^>o=&c{dHh}7{_dVGcOcOA*~L#tGQb@Z03!nf z?2FGm$ErfECHec`^`W(73rz@s()3?(d9S@2W0g=NKTx~QU_hD5(^l4#?KZT$C>o={ z>GE@71i=YnF@KNU(SG908ISfr?Emi%e;|1PcI0A@Wtmq)p@7QUMyP1CgB9{l8l#%b z|3i?RQ;=q%LUV|2?}+nbW4Bkn{CxR?3m4>2eD_N@9%O99Lz%G$^#%(& zhD87zCg`&(UCBMW7l94S`+c5mOjHTJ7lNmS-39AzPTPC>7MMV2Noa46f`Vv+>2xzq z2!IU;o_hjs2w;gYs;MQ6B(n@cE<7LX$JxAFo}C?41A(x&$+hr9 zzkllSS6-Rr2L=|yg+lxv-+D{F^yQb^637rj)P)NdNWE)3H8n*kmdoU!g1HZtdZ=l_ z-DvjRG!S`fp*5SH-@<`LI+H=a`TYmd;;lQG=MWB^9~zpW<`;)iCf}@wPSq;^y9R@% zT?`k)2ylwRQQ34e49yS7a()D5Qe;xh?(`B!5F98T_uyEpgO0>H=}gu`3QQ6LfLPe| ztm~#GZP?%vbZ32&lw@Q}b};Np>(Baiik20g&gI-FlWvhx=?*!ck85iO2}{};0U(NY zbzyNp5vAiyBGE$Po*1fu#Mej^EV?aWlKfAW9qxjoqdn^E@0qjBx5fa=>{|Io3-xff zmNyG~1r`CY-%)QI)}8!;@dfWm4}eNu*Y&qh>-KifT5zu~U}0C0Dv0^{wUpcn=n&J@ zwLs_dPMFU(F{;WUgM|g?e^{dhpQME5=r8d2dTeof%Hw%Xp^+Lin83eUP`i&3YrZ%#bfMyE^20}rkzMiTOt zWo2!MA_lI&>m%0+}q@uA7K&<~lp^0Swr*(1zmp#a8))UjK!8D6&zOH)ZVAI&a zpw20_08=x{>nBaBBtXRAbjByG#=DesdIhU0SzNZ2o5aTRpw;JP2EAUlE0yj?ncNtg zO!|t1H>Icg0H*cSaUH?BWu_j>1FY;C)B>PJ7G;`{nSNkGNkeDh88@y8!qeb&N8sL;WCWp*p7 zd^K**77jj0Wd**cXW4OL{3coq4wIw|j43h2?z2M1GZw2&P(&a`6cqAKG(R`w<^xM#`8>1Z|CsW z6MX>0Ks&$S)>JQ@&%2FY9=P_tzB?*uUS)>+NC={GUovdJ4Rb5ii$ZciFO=b z?s2uXCeMwIw)c&UIKTetviQk1EZ#n!k7{XYp?oxGRp)1q(D67S09ca!zvS+YDLv7p zsbO_UfYLqF7?C8E#dnabX+ZZ0*vMA0^-%~+&(l~JRC^|X679+I)*ef<)5)DbdbIVs!$UpljoSgNtzopPfQDtM%Xt8B)p%803yEhR)LNww zmw~qS7=QfujrnWe1mAl9Ju#NeT5H{o(Wtjr_OF8qivTzTFfymsIJTtBg9yIan{W+| z++qc>U+C^Wi4>V-lgSn!m$FGSxSV*8s&OH0L@W{PvPVGeu6m#Awah5+7F{wyxqOu> zvvfA=MxjtIl4P44TIz!{cSf0>z^&&8`)+jn>pz)(=lu`!AAkO3VTX5O;ZWe)Tomfh z$5xc-;R0Y7$hNekY`wi9sk?g_c65;XdtQ`IdGA#}(C6FA`SnmO1Q{kTxNu^vO$mnr zqJ!^(xg1HXx@7|3$tRzre)z*5Qp1b$t<>!F7>>m|h#S4G{MTmOFJ8CY>1%x+koE;+ zSg6=+68V~!3N}_%IDI`Z-p{VU@KCBA0GiUBNqeaI#laIt$L{>wpFUx~Ff~QL{r1}^ z7z}Rhw4!8(!KHqv!Z9k5@G($R{t+@Y8*CDqs)x=&8X$#c5ZBQWv!58h$*;!3faRrD(PTKIP`>tg{?rOKxPfl0&ezBEBymgRH5LM z1fhwP!{cGK;`ut)e;vU5reevj7b;Nu5!C6XxccQf3zXsDt&jj!0svP|TMQ3SAw#Qz z6BY!gyc+L-i}QmpwAjszjs_lj>Ir^i^kEoXSd7ff%&rm_TZ&;7633d&?l`BFg@Xcf z?8&xJt1#`!rNqL%0>l_)R5cq@)hKkk!??R=Nt@qjm`;0jCDiPeOjRe+hW)rPxupNB zGQa8{$cD6eRTQ0cD&=3(7xF`sY)3SjE~cQ{QB#R_{J|=Gar65L?zbR zSOkmKf3w9~*R;*Ee#K~`DY{5gbQMzVrP-Sz>lauL zOY73voQn#DdIuhSu=9cEpLcwrtK|4>u*6}wH8oX%+0;h4#Bd=vp-CI7p}0EW%N{)a^X?04uv zljUJqSsZK3ht)w_;f?p0YE9Z@)3zpU<0(Bd@19?Bk39toJHuDkuEGEQ*ME(l=<8p6 z>eT6vS&pajiM1A0lzD(vj#wI)lDxFF#cQ2;XeZdr=D*S2+V86anW4<`Dkw{^j4bmw z67Rw?VwHmE27%5aPdn{byZ_ZI*ZDwiSZ(%2-+AX9{N8)-S-svu#rNOTzqb7A-EE8! zmT-Cakjv$$ci(*%#}*frCpd2T+_7UfL0)jeP`D3JsFWnG-Vb-79~Q%_2#H(NLQ6Sg z7>oeP;IA$$_Df=63?-AKuH4dA&xwSb6UHMh6pOY~v8W$t$}>|;{#TXM8r_O1)}3V) zwaJ-R{GAbXcw~lBAwx}EA4fvI+eYd+;Yz^Su8$jiebFle07)W z2v${+8F51bpsTYJeE)?PxF>siJtI@ogK&0cluc*6%r?wWxO|af;ykWb{q5Q}^YcPZ$Xn~01q<7NMF8x3=xn%Q&-z`ISzXwR93E*8QT!d+#)9g4UtZd3 zr}n#9@oIgmE$n;Tnx4km2IcR*7(VvE85Q&hUb)SG6bl8XEt_rTkiwM`3{{NwX4LN0 zvnp@Y$u{gi)!*Uu8J$eOuiuvX7pm|Q<>u+(07Z`gMdnaqtqmqKJ}I)&!?d>^edvit zn;(7T5!OC_nv=Wx3Tu&wIC1r=l*{LFUJy3A0Sku%xbE8`YC7U(^X0nlw>i<`@}$2f zE7VxHmk_kM=(Ep0!?&(oliR=dz2zq#fBXg&TxrQAi@d4PEcsTUwaspM1jc;^0tAc447U4u%E@AyN!y ztK*DX+k8DoX^{W`rC03rC8@!|*~$6&@IQR^NjfFV(&l$&!GZ-NECS##L8o&YW?k89 zsJi`Gu&@l4PUTk}de^wKHlup$;!K$(ABY7eFiRckC9B9L4Fwm=~48Xva{6W1RsI2{5l zi##Vm+r8-zWxq&l@Sg-Fl@n;nHjG5N+%y<^>D<}Q9``fNfB5)Q;mdEXZK`a-wPdR_ zGk=7NC)ybWk}`UrWV<%IQJbjUipfJ)crk_Sc9Cl9h%&wXbNtBY9VMS{%4^E6!gI1s zQD_^4%&s`A)p;sL51~?UCI&1<49@4=N_eGPiLHjPEU#)`ZJ1*Q$&yWpL^>6g?FaEh zE1MIVXziI)pTp*{L=}$+ZBxkKr=ufo8$WfOmE-VGkY-hMt78sN^tyht|q#FJC!UU`kYhEgu@SHvW1UUcnvx!V9nZJDXs!$L`EQ;dB4YhD!Q6T|# z^jq_Xog41gU)>T!4<|59L)GPqiS6yG)Y`HvH@j1O279n5+e-Zum-|^Y)KQlcHtT-t zm;Gu`Brwda6(T^9dAu6$aJifVPaZ!OIDYD6>(bIP-Ut%0CdrV0UIpp z)p*$Wj$##!y_5#)JkD#vZ1=Q9)BeA?!aJklKhh20d#32alkO@_6;7nHk z0K+)e(-Htswi{tm!2nY*m-DEha1ThO7uz()D*;7S2dLFV z8!HqXG(r?Gw0a{iI6YlSkpLjc|Fnn3`8#5^6DMzS;gv98S&PWt1z2~{dX zMX!Eb@mkLOGo|Wqy8y z&ZIpwt_Du(LLaWUm2SbTU+Eq-j+@1w-h;kVYalTUVV!>IwzX`{Ld%e`|v~c_u7W{MOjb_yNQb84~%`^@I|ApT#p>PCsU@? zCl4EhLIMBt2Op@ZSWI{*lUaK3*s&Yb?A!=W=bCX@G9Y5iy;-8o{Y_gZ00$vQ34$9g zFZGKK+nAb65@mDKWPrp2K%Sl*WmXgIEGb1x8HZH8!39jK2`&-37(1PL5D0{qAPjx_ z+uyDUs|oyoP*@pi?~Ee2!l|t5FrcpHjBnVD<$g(|r-o6D7WNk`0$|?*mu6^Snk$RYl^n|WT718!1uLEJ#kza* z7SpzE`Sd1huR-Q50a#+^L4d0%jRIX+;P>0ubfyVG$iQ@}RS^pgMo}0*k^+{FG#S;a zQHSNdz@!>gj#?+d)bnE8q$5@8Jg+;h{<)1#|EAx8l9vFcv8f-^#GZsGK+6gbLg7A= zAW%xBy=o*JIQzXHqG!JQ@}el@^OwH5oFiTUvTRjRI#k$?6J_WU zT*snbSz~I}jEx?Z{&2BQ0vPN|B;EjIGaj@sKR9@FwCBvfe9hT*`!+o>F#&4{0Gg&L zo@Id@LKj*L4#^xpMkkYAfb~!a{lxkjTh7H$c?y^^#s6y?)RcedYgvQs?JH_m$0G8$ z)7phB4}jf5tvgu5NqD`~VqyQmA^;9L_Nx@NsYk=TLdDN3cNWvF3rykp;XGtLPWEe2xql!h@k3j-w^dY1$L>sG+J64SY<0- z00zsA-kxF&=Q5uLR7lgSiFT6UO7ec1l4Y5D$lrYRzx?N)ee=PGpQ-P^|0${`)LJ-j zD0%+x8MlwRUN?KBZ5F;2kX!&gJD?J6e&G%X%Ien0p0!wA&EGwv~3v&!BO#rS{F;g4`fk4=6tzYx0eU;mqQ>FX;< zu#(wYu&^Uo1b~ITjQcJGV#B{>SR}wc#Lb&G$%a!u`ceFWr=MEu7#PSZ94A7Sl~Fe1 zMg^e>%L+%SB(YJkv>vD>zK!}eHhp8>W8A-C&#C#zI)f^15D!^%4p5JLH;@3v-&ce- zZGSQU!RlHYolN-z?Y$6-be#F|50vMB{71JDLWN70uE_bk&@h(M!U2In?>A8ZSkEZF zwJFc&fwIX3Yk#?=^Vj*Ig+l^B(~#}#T(%uQt`shPbzWrc3Jo#KBbB9bxjsGK9tp5+ z=B~s`0n;&{93obXeJ5*!DB1ARa&HrFFMRiv7doDL@)3S5k(AdF05nZKe)g>WKmPQm zzQW)B&ko_j#Q-CT93foI%0H;Pid60YgaDwi!Y~SOIJ0a^%L*0>G0gK4?XVa4?(UGS z$rZ#CuAHj1mMuPyQVoNO)xPGQsXEtdjP-;#d5`qxBZ&@>kU1QSb||q}o03X-kfM;h z2qpp`(B96!_MPweo@r_66jmYu6kqkz3S^321Qjcb;aLE@PVq0lC*BanlLNm$!i}H2 zcIDD%q5tvsAIN!Gw%q^kB^nqVEF2721i<0Mo)@gP+(2t`vakUN3Gj&!U&$R5 zmj&BW8v&?(N6JxgYpGVATA<|16K9jnzU0}C?mPeKFaF}r$De!(KlS`MURZWeDlpdkk zupgIq7R%cePowSNZ8B(XPR%D%YhVBRt;`qsd?6SL!7iUqvUjvcc~5g#cDr&i%R&yS zG)5)Q2!svor|wdJ)0dF)(olZp{Ly)_H< zfH$6Otx5R6!6E<-8;Xvf<$v}O?(5uRO>_qalarHVL$Oz1T^)byv9-R_r(=b#uCVI! zt%ZWnLzemc08}kn+AE7F znh*dmnf58o-joOdKJ&s$>UaL+&t^HB9bLL~30nlf;Xz5zZs4ABe_BxU**v=Te$g5W zyA4@Us1Gk*EPVF)=jy*78xNg2a(o&=iN%R%N6ASZ8)E;r(K~Q;o-|qC4KeS!RT`9C z>uE>`0LhNiX`j3l>B+Yg2>_z())D{!CK7G(%*+_I8gFA&1uzIvv{Cu5StpF^j2`n| z+{@V{N}HP(QmN$s`Sq_eS8};xslD#bPSMuU9<}*emPNNKtFo*LG2$>nRWi@8R;}~q z+3Zmn+z0e^50{&yk42VL10ZBaKJQiu0gzbh#Im$517MK=n424x?T({tGUekSW=bV^ zLFN2LeY5JBp|_C0n3#*?#KeHSY44Ns7=37Ip~@Y2YG^GLbbI9~@W& zz&-}nr~9G=x3Bd14S}oV??JjP3*RDc-@Z-#&ENbD?r^(vN+J>L(S)W)PMuZ*{R0cq z^fTcZB@Xk z3WCL~))k41+@oE4Cr2UyeD&Hxs=q5PbOxewI2@u7icr*jEW=^p{sUud6!bxD=i83y zaM#^Lt2H?)tAT|>2>@usbak%qr%zo2xs*?tojOVtUFz``^0YL-2B9kzr4;B@REptY z6h~p2k|i6pwA8Dz%rUf@ARYj-=JR5JR@d6$)a+3bYDGM)HnRK|M_f%?h#Fst zy`4sdorE=DA@5Wp;ZB^+v|&kmHf8j8chgTk@(6pbrPVhSj}K9ci^Fs_=VmBWBJ&I( z5frE&_m2!4Bq@1X+Y*$&bNS-zeE9lb{$=*lD_100maU25KEv|JI#{p>fc*}9S00$Q( z7ci=}qph1pzXcLtT}Xl+7Hp9KhZ8iwOjl=wKmEW}YG(SV0$6PxLq$ayP|uYU6z;g+{K`DX+D;a-1x7zu)d5CF9KRJ+H^mDfJqL!ul; zMj;{Zpdw*E&I|37Ec5!|13f+TAHVh*|G3NL&HerV9#R*A!*o99V9LY|P3e`G%oGK# z+4RJJPNR1_5=Yl-?c01mFoap+(X0Q(x{Nfhhq34u|B z0+r9ZT}zkv33&Uz?sb39;yFnt+%F42xRaCAhwBS+T_T$wXV5Fhv&tfz>4Ja zC7E2Ni7({r7&q!sTSOg^L67?{eW>mx)c}yHvg%r*t%;@wo*h5d<2wIv`xn=4rovpUx}+ zhoh3_zPOG-ZN6sN0v!m1ShstDT3zdavDMCMHGrC1t2e~!5o$nJ$bsoleX-L&6GDV2 z4zN&gQn6^)puf}qlYj98_u%Rp|K(R-DOi#mI2P~5+57;LOtpYQ!OoH#JC$>QYWo0H zcVfWhCqk5em1ZE*)fKTnaC(AHtVaGndtc(@#&zcRUY{6XFu+`#lXGwm9-@bGB(JQ) z$6A&gRVlXRva{u^y>V)*Qd@TAk8x@%sY)D2%C0xNj&>zmUMq5J$+FDVMT#OhJcgVZ zVh-H*-RFDh*Np}m4PfpA81|3s0npv(e*N%{@B4knlW!{6QT`7YWQZmC85+WA%+_fF zf@*d~2OSTG0O)LBi)|8EM`?4QwYs2nfDBcc56OSDhvM#)1i*FgD-%;S48g(4Ltt}L z`dKuZ-u(RM3uk`#!}Ukz=RPSe-T6#;@y4Ulm5-i4lECqKOmT|Bl0lMWF4j{HRm_qm zp;iqQ0HD@dOkNHE>mLh6XKkZ3KkT~Y{B{d#)7RhE3vr~JL}a3{C7UxKmM!DB5?GrO z;>p3!e&ZXlC%^se>py+t4f)2>l2{f5C(+Ug1+;Aq2V3FLMn${*wekt#I>#Fa4-p6f z(BGT(%$+I9W20fIw=cyhG6ba}Z)D2@&0B_bEZpg>DzB9NJCy@iQ5ZRu9`MkN^4xP@ z8GqubCx=z_XOa7B8|5!Q{WSNZ?|rXZ`RU&bsPA7H2eJSu+eqIGRRW-LPXs8W(6r3> zdeZFF)GC`yty8Y9vi*BxA2U9_!SwY#z)Q>LNvc7{RMxBt^#S!&YtJO=AX#pZDwn%J zG&+1{ZhmO)rI)-D@gx@vg%B#1JYpz3A+y{xOlSI7LEwq|KW$#etWV2?X}A9C9sp3c z{$s5^5IZ~?<`*8l!Q8nO0g%N0JJZrZLf0Y?1XfdG6?JYl6#~E+j!y&}0^lT~+EE)v z{|@N3rY>cPPzAf3$o4S%TfYXX4D{~4@1SEqEC{M7;^nn9`PDbyEPQh9lc*SrQhkb? zf9#Qk@YKSi(`a+^v=Z7Jmm-m2kWBXTqRg|B!qJtuPy!?Ca>dI=SK?uv{$gECz`_Mo z_f@fFQ`@dR+xm#r1Z2IRS(fT~hQ)|X0=y{lNW~Prwmu6#z5dLj1A|xo>M#E?|G~9u z%W%H zZ3Kho&Y!;lXn0=DrhQOVC@TS59o9^%vVFj9fo7KSDlt|W&JDMB02x(fktlfRWOAGd zZk~ntyaX{$QTf~;8wpRtTy_A;qNcK{Mgl?o8kN#vL#}|8LgK2$-DvK5%zKxsg!_7v ztEF=I_V3q48LRCjkl@%gi^vC&}H%w&M=^=DeT5;@oh^j2tU_f3vDb$$}z5C9Jq+P)K4 z4XJgcQ9~uJ@O|{UZe6^pSrv>2UQ46xA%G##p(vx+z`?V zb{`Z|`8Th?B1B_J>{3F(alzAdUQH&$7@<`)9zP}CzjvNW#0FSZ0SqPy?;wCpItp%h zZ)7u2Ntl7Vs|1Ee!pp^C@ReWwGWlsHQxHV4;UX0RAm~1QdQkBDQzFZXJl19+r0U!> ztUPnmpvHZ`sv=Ssx4@B@5!3hb*+8QU5)xmmNb^lNOb9svkaBnd2fC&v=T(FjXKR-8jtLx&U?u$G>qTJWUO>JH< zliisYYIXmbE{v-#@3`ArfD;qzN-h`51=dQ1QmJXfk0q1poA16`$_x#qr;3H>$f>~? zN+t(UUgqkP0pg~GXif`Y%U=K*E$y&I#~I``q!6Z+e4$5KU!NTIdP6Th{bZVs#0SP= zi7_f3AEE@&WxD>ux(c?tr`5avS7QGW7#@jGk6gHUb$va&^56fP^wGy3Bjm*YA39o& zw$3noqTmn!CkD-w|BmaernGlJT;ndD-yt|1Xb43j=;yD!Ci5(t!HQCt9v=(*@CQHm zbm6I|P6>BzUJ`HLTu>Jm7l0ygu0qMnmlTe~(KDDR|F9ZkPhhnoHS=gOnq0-40WF^U zP2Bf)jVA56wa8cV1fX+SKP{HsXl-p;Tw9xvlgYAH4K}gb3vtos%YAQTBr-fQ971Jn+|K8Gs8Sa-h5KNI8$+2llH%%Jvyk`7 zYipC^7axgz_qk^ybS!a-dG+-XDw!N$MA20(OEYG?GC`UYpP6`x)P+pb2#$>f>4k-B zf4ux&_<#J*pP)jaU`^)h;DE3rgIC9?6Are6Ljar@*qzr7LW?*)?5)%XEh9R901q38 zaFNMotDcB}Wu@O;xhkeh<+2o9$6Pv@xim4odG_qNJ2(;^Q=*YkC7v9BMA(reo)%@E zstApyQf+r5HBsxOu(l!qsKtraA};p^SY0T)VoSAttZda$qryDUib8V;xj-Z`B;LMr zUI~TrSWzO{QE89GaPY8VKXF`!Hehi$cE;g{9oO&PE&t6gUPtqr8=?8pkpM@-F*P0^ z1QoY;0-Xe?29NBZ;n@{`P~U9LYZxSep`FqQLt0a|*-WON%Vs8-T>8A2h|Nl&;3Tan z;AX-*3Rs(da|+9pFc3u{m7-PPBia8a1FVY=K^NbW0FW#5RFY-Oa({n_>FW#NL~=-t zMs*U}P^itTTW-A5Zqy>q-t=Ot5H3)6?=K5oR4hJ3N8^+3iCmN}mHX6kxtEe87mc+i zgSN|AKUh33Od>?vu)?yk?CvUdjSg?}=jLxopL`UHL?SyZyn|gsXI>n6_hExW0GuG0 znaOJtS7&x+>o9bDW}nWiI|m1gR631+_10U`+wZ=cL9$dD?(Gfyr|*CN+LK>2ite*jSJm8F>Ki-9Jxk z47QCQ(vN$z&%y`#gM-Dl@+bN&5J5}HGYGvYpMa0q}7hUp~

+&}4d*oM&<5Cc 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

ch1Snp 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

d_ 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

  • keJc>isgVT&?qcm0e4UjkVXg)uQPj3 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 HO~3s=3h!#z literal 10932 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 delta 279 zcmV+y0qFka2B!j$8Gi!+006pI?LPnj0Blf9R7L;)|5U~J`u_j-{Qm)0oAmqtj@kOz z^8J|I`-|B6ht~R5kG+%I`zf~eztraM`u^bc{`dO)zUlmg)%x%C`E}6wSI77~z4s`y z^XT{f(eM4n?EUff`e@AgO~UxV*5*r_%Uhbj5N)LaQj!wdIe!-b004GLL_t&-)18pX z4udcZ1u-#g(~z+5JN*AY5?>Gw7hsN~k)CYt4dQDFxbs5*_&e@Hj)wtt(&JE<3Eq*D z;_gQLvqXoKv=I*gWqM9C(Tvu0>=?hTbOp9!6k6AF;>f6|S5%jGEE}TA9h)e`Yuiu8 d7)l?o1NFcJg%EAfM$P~L002ovPDHLkV1i>jn#TYD diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 797d452e458972bab9d994556c8305db4c827017..208e4bf370665e5d238bab1bb97f884c72a23185 100644 GIT binary patch delta 2189 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 6ed2d933e1120817fe9182483a228007b18ab6ae..f4b6ce807b3096d6c8cfe0a0de326c8d8707f44a 100644 GIT binary patch literal 3757 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 X5CCfm5NUGE00000NkvXXu0mjfyyS5= delta 435 zcmV;k0Zjg_9l`^U8Gi!+000dlDL?=K0EAFXR7L;)|5U~JDYo_jSDRPH_*uvJ?fL$s z;QQnD{*>GM-ShrilfUZt{^9lhT*&z4_x{-O{Rv#2V9EI}xb^~1iQe@7)8g(7UZ4B@ z|4zgB>+<*9=;^^)>d)H7pzGjuM>Jnezy3`@G2r z?{~a!Fj;`+8Gq^x2Jl;?IEV8)=fG217*|@)CCYgFze-x?IFODUIA>nWKpE+bn~n7; z-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGrXPIdeRE&b2Thd#{MtDK$ zpx*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{HY|nMnXd&JOovdH8X7_?)3B9Mxp zfoOr077*J4z3biW-rm>l%(w$B2)0-Pi6;7z&CR@dGrxWB&3}7)JopEM{~!9Vfev>% zm1lTi=A(p8^zpnLHjHQohb}Z5siWPAMDU?Pr;Ac%B`<8wj>Q-7@tB?IVBZ?G9>R0x zVZ~d&h2rXFRXy=QP=pYuR6HeRnqI}3aRCls!*s~Rd{#tzaW;o?cKOn_6^BFRCL!d$ zp$z!3*SlkRFn_ZC&oF9Du)~(r0F1~GN+_Oi-f-8_LqbqtZ{%&iER9(l)s_wh9u!(3 zNhSS2b|&Qz{!()7ts%IkC7C)AOD3_);Xu=6_tX^#uF8$ZS8)aw*xrSz{@PBD(p?Y^ zZ5lFkn%kXO9!*r;${Ppip3x(>e-lv;4dXa(j?0z}Tz}#%`+5KlMo0R)^E?dZ1c$N&;rW|^X0Edp+E2YX zurwxwuz%63d_6g;Pi3lf(;S(bp1x2`CSwOxwQ)dby2Gh-hQq-!Ld%a~^Z0ec2%@+S z7P!S1YzXlOVtSovn&5G#bJ92p#Vj>?VC1X$sU~8_ln(~la1hS~F1D z+@Nfh3{hZ5j?q{dt2MuHLx_8(d%Z#k_q&<%TjagkOHW%@; zlBN+~;PqusEq|C+N(~(bhA1-EsMu@2g3*MnbUr$BDi`Ehvq{}IL^dE zUT0UCF=i}2u4z9hiUO&XN0v)gqlrXJw>~>8k?Fm*p`hb?Fv>Jh`fzBTgdNdk6 zxx?dmuP7X4T?p6=Y+u)P^&Pj%`F~MOFi>+^)7tuNGemLhYQ(Ktdo57JfK10;XP-yj zy+71DU~~p;_@$a!F-nofEK>EQY|dHblBY(C@*voty5;M=00tER6tAxPS%#M= zPp;3?q6LGUJt)+~gyd@4vS6C;>RX}6Mu;h5daLO{MURcJfFt^CY2U*_`hU4k*}YoR z3iMPeb>Gk%V5_j#1_C8@9#35bMDNasXj#;1B(sqQ>=3gS=_Mx0LWN5#fRn;q2Tm1BX_B=53 eVab07`Ui{Qd9;a2@uvU)00{s|MNUMnLSTYj$G({W delta 266 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 Xh5ic5tYtNc00000NkvXXu0mjf0t(U{ delta 447 zcmV;w0YLuU8_ole8Gi!+007oyx*7lg0G3cpR7L;)|5U~J0au$Tw)URh`@-w}Xw3Np zS)Ix4{k7)&ujKrh-TO(x_}20L&+q+}+xr1ilg8}*yXgGl_5RcF{f*iBEV%Z~-t4>5 ziGV;=={^- z?sLQGb)?A{hr$_!z8HbH7kH=vM0x-*R~t>;jsO4v^GQTOR7l6|(&r9>FcgO2dg?%> z;=sK?5%;?Pn^T7LL?Y$@5u?06NuIR*0?Yf$Hf5Afk+lM<^ch*jvO$sU*m9J?JI7eI zGFV6+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9R%3*Q+)t%S!MU_`id^@& zY{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&p6kME1_Z%?`+u)^el0!1<0sd p?Eyu!OMLDifi)An*I;?S-wj=m4RYIt!kPd8002ovPDHLkV1k6I^l1P9 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 321773cd857a8a0f0c9c7d3dc3f5ff4fb298dc10..f474548fc83ad6417d27c0f2a23f94daae4b6287 100644 GIT binary patch literal 6239 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 Zxpx7IC@PekH?;r&002ovPDHLkV1l|fYo7oB diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 797d452e458972bab9d994556c8305db4c827017..208e4bf370665e5d238bab1bb97f884c72a23185 100644 GIT binary patch delta 2189 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 502f463a9bc882b461c96aadf492d1729e49e725..2843a7c7fedc7f0a4947ee678d3228977b05875c 100644 GIT binary patch literal 5505 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 D-hjt< delta 572 zcmV-C0>k}*E6N0r8Gi!+006nq0-pc?0H{z*R7L;)|5U~JDYo_jSDXF*|5nEMy6F5^ z$M}8I`uzU?*Yf=uXr;5|{0m;6_Wb|A>ik^D_|)+I$?g3CSDK^3+eX0mD!2CP`2NN0 z{dLg!a?km&%iyTt`yiax0acdp`~T(l{$a`ZF1YpsRg(cvjDG_-U$Er-fz#Bw>2W$eUI#iU z)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G!hkE!s;%oku3;IwG3U^2k zw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn_j%}l|2+O?a>_7qq7W zmx(qtA2nV^tZlLpy_#$U%ZNx5;$`0L&dZ!@e7rFXPGAOup%q`|03hpdtXsPP0000< KMNUMnLSTa90yQZB diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 0ec303439225b78712f49115768196d8d76f6790..533094ef7019cbc5b9cd61db778d0fa141b1af87 100644 GIT binary patch literal 9326 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..133f7244f1ee629addc851a35e541e63f82c603e GIT binary patch literal 3038 zcmV<43nBE0P)F^SR{<3dEFz*Tmbao%lwHvZqO!V* zJVX$5Jst!fJdV1!%6eSo<(~2=v`s@^lguPD$xM=&ok^NDEoo^>Jd)x&Qq4 z|L*<%|Ni$z3;s_;`@eRetKN8= zQ+JXJ*F>UGxvR(QG9V>ZD>VVrkGmHj_uR-4}Byj zKHe#cJI^r;-4)|sGLW7WmA}G7E*?V%AHo8x5oVj~hG!}soC#5bKxp(J1dOi0u*y%0 zinc80Bddot1^rh3({Uwgd2+h;OB(}lGAnh`HnIKnKC2F&$9(Wg|gJNYHCBBpzbW!^Ia?T{xB51Eh38TikWr;S!lIA zHt@V}R3?b@;4%W`orR9q=LMO?E@wU4mYt(6m-{FHFIF0f4VB%BpPgLioQK3EB)P)r z?52F*L^DHI6gU=@JDsb#3`kG2Ie%d=RFSn)0rFknYqx#wqxXz5nuo|n3aS&Eb}Ai4 zD&B^coMzJjF@7+=cW=wE<0qzr7F1Qi%<??&QHv7-tWjp>(>nIA4@r!AS(r_WEv9rmAR)VmjDCJ`0) zm{9n>QnPu{>0r>)mW`}Ha&g@3&>#+#3}cPPyK#@-l;TFy5HS-G-Y83(AD86^uQM8Z zr6D$iZgL@HIfG*j?`14l<9<)clD$$C-z+0dGmUJ>nwh(`f{4u^jgM?4h#jg?cP!@h zh@!t;K&DVs8K%>LI*#*I3qtL5k|=AmoN`fd6_N52iISbQXTQ7=MQ=#In>nFS&XS|k zVUxkry$thJH!0EcQ3T9JNaBK|C<%gmBZggX(rO4(h!*X!Xx+%P}@vH(mZd#L7Ib!LAbv!z&*0CEhN0Gnp>9Stm$L(rQ~T{=$~?c! z>6(+!YQwXf*@eGBX@@(%sI3g4eTq5eUwpiGR^GKYWHG_NI;P zvWC~{*ix3gUhTh?q6Vzx_>B&ZFWzOdY!OhDz2D`YP3!gUw1c@lVsa0Bk{lo zJpUPNLDY)^Nd~h*i)l6I9xp2>8eb)d=gRAxD>HR^*=>14ov!g~9XU^}<0G&BNMOfW z+A*3b&F!+(|9d|j1dym`DKp&67qA!}{E2>eQdyo{EVSHT8AU zw6dj&G%|KP$uX7jgIAacVJyj9YDHFUZh4jp1%RajKM zFDCAPJ{WkTz@GE;PvP*XVLtEV9l4Ikb@AA5j@fPB9$?u+t0-#aEI+;A8%OTJ!}YG} z#b!%6;t3!sBc39u1#@VB#avwf#C?I_%uh+`vopbf_bkhLzsSw~dmTh-;_-yM1H$(Q zn5pXHZg-vPMGvMogHqL6L0S-&VN_MMaN>{fBAgXcUUd`kFo5} zC<4)&E#_`LAn3J4hFcB>gWqt15MK_!ik%d>O$DJE*%l7(*xRjeugWW06hi8=CmD9( z1|zZljGy+V2b&v<&EZ8cuC~|l+$$u8;px7S95=GjsgA4&qBuSVBI9EkEiEb3LX`v$ z6nc#)EKW|x5Zu_Ga0Fa~ z;RAHa#w$q)nBXI_0mGoZq&uQ)WQxCt3`|t=RV4vPzCb|EF`0~ji?$!gCN8|GkRYsp zP~6?v1KIpv}|bMXO&|ILv%l zP`GJwBs#lUA*HmZ`TTPazvz*-UFVVIA@;d@4f+Q#E=puxCLjq3`E5WQT;Z8qZ0I><7Be z067^7IbSR+T)rd{T>~=D*y?zS-$T#TOsp%+bIzyfr@i4Y-yWN09M@NvElWq9u9=ER zEqhbd@vBzz^M~u}Pj(p)RaSaDmA6{WcMSFiN2CKkJ=Yp#Wv0~B&%cv0PI@)hv1V%` zzV)=6lNJeX5RC2G$!;v~SNq;3iGT zgSL8|q=4|)E!FoY;uF<z>%07*qoM6N<$f~&F9vj6}9 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6764feca50a02f51c7c090019c2a9794a75ae0 GIT binary patch literal 7362 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 UeS*+`Y!XWLhmvHixJl^$0QUV;OaK4? literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..263d2fef5e2f7f3db5fd95418fdf2bce2dfe7b6f GIT binary patch literal 3575 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index 0ec303439225b78712f49115768196d8d76f6790..533094ef7019cbc5b9cd61db778d0fa141b1af87 100644 GIT binary patch literal 9326 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index e9f5fea27c705180eb716271f41b582e76dcbd90..036e85cca8d3819871baf9ea5de70a4bb6ebce87 100644 GIT binary patch literal 16541 zcmc&+!>%w4jJ>w;UE8*8+qP}nwr$(CZQHgr|2)KG7R91TS8Y#wl19kOiorr*LID5( zz)FYM8$F{7D)N9`g@V=0s9g~~ z`UIss$axFtg`^*e??_#x=8uVIQqeudABNTtgoF{G3V;d?0qO`MmHFalo3m_9H?QWD z*ouyQ$K1EJu4b-pY=0kZ83};U)aHWmD{jEl_5IoP2%CYVpwI<0=8FIC?iB9f7~K2cajymmmP)ci{HhJ2a*Ri=(olag3uA zfOy9e;NjrRy&R7{1}Os~`u(0}rYZByR*5`d60#9<<`bH6WBL4Y*Mb?H4rNUq*Sxzv zfio%uI?tqQ;UXn|zDCpmJ!xwnA#rsTHUqT+#WxbWB>(TR_;h$40;6vnM8k(1^#Y`MkcNg+tT>^p(dH_{cT`Miv(OBND7vI^rht*Yhki;5oiHWJ^ za;jrJLMQgW8Nap-ptIGd7pt`yr|~HpQnL|CF^=3EY$6h6!9%`LK9F7^3qa&g0ss;} z=x$crF;vn-z1Y1J5s_8=@9}XAfM}TFiWR9(cy1r#$>tJ1ogQyOM#e=!YutZ=M(>^; z6KCyRa@pcb0n>l4(TXQLj`9YJli}K^;?dFBh{bgP>c7D(pq1a>!h=o5V|0blT3G1i z+&C=umd_VO$eb>nF0SwQK4I54t>5U*`>h?Bi|P+;B+Xe_SofFny(e3=HM%do_76NS zw>>!Ix$?)Q^5f(r0vsP^tUzi3lbq0pCEOprHYfGpQlo+2=NgciV#H7TY?aBhaBGF$b>r!y|=@zfP#rhHD{H4s0u#}qea zXU9G(7I(d9E9>`#>6FDbzyuB+___=Ko*j!U2U*Y&D`GTgyK)wN?{kt_3T$o8^8BoB z6XD~2U$$Db+MHij@6E#dKnuD$x|YcH{`BG0n~ht11bT54qB+_$j|4wnRo|oCCp@<#-P3R6K=qy%r9$-=7} z*rB~m9$WDFs-^dt{^|LhuE|7Qfy>0soAthXH;zrxxo(|1Gm3WuCgz9WCu5a$8bnj@ zt|$nanIc@lDjcHaq}i=eJ@1!g`F!Vs7mdN};rX_YciYtPF=GgJbv75azQg~{A4RcH z)wFP8VCDWJr-t2P5xkJ@$MmkploT>TSOOtMl-?eI)$R{(cQ0>8&x`5x9n*@#;5r%` zGFZE;yqQCi37n5QowH+o`RMj9_m29OL3if-cHO-*(rw|6_q>B<8yc0U)S+^+cMsBBQ!9O zl&5nCmZxmU6$Q6pMqtbbaPzU=OS#-q!RQND5=sWMrswrMpLaUyd@%_629GnCkBXCA zGeQj>JUM7Dd77ZlhPTzgWo7(Bw+GokWqwF zi*+RM6vwE;R<*zJkHpbVzV@aEOS|!Wcx>PMdiy)L0q1B!Mn=9WKX3^Xl{lBv&At6~ z_)Y;{4GC$j?$wr^aVL$BK1WEGoQ$*yK>EQ^=B_V|FRd3m@+q&z4n~bj_@xzhBjJ_U zTTj>M+VwgUof{suvs~!(6euEko@3fW=keGJ;87J3VGVo$_dx#BNWge-a8lJPiN2V% z{+Ty-&8!5L{|1UkRNyXh?{=>xBj|Ka6i|_%7(cH=ak-M5ovAR-E^Zwh(*An6QWJ|s zUp+XHQsW&TpIPA+u)+kvL@n_9xEK2Kui<)CM>AxEzBQ>d{oTj}fE40B0I6N$e|8aX z#x{yXfaJ8Y(1fp984kv8!j!SgoRmQyL{dP|M_f5cR%{1 zy4Z*r`dToDz`6gnA9LutgHkk@p!Su>b=SF=KEdN0NrH4V>H>Tt$N5zfQjo65(cyi* zbCYB+bRJe4AUH$8;o4PXw)(Y~lSfd>!0oi&V1#(~++f$+YrTbdS1bAy= z2;c%P)5HGUs?+2Bk@0>tM+tUyv5=ryL$M>R<=8YfuLY)rz63eMi5j+A~l3`$$~HMS*hy6WAR84%1HGYJVYDoC;v{FLxdbghFp;hv;Q|f;_;EKW;u= zq)ONG;yh8O%P_Bc^i!w^|GD*-7takAE{_!LF|A-&#Do+-;@IdNO)%Ri>wIFQl~sfS zxcgPRxdk3}W`++J1trt0b&|o*@DSq25iUC#YV7VHK&i}kdts_-iC&a%_G@*9t-4nG zrb0jbDe%xN@yM0o#QSOmK|A@-o8vVnaTj1BFAzTOpv)UJt$Z&sYRkvA-`{t@Y}PpQ zBJm0YHg~>El@|WG;WX>S(Snhe(Jx;3n!H=qx*uLk4zT#)z8iCG zqG~AD=WATw-U$}KYG-?UwU@oW<4K2BFVnbaiP9JbQqO4skpPp@b@Gz9O_}p4 zX?bc3UlfnmtepIwZMCAphD|}4`SOg7oS5`A_oHr|+k8HF_hBxh$ji6m)6cR-S9C=M z4(!-lGmy!@8~LYwylSrFWwwTQ*M*6L@geS0=Omn(y@{CSW|@?&O-a|MCnwFtnyv3= zU>}rKq=Yrtce_WRFg6;5s6O&3#qB^vWmeo9L|Hhvc-N+Fqh`kLOtTd`VSztp7)EDDlcrT2r_DMH!b*6waG$v!o6Ph;{;d#H=THz7qvJlbmXx-O9g8oCS ziPSH8%az|iteYYi0&wgMwJ?$%8B zi_=IYRZ=MI%SX9b-Ukn%+^iDcq*F1dlLmdZM}m&PobTipId!-YXAD#x<-X-$Wlio* z;1NWoE8^DpSh{f)jMqL{7$D!L26p6ZR;dmqmN>nvWx#>F21?$S4&-u@BPuQk6VzAHmPk6qfLO{c|e_tW={5D4Ie?QVXQEX?1d12tey7QIC9+_ zCbRooWOH-f9MAjD z8@!d4ln)UN5pc}z%h#q-lj%S%m*0=<3>mhAYN5xa|F^x^0kS3oz$^`|j;G;xeEs;i z_>;0e7&EzGAD4|~*8$>KpW@?E$h0BY<4~;$Xr@1 z_QzbKM1WgqE_dq&FI!oNMEExKJ}1P&TFu~+t6AVo1aJpv}aaeZn` zdp$Oa(Ac5aaE3>pe({DOn@fnCG^|G^*nH%&-;04Q4F z10PGeBNYL4%?txlP8Ty}cj4 zlw_wIn};gVEOhL9H>^?KDJQ^8 z8gsl~g1wt`Q!)Y{0tQ5ogC4nJh4X4ABgcq1&4Fg1Tsol*ffKULi{^(`$OlzJc&=e+ z(;6mh==>eZKN_{Gm*$JM7Ch>XZ(MRw03tFOU%#)SKpJc9w67XMDG{sXeiA!+6@}); zVi`w&=2B{xOmSLxiBu*M=uiNT#9DjJ4HJkKRjtsKj0dS$lHS}vtt2G7@x(h9{IzhB z_7BHVM6!>Q_g&`>cZWr-AaE}mPLIcK4p|*6W(Yw!%;UXEpXZN=W4i=R7MCRnC324k zNk@iB6voii%L*@y4fDB%aM7d8D%f#eI*2MJVQG4lnQ@o!Li8tbOMwZ(&5T5Y^0jIk zy$ulmka-ZNolO}v`i5qYZD)Du3SvbJXo~pbRnE?r=ry8cy;|MS^0B<4iv0Y10Q?rH z)Oi%~-?Qnt?KYdQMa?OB0D>oRi+|xH3Tahpy014oUJn~lXjd!awQho4&DIo8yl%fd z2K1sTSNU;aaJ;u)t z9JTEpuR%8o3cdzDA>jwgmpxJ8Hj5=N|Lw1811V9O#;DcaizT!^*Q-(7L{eswx=L-s_=04JLH9>$20 zAk69}H|=b9%0wUI!&ECjJir;C6eSu}QBg3N*9R^uEVQerU<%Q&n?a?*0Sg{_Y&mhwoG;&AWW`wd1N8Z*lUif56q;3Lqw&xH#HoY!){&!3R#2JW; zdp~4hF)^ct3i<;pPt{Zd1+=%ezGNyRY#2-r8zHqtXO%+M$=F{O)9rYJ9k!B^l_^b+ z7g6&)T%Kw!(eD>PEMBU+vzlNhLEg}aTzwEDwJG-r3rH2F=1{QusP00yef~Ylg{1o&f0CfhK6(SxY zgujl)+uBOY^ql#v;n2Pk??M>JN!N;eUk_A%_Gvwa}4qdHyJ^4#}W@(E3py%Dpnnruq350hAL^09A ztdr2htMH&9GtIh6_j^fBGE@}lGtPIF_ymBezTqE02oGL33BMz?=8Xh>?nfon(_Jas z8JGjt!MWsNN;tM<(L`zd+aiO>_zuls**l_p5}=I3CWDA}AZ%Tln8u>pyC&4+3`PR( zLWg#ulL>v3_9T_{L`P*r%(*Dhz4HM46-qHe-Z0x)tz}nke@qh<(dJlsr2(B4E@=w^$=-LEl6sN+#xs z4T1fDW2Xjb0Osw%q%$iD2s&BpzAB2Ero3c13H40%3ACIw*cUI1{dfCD(~itB!ck!k z!G<4T1iVRsW+N!;j>`V>gAN6{<9hKIvJuu_@AqZKV$_hxB&>8I4Dr&s zRFw4@ye^DBw~r@@%g@$4hU3u^(iEAj^qP)x%uq$JLBUv)ZP_x>hh4)-7M9zNy%36& zC8@+Z5k4tehmqT^uOA*}CUO^^Y%_lmvY#mQd<6|iRU>H*@Eg5R^s%dh+XBVchg5Y zqT7zS5LhYwlaa29qzrcMk1xh3XeX!y@p~JitvDnVnwL>vg7zs= ziGcHx8lLo=q(0hub+M(Eb>>NpVMbEerfDfVe10?y`J19oTr}xg3@ls)CEqB$PZx)~ z-d7jtR+Pgu+*H-Y6rT+1{ty|p!VPy|nEs2tz=b;i=<-{y*Xe9_^XWxnt?GE3%PGMl z>%1SH}I?^KqCAUaL1-T2_i{TR2>Dxk#9=&@}Jk3Cmcp z?LR;xi`iv`gr@&9`+&50`;JTn-}2 zxo^iE7Y`#A_hCA~pLFbgu-}O{pPKNZTBg57*Tpz|cPeSAnhDR!p`>itUY^0*#sq>I2E8~c@pfXAOGt=i zW|r9uG4~zT07SY7Y*M27&}~mBG>joi1c)Tk;Q{`M+=hlqR?L_owdL!We$~DLXx>yO z@qkc~S>=MX{)WLlrtMqewUH1|f}EHb=Hd$B)iGkXfELIz`HmWZqpw)&X2A2gJYMsm zrn1r5VAr46%y&3Q=fARy2omCfe;{^epBZ=37J#Vrj> zL>Yo(QnW|JN~!X1H_IZ@U9W8^ySfedji(Y?QM-9(>>hu=Hmm8=#RA6$r)+NS>GUq2 zjXP$tWwbBXua!TyK6I1ssL%v^*r9pUTFCMvBbKf&ioVz^@gjH(TH~0DlK$-;4d2=r zt-P&IhYR9h7}9W(v-Sb_wsYu6*Yx~C5)(#{u&7Wv6Zr>XQnfl>wH~IGRVlc9z=9N_ z^XTp7sxhER-HU$8LhuScEailoeBSNpede2@>{zBj5>j4_h* z?Fj?&MvybfC>l|_l8xapPEXrRL}JuZ&27**O-5(1CK3&bn1ZC0pdGi!Mx)-CZdazW zUNoB1&AiA=^OOA%VyQ_cCY56=U3A34P4NB<0RaK_;+9QuzZiIbEt3H6-DtzICd4>q zR{(nzQhs|bsXXU{9`|?vpNU>AwRLlBMutXwhlHNqx}3lAglfq&=Zh;$=XFG&#oPjB z0HKL*-D5H^6szEvQ_04J)47qSgwdb(xHSYjn)!#xPS7H7Cc*Jwd2%GT>)raRXt%O_BHjCJ&jQS@ErESM`1hAByDV4nSPrB1HvAm zu|aPtgbCJcZFV02a+9Y;l_82&F3?Wk1j zSfir#vi-$ztD3oRJiA`5P=Wm=)~%y*HLmL9d+SEw<5oajI6Y*payU(+X*Roqa8B<$ zJiu*W;N|vx4eUXJE3JEqYqaQO=cbt*Dtouv+PH8~Cs@Rh`1&o8vh__^4iNAMw;}e< za+?ywaxulPk$8ALD&zKUV+z3Wu3{Jh%vsp%A!9)JWLa*4*MreYK_M^lk2^cv?qqQy zDt~|;Is*;4BJ(hXXJt*5)-Ro(Bdeo#G=jijIT27vI#1w)b0!VJV0p)eMZcP8%$}qy z!75>}?7vz6HE6~-fH50Kdljeis{^gMHyt7&MfO7%%@rYwg(1TS>CNS`ZXF)xR^l|Z zT63^g+T~3}QmJ_=c?%+7Fs59*ZT2!c7O$~|G0MoUlhE1a(;JCvYh&7vfwI~$7}|0O z!Y59NjYltBu zsbJ_ceP!-QyZ&{kJd~t27_kPE*ZBT2nDb?wpdOvuo8$BUUSlqlpK>xc+P%sz4L$_) zwvUq*bsUKt!OK6JW#($zgJyvWkp5REr5Vr4~Vu5Ov#{eJv_!|C=X zqf!{n=_Oy^h&3(Fp_kFC@D^J%fk;U~p)KZc`JgzxQUhJBt(DVk;T>N?G&g7*$SWID zwF0?aw~od2-0swT9Xd&@sn1Pl>FNrp`2DU#W|fUr1fbMmBd+18`e2WGc*geg?BjpX z=Iiyf-p~z$BbbyX7ryxM@)^2*Uea0B(|hj}i>B*^vD%)hwFH;ypD=;XG;0gnJ6mt2 zd_4Vo-fZ>=q9No}sK5vX$VjGIGCv{zo?G}63s|^=IrsC7(EK@#GdPggpS{6clY*f( zOh4eG+91PHp^euUks-bv4AH#9Mo4r1QTSYM@LLxX?w*(v)u(Erq;1YQ+Wb<PI0AOn)5jxjcy zefP69L;iZ?vh#UW6d(6I1Z1!>67PnLP|}Rfm>yL($Pu1lO-}i_r}1wx=S`(WFt^sd z)rNKHIjJW1*wbp2{dPuHb>vX+kv=EFl^Yng~D7pxm0kGn7xqd|9`qXNY=w1+L(^W~4 zk@B!juDPApC<+BovaDn{JLA|MbwZ;N^0_)*UZkh83eEE2Bke2f^zBuK#B3fZ@$u=M z;CbmxNJQdb<9++mv2@#N>N+ih7Azpc5RJc^PUF+RIg$9@t>N-~TD$%MGB_nSdR!`% zg_6HSN9O>ETK-dQCt7N@KUq~zfC=wwHkHcbEigMen(6FonZOa~ciy|<+=NNPuZ`Kd zMTAWAg4m)}0sGx%nJ82SdtByi^ve+oDHy}`vL z`k~d%9Kj5F*T(4W{Yn}Xw5r8~6fzNV+j2mrTrfgzQz(&Zd`*76-B99b5YpO%-hj6= zwVY}+YT)gpCL(gjP_5a+Woq2QF4tQ>P=2PejL`-BAO@L5^lz6TRkC%%yt?7~r3N@n zT5OaYrHatiN{b57?=j3u)BLFr(x}Lk(H{I{Bq$eh-u5SOg_}ck38EH7JKS|K@wAU8 zsP=dgf?mEfG?Acy>}Zk;hwvvbJN#Ga=%|IzQxgm}U79$UsZn*Zu)pIfFRfAC36ltA zu3N>t#N?t#k@FAx_laF1kn-V`V{2??MoxWJf9N2*7#3jK`|AVoFV~07#Aoe!c|ei| z1=(qQwmSG^7lsKUJ!yUsg&mia;GR>7)1Hpkhx6%Y&9wS)YO4>Zhd?vInmK57+$@SZT zEX_*x0;Be@A^d6R)7^73DE(ZsO(Yl>bF5HOn1#CUsym~B`{T6lt<~OFFTty?WZmT* zog4C8*KX}s{xCw^A>!a^CTEZvFr9Q0ySqkUJ4*8#w_4e*?q^cmW$3&!JuqarTuDX5 z*(AG%2Bynf;~k_TI7#e3j3eH426bZ%Jy&K@s@mQFGen~u@TW!(Mn5oM>kI*aN~p1R zSMpES?|pb3boCMPN&v5LWh+~hr6Xi zp3Ro)wZ{@?GoJ<(*+19>1fqgm*$3BVy}3Wmdx%I?GbL4>07H0UjtA|vH0bELy-F=I zgb_vviM2x@yBq--3hK1Iqy0NOH9;Z38@zU}V;{VDK^MaLeJ@Hx1l7Ar%WN8*?PFYz zufplJ4gZ?@YU^uoT2^NiB!}|@q)7`sa#2NE$^;Zog5PlRPFo()2^{|Qmy*aS?(%i# z)fk=PW|hMtG;FMSet0-|Yz@A@ba4>Yikw}{Hoi7KhTkB{6doS+pQ!j$Xm*SY6$ayb z^Wk*H0COK6dlrA_)ZW9xrrZ8-#CGN7#coN|wHtgK9w#nbUJX6^`QpDBJZ+z!m=!uP z?2muY013!Qlx)}H1s99Nr~;+X7D~4+NW9RX62^!md)Lu_(dF0eDS%1furQDxnj`er zmHfoFm%b;H?J-HDeg`fulV65E;Ra~SD2H6F4Gll6(byg4f}*387a!U>nhI0d+Pg&r zePLY3<0^&nDIw-A;Ke3iu9xS`w9LjPuEp!_ z&%-BkVem1631y)WRYD2=`kHgR1ZG6B$`BwoVb8Z~21K;xU-4{$Cq2nJ}a^AKC5Wfl<8$y^e@&GmJR&(YiC|PX*G1q9KVIew^ zaW$9U0ZC*_B3y1gm*ZTvAS@xvYpfg|Aiu;&owbJWE^X>X!=%p-=cn{H`s;PXN;xlp zP4G+TOh!qr_k3{hxXf>`(0c1=f6Aw8bfy#lgarXHGKg6BMeW-b52ovz|1y=W=9hxg z!OXX(bBYBhg@nj_gXe{DM4EJA8^2L!#AXp@NGi}gKk__2jwO&KWaTT@&=Q{Ly-9Jn zq=5Yj+FEI(#l_1N2c@0wE_rOm=C;C>Qv?hosFx0pxxU2WutP&})qfxs$*qU$_kRw; zqDoB6!Na(LC#wCyCix$h+SO43Fi~i*op9gCL9|<2VChn(o|6UWh;Z7aOXsy!CyA)2 zyy!orLw%2fi_YEO$q6%=-)()#ivFpX!I17J2;QEjgG)+U$J^JrBMaP}-vbz%sko{S zsd5a92MpVV!NABo{aVbPLC4^7kry)o(o)5u>7X#{KpZGmt$vlQZ_u^SPPd({+5}%` zx}$M9f6o-VR>xhg%hQr(E7pc+=1foapGYDaQee1-&^z$r5j6h8;-?T2v(Yh_|Iu5# z*g^%OEPKQq`R97)tCHb!@>oysea}8_wN?D%_VexP*WtT^d>4r2{H?xws!$Y%5sQl>QLDq` zK0onO0A96?OtM~cvZ)4$O)|D9dUoMJa(y~u`NTRt`GW!d*E0UlXVtb8EihV39o0vd zI>nNv*|H6vm`KT0%}|bAN~tp%1YR<|&DM4veF%wx_Ivaf5?J@IaYAatQ3HydLY5xz z>g}fQh|y?t-eH1`&xwZi(SIiEY}Cu$HUkxx+eMn)!! zR7v_Nb!nHJqyu?!!Xl*J0K{flBtJ&W5=KO9q|0T!!}!fMDFa(EJEkw+qs{M6p-MDP zbC;B?i!PqRd0}=I+!PPy!_9?_Fv&m>mdVUoXcda5>#g$rJXjjifywp|c_^kZz4>U2 zN_a0^IosImZ4#;PHwujYlfXDry}3r`y>hymWo1PVgLPw*Ht%iLt8L=G5wGk^!L3~+#i8Z$?^?CeOb1{1}*Xx0EgBrrc9-ZH^sLt zW6w5vI`0XKSsLycjFRWAmzI^kW?&-5=M$UZq*l#F@g0b^CdipHFgf8O~)*Jr$B`8NJ z64TcaDMX8+h@8DOChJe+EY+hJ{Ppe(d}n*Jz7P3NaI?p2er6=45TMHeH0B1`8Z5EJ zBY27^77S;PyQDrMV4sjejYwEf5G61^A~tGicS;;h4KyH8kxn*)lFNrxH7_-H)|FFE zPL5wU(MdvX8WMrGU@TqICUXNOfO&Bo2dtz*JTb&sddsRhgeg8m@NaK7#b3n1_@ELu z^y^U)MFU2cd><8MfjAuVCqWXSwdQR+kAR7hSV~;^Kw+>L7KZTLiAV}CKr%p zk^qWuKY$RZFx(#-Xwdmi*+orm4$u*1+Td@GjT4P$Wyi12_hq;0k3m{~94>_{KDS;@{KxF1Z%HhG;)s~iq8pSlq9i84~(s=SkGLUJU4#-kP zOD1>~GKTo0=D2IwYvXZ#h}}M5dF~HDTNlO;9M2od9!elmtcOycgU7gi9f(7(Y z6TjaK8iRE=`f${KZcZO)Xry6*g8!2DZ1%}ONQ8uKqg`M4ny4sySEuzgBaQyr!} z`HFub9FGcQ5+8Wtg<|i&0RWqmxHxvH9SyG;KCyaHxsD~nRq1=XLAEUti-tMzR&M$E z+%w;COOWelNBDEqtFOZi*{2 zOdtZoKqBzve%~)$S-qY4`}M4s?^7k%@gV$jjq%YCus^qCG`+~E4S+$jky(jec_||G z3I-($?Df{4Mc&j*34S-X4O55<=<#o(w9e7DV!HO!tgmm!%&4DlH#RJ-A+l!@$t{Y&$>=`$8Tyf3z+>y;os$0 zYJlbUsQl$SRl5Ztbk4;BUG-e*pHJzDP6e9tYMK4mgArSrTsAfVG<=r-6dNc-8t0uL zrpN64h3K(vw*!sI?rlgE+}v(Guj)Mx6yv7eX~`Wwq|>gt{r&ZcZBJQfL_IA^ zpDKLX!gsf*>?1^Z2X8S+{*r7X7W(H_NpeJ9a&3b7OiCi2cGa26f2aCi+{?GqEFU6T zZTH~4Q0NETJ;RuE^&bC&`Fil{Gm z>Bi2?b3pcwwNjupk?}U8yubRNGapZySO9=7To^toi`^B1Pl(x_(Qe$zn+mMDCnBM@NeG#_%N4)>vH7H`Ac(VXW8?c5D~9k zdbYpS(#Az>N|}NzAXVn=+U{*jlNM_FjR6Ccc$G%puvFBe7mRXOP$)uCsCB;O!wx3 z$3N-}g7SFzMw=8Bms(Q`$n)%Zh%JnEUz*^h8u=~wLp0_9*Fdo6e(ByG0|f;tD%|7Z zhDSZRn1Im{^=Yddg3F#q+vAO&)VHSWU`T4wc=AfRV8bM9|BM?rd#ir`{hEY?ww7*a z*ic=B&+VdatCZUwC2FO_uY1inh!_Hvv`)es^!dJ278cS|wL~wqgSf1+uf$#;K}<<> z%=PV=^T44Z?N$YvXNA2R$iGmjE25mPVA&jBU_X{#ve?#qv|!Ohod~>X$mfpS?j@AE zETxP%wLu=E(?ylVOIx$T~3mDR+RRq#W4B6Zn%8+4!6t3H*vUeSDNn%~!q9m#BsZ zXGd$g1Y(jcCFXslx#O{jzb$tAp%Q%E2c_MHp`X0PrDwr2SvrUqdbY>&UE;IbC}KA| z7w}|$^#)vU9ifwuL^@ex*y6{gZ7vp@WGqloRiW{D_KSW>wx%{i@^yr?QnEV}vq$VR z6Qt!^(#aqd2t_E-aWXe%714V8RKHVc)+v+A^-e@Ex<8~qP2gUHob{||rW}^fb zHA6xpF3SeLeuzsIOu)x2;R)12I6cQJZtwHA2fmvXjdEFt9s+0E-=fR@*_=KNkO2e1 zf0elotS#pd2a$!P;D15?#s~$un_6jRKHdubOTyxE%_{h*)`l9c3A~S~MA}QHh4Dcf zY3A2I8MF6|&BqlZz2)j<@?Qf9*Z{^QuH#LU-~E`g^!1p^%kX!xAT+9~$#o7OL~li} z<8?Z_O<(8CMzCsz=Aw((Dd=E}%n`;%q_qD%W7dGsVLhH^psFdovU(0_hVCL@9@r}w z+*`xfy{jP|aX$nU1(OxI#{1GlvIXZ+K&_6mO-o5y2r*wCCjF5ttX*iI*UCdD8_Yg88NpC#9t(kfIaPjO` zzE|MTQdO0(i$VlY(|{4-*Dd1U)yINd23qPoF7H~+Y@X*3iOuRIWOi0vXxem!<;}&r za!paiZVZojNOl;_Cl8a~VJFlUW6wJub$lOhKjCzpg!OzqU-n<179jpQo$uEa+|7M| z*6jIhNjhlsdCKVr(~8pMHT}yPs7bJ?qMR=M!RRsC=el#BZfViM&U+0Ez4DAc@jde9 z?aXbQW2G9CkQ_G8Y?qPQWqov#Ut3?4&AA2B?yD^|D6~4qDL_2UwQGgg~oK^IdTNo}TOXNYhE4T_Efohl~3vV2p@?JTrt6S`7nR}d*6eN`IZI8vB-P%~?8RzJ2 zhbAAgFi$@d-XVURsS_iu_!^u1)ZCT!>y&Bl{Ika8`(3h$h*F)88DvM$ac=b{s(OHV^!RGZ+N!ai&B(2$@1*lf$^`Y#hA;o+fEtslG7jX!YT z54g%fL8|pk%8}6UD2`b|loQX&%~BSdtXJIA4*~wi=3}!~+a-y{R^s~8j$>Ow7+gpz zk7F^`g5uh3gF>}EF@LaVObFCg>x`a;W~Xu$Uzx}`O#xzQ2<}cIyJNCkRXN`%KrIJW zgy*tdBf0w{;Zz8)QFV14NwNg@AW^EWyHEc({obuso7pa8gq+OU#SJPdCMXQ%^-0p# zJ#gFK@420hs;SK&c`Tqtc@?Um(}*a@Ihj3BNZ_*qe4I$ZSgb`!h>H_{9b}H0x;g_l zjn8)g?M~q~BV*_hy)JOnv&6S@yJuHzQY`P7VXUKL7U{6pr_eb^he{P*Q(1Q#UH$pP z+yXpqF`-BS>5V$@{zh4vh`&-=1aeg5nFdH0Z0fk3S~0GWyTIDwM}vU8wSb3~_;jNp zVM59GQIVW41mx~sF`k9#IZFZJA`_#fD$IR$Q<=_|`_&lejs3p_sgu<)Nvi%=Z~}|1 zO@7jtaJ*{4itKf{+-65eIL-RhLf$$@*V*YTW)8;cPml42?JvI(5>g8muqf(=u{~@Y z?;7ecnR+`WsN5J_Lm!%+lw>UJ8wZb@kxYpNL?8#2Tj|_xgY(kA8}r9FW~S%dd58nZ zhd0~rFFn2Ije1|c3soSDakKH{Z=Tt}BuPfz9kE4A;?hY!IbhV_Hrv}k0c0iOIsH_R zwkDO+osT>rc0XD0FzgF8DY#lrJg3FYCcDAOm;gDfCO;)o*<|)C$u3%qYo5!G2cx1A zv!bvf+nVrU@fK96vPEf~HG`#sLsNWwwxCjcawi9gmp+uLHs2-$Fah)63NPOe7Q^Rs z0iL)&26!AdV!wQ0PE@IxD>HjiwF(P(W$w$P!TSk}7rk1* z`>C^uwaQ-mE0?iivAC`M6}3mWJWd_)wnnuBN2|JrY~w*tHl@j zqT6=#^GX%VYt8~2I!u8RF1P;Z$mkqA9{2d}jbSz4rE_Ff_0shv^lvb9q?>yY5wlID zYOHq!?{MkF>xMGdtnuMI9&GU(dH)q5YsKV|U!uYrjhrV0<{*km-|_3)H|Z0t=6`G^MV^6Z@iH=U%1@7R=-f!eBmR zPF9}YjTga8~^#}%`up3^J|qiVZt=d?+5R*C?rD0CLL^fSgG4gFe-HcNqS z-FOXXd=3)q3y|ti*A_?-y)2fmr?^5RAUor8?Ero%dQ3s0>dod3`k67a^VbC;H!a~D zbTdk_mgJ>rqoyeTYB1%s1tyRjdeQge5j0G_IT(~&WLjoHhEvxY+>ke{dV7)K1-+LJ z>DB^zNi+*Z6zKx8;gxYphr#t&fWs zb4)}P4FR3}YBI4zt`dwpxAl32%?%E(c9WN$s}!7ynmYwV3<5GTu(zS1@89|y-Gdia z7Ha7Mfs(Y9rF4CYX+9zM6th66wAy~Ng8~-;CQE)iAKlHd^WCGCkSd*&FF)3wIT|{t;oh zt!CfEtDn_?9J#4h&|il`($QJ~Vq_ZJ zbqVsuK%z~~qbKv(bCDs)3Dr0|+zLnra%upmF(M6(xSavx;A*d#M*q^E;&7abWbYt& zP_)-!hUnS5pMy#H6MK!&yc3Sk&)IEutKoC>{O$DLf_pbYj8j6y=lj(W8X=?mFu02AgZ z`ESP)X|xzmHa`98m(uuc3}lO>Uf*a)bkWF#-W_J?>4 zuYpbSvLCN@;I9E9s*x6$Z_c)&H{0crU2VV2mY9)Hbl7Z>gqD`*_z|*9MMLxH7F8MP zn)3rvwfi$Iy#G)rmGYN%Z#P%s|E<80mfnE7UG2i5plvYBN!sv> zgpicirW#7gN|=vsS0kxwrZBCtlDtjjp^lhs&$2mPryDJ9-df1ZlLOb5oIB&e;t&?J z_~+;28`~$)dExQ6>UOW!!)|+503&OLh?^sdf+oxpMne%6h@hhi3r5jXh6n#MP)2~H s87#*~(hOD*AZ~^z3jDte`~yE(u@ow1Rhj+o?Erv;h^%m}pnl;0070esfdBvi delta 1669 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index 84ac32ae7d989f82d5e46a60405adcc8279e8001..57d9a73beb6a36f0049d62e855c571749d565c55 100644 GIT binary patch literal 5185 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 8953cba09064923c5daf2d37e7c3c836ccdd794b..09f6152c9bbded9f2dcebae2683c9d2a0eca4611 100644 GIT binary patch literal 13158 zcmb`OQ*$L;u!f_FZ5xw`?VSl{V%x@!ZQHhO+qUgwV(i#H-}w#aTy*zMSJ$e(=vC`^ zdxgu({y~DrhX(@#Lz4I_s`y__`(J~F{?FqMkdlFcu`x)93MspRgLGhiE03<^w7U|} z%S1#M7{XxD{o;uA)pROpQ~X;n+kFX z4%eq{qLYSV%hxd=PlLOJ$LN8E}tHE z(FS;j5LJ~mQ7&2X%p1u*0$o`-5y}KLaZvF)rQM5;5J>(1E2I=gSA6C@kvg`anB*n&0z{(U0`@ zvO0FHe@s_aY*_j-1<{LHlt%}ZAcEswG5eD4w}4Y)ELa~Hp+ck>5-#45REPXNGT{XC zMYrjkE}YFj9mIbti=d>P4nv#osqok((6NGqyrLX3Jv#iD{oC;k7Z6Rr7oxs2IBym$ zecM3KY}cb#Ax!&jo$(s+R!zIL?ty@g5cboPmwEpV_=?GQ5JPRJBxi^R?(1c$t0H6eFzE) zpRKj?%X7tfp;|#fg=WU+D7YM9|40lmgT`v*^8(eYyX^#%EKpA2X$EX_o@k_QLjq-!C`be>(>ny>EPjVG#;&6bMNjEHM+%9gNse-{gd&XjqM zVHsAY&Q%uT{l79H-yU@S^*XJ?WCk*R>#A#S!71)~@UK7-9G+LaOcbxaE6rr>mQ__W z^i7inT`nHtLCO>(D1fxcO4&#|U2A76mfruEM&Y)*NPUCbUUy*oG!CL$81uJ4y*r(; z*7nj+f?ANI36k7=Wz(4Cb?^Wfr^f31h2jH6Qld*?c6TTOE&U9GS61 z{UGbkxKwP$&$Xkmf6vK}mbCp6RWq`TRWOF17Y1|XkuSymzsu+2KE336u=W5>BQR`U zDOVr&``b@4<@UGgXjcE$>=`%V?s{W9pJ%Yq85`VPR!ZW9Fb=trT%_4WrPvYx`m(l@ zw!_G;HNaK*+8>de-JVo0@(LE^Edq%^dVXxEL8HJ;YWHeQm)kpA>}8JQE{4eF29cSy z^>tckaN+18R0kd*@`f{xSJ=O&BohG;@5MMXAT4f-x5!BNdmNqc@T-Rdx!525E=*~y z9ur@KotT*9fBP5mFm$YnolPA$<`a)Xa^qe;nVlG~%om8j*)(m+1HbQfc%}|sny$8w zjZcn%8#KcsLZvioJ&#Op(mW3PG>%AOs2^*{hMk|;8Yir~fF^ZX9G*>;s#9DP0z0(Smm0||cNws;tCHYDVx>;pvSa)Y(X2ix& zVe7qi?20EOqn>7nj!o*9xn@}?62$Pzhw@ zNSC%3bXz6z7KkN69t}FVAdE;G?*h~AgrWTxa7^|4nk!XrD4h$DJ$;I*EmgvmZQ52m z77>^CA@;S%*j`r1zvGq1*4K$Q;I+5u*j6c)@LfYyk7*Pud?Q|a%9`g7GY11wlaomW zoMNTD{S+lkJ5>tdhviSsLRZfTJoo>O3W51|7M8n2z|cPX*~|-@BVFg&3v4Qw)z@xDRAd%;$d$f90)h; zcXYP3{dt-KP2n^>)60pmo&+P~v>Z24pKj_}nhqO=UmJI~z$CT+)ua3`0r3hBrIDS^ z?<`iv8Ig#aHcmO@7WX3p?VU$N&M`8tykYAB*g((Jhv-A65^dX2xkn<7a}ee#00ZN? z)CGRHcM;Vp|72`uk_qaXeee)H*>rHg7B0>X#YJoK=S&=4s6rx?%8>xzut~Y)`nSz( zIGv9f-DXDULFvcxD0rKY?M@o2``t5OG9^a4Y#wkz=;Yq)uF;M}jelt661LFX7tK-V zHA9Ae$*e!|I|>dG4DZt#jYz;UF?5swcwOqVz4CzznH`}2q|*_%DY5Q5U12#5PEu*3HDf1UO#RDo@iC&|^M@7uUns7ZaVL*Vc8>HFe{g2i~}ofrhC)zxy0kCtmQN9$o(A0&j2L#prg&6{2fhrkc9C z708O6AT~*VEf=WeJT2Rc_TIkd+hA3!E}}Jd-mN8Y|Ner}<9{EhS1Y85rBzaVGjfD961A32;1DrERYm~4%YEbH`g&d=42I5r z*3`X3)!)x)^D72;uW!0Hn#iXSkl~_hnbNGL3puaY^{qEnY{O7>S=VUaZ`OFPMyDDc z><@~(8_jsQMZJ35B~=suQ`3tt=Rh|l&27DDRYWeLcvnf@gw*!qdt9itzOk9;KFN!06j{JtOL{s{6to;pW73z50_-VqpF3fF$_iU^ zvso6GFSF-XtKN?ctmHLek!j;e$x!#8q_1nd9R0QJF{mX8SS93@nu>cjPP{In*TafP3&;GHU`{@%pS$3iyc*-r*51qP@W<^n<2gS5{8V8lAKF4 zBy??UI{co)X3T%^fWc4-MpvcXd)V$ka5n!0OUQBV1*72J+3cY5T4aI_ODT!*{*~Rj zqf@(pYFB$*Q)2tY?niifbWD$tsGvtiIRB*w&)4PXQ#Lgt8&zDEb|Pd@_qz&CB?}~M zo8Jr#IR~c5%1R2(F5R%|*D9LZI}S`};H8N+XAm+KE@PM4k!fw>z+VRQ;79}-Lc7Gj ziFD1C+t%+AiReu|K9gWp-IO5uzT|7r6*Q2o;rB|{Ywy$jy%y8(&a*X!v9uW7{(-=8 z3?YxDo`FG9e8RiD)6f2rjZODoH6iZJ8PM{Ftzy3C#)`|X-JZ4U>XkmrF~a1jbE5?7 z>FLst9UOw+nR20s&X=xqGceEenwyP>yGB1gT{$Frno#^`67^@}4iOwWU`7$&TH;I$ zQ?ay--S*xlg2MGK+uX?ZCsTEOuxO~ympopb`BD7#Av`Ea~Z`m(aJ`j$G|+7Mw`uVu&hs_h1tGs&0) z#1&gx2YM0huRk2=L@e)(5cwk}X8E|W2omdzbT2skg23zw(klc+cJ!c zvm-#lG&v27i`#vVxy#}qV>OK4)0l?{lfskgFO`(!oO`>OkCA`ki_)+BS(kEFA)>%% znwJ-3FIIMKJSruC)ct*4B%$RB^D=z5I>*agpxzA%&(m-h!xOE-N*za`9`JlZw$-U? z)-zU7HjaG0^+;ahQP?s=@2YaYh+?h}s(AqZ!w~O$a^=%fPn+9uXMykc$>68P2{E z-}`3IJefT?>fH zKdbx|MQbVP2Ek5D*)OUCRdkT103R)()J+=2I`6AIf3&#zQN=AG>NfCf=#hE2uhK5d z(dw?PhY{e{KW6xTY>V?;rIM1E)x9E1f)M@Re$tar=)4%eIv$ojpy2xO*PNICoF@N3 zpB6o$INsA~Mn#h?h1_)#1|3n_!WVx_cVgXh4tFZv_>r?B&_ZnSd<4O7t0$AP#M?#W z^Rn)N=Iq#ocPE(8sR|aIdS1frH$$PooAA#3@-`d#^VReS`gA1czLg&&lA)l``__kp zo)Q@NbQ4i^v0)$DW=%7jSvq%QZtaEoLPYqRGH1=Y zx@svWM@+-EnJ=(PHxB^G!uXqYFa0g?>(rU8>idVoX9EVc3Np%~kZh#sggC|3$y2kq zAmxez6R_Z)qNGDINDH28ki5BRF8gl1egxD(U6+Lx)@b-)-L&Wophg~+vS<7=Gkg(Y z%Xm#H=Zjsr6g5RnElt{s~P0wL07%?)G4IB>0Kb6kHpe2Q{o*5ojMP#?axevmNW zt8%SKX|MmeZ1}%s$ED1)De4kzgqt?Ocvn_H2tc=|yK8Ag!80((WHq|Z z#-waLUpJm0KaEXl37%A7`P*wKZD2-_amF`S$!vmrX~+WtSoI+p@=aSY99 z45Ie9hJ9-nsAU>$H%ljA>=JdQlas4- z`};Kd*GdrJ3OIx;CZhA*6CNF?avIKXIvVmfCF_@)SCpyLKV>2HY0!;gcOoQ|6jdpy zybX0VEP_KrVTW=<(@f}OmKZMCJ^($b{K zu)fc)qM|OjE<`X=G19dRm8l$1%MQ}=SKP2<`en}WYbzv1=_|Ne@;cnL46S9&~fn5 z&C!ZgQTxuxR-4<;IVl*&@TBJ@vJ=&)9YBW2TPQbMp~g9J@2R)17wF_2`#NL0C@%l{ z+C2Kz90iA!=l*wfM?Pmlsv7OW8~U6oPLhOcV^^>G$-7#&S;B?Rrwr8~w1%5MpG$u& zj-&%^&fs+0Q!0rYo+4O6^GiN}VS-L`pTjZce$CTWPuGp>6$_5$=ynAUVvA zODbwt(@6)EHW~MHOEF!zPET{nMaZd-hc*o)bZ$6muPqe?IsYb~Kiuw0_m*aS7L^1J z7yHzBGT4a54lqd+N2?6SQv9jr&2;%To!CC4K9+K*jX>MVjWUK2k+<@u{Y5MOK=Y_+ zDqbz2RknhpylDhl8#?UF zugfGKU)B_Do*y53TwuKxWtWMR3(*eM;*u8Z3@Q3jCsXyJy;tDB*cvk!%FDm^pG9n_ z!`x)(6R^yrtwC*0w5EeYw58BG2wM5oRSkW*lo}c+u}GnVj5?V-j;(U4Pc$D(9C$K~ zKb#+Dzj6G`Z`)_12mxTwFc&&Z(b11-*E}Osq~xrDyC*!xVZjfoTk=^8mRg$y46f*! zMWOf<74h*-%wPl;^TJyyhsZ)Rj5WpYu{Jg~q-6QdM%BvJ**v?4hB`xUs#SmDB9+!^ zdb|O5bhN#8G_(?)=M&3a3G+rZPLbU_GL;I=Y5H{qTOntQNCfBvX!yVGvJ0G2ysuCM zmj(`^lpP8LA?VnXu~rVeO$P+OUJ5k|_M){|1jW_0x=j>x4H*6<`P6#SR^oWdtsfI$ z(wCtdA>66fUF~-OEp+_7#ych*!NIH!o~zX~t5R2%)92rqx&LiEM~(pvrZY!qqKsV7 z;h>SCzTrvR>@6vIGZ~3oU7uAkK&CpE)8$Y%1|E)>m4weyv&4@Y;!o+W|BaKv6#BQb zgQ7z{KuyKQ`Oy|%!=K)-S5n@$e_YuA7B!doa)7HJDRCZhy^483$s=A=r>xXggp-p3 zFy5y0T}fVCYykeQ_2#4mJ$bKD;72%1d^~Us&JI>RC1t&8c|fKI%xdK1!+WNxf16P! zW6YB;J}asJEltg11HY75pl51gTFgj*e=4Q8s3%rKb9tKu*jn**a$F)}ya*zc1eBuU zGyatb+_uV#<)qr0-7-8;4+hChY9?njL1n$Vuh3R8XF0&hhuvZ`tY1@QAZ+%oH1=kW+q6WT@` zhi>F3Y(|zCNU0_4_yNSCPMP-nYYh?lIg{fHB zJp4qscIHbNC!tdU&#Qk%v`kj!tfRQ(vDLNjPC`{VO*l=CI6wS)n~KH^N|a)$(7*_v zrY3Yl@Kjd2J!KtYiT_a)*f3JHacapvOJYwPBAAQOT{#yoduT5`QkHKkXtY!opY2gP zozxvRn$t6MX$=m}TEVSo_dE>p?d(|87L{138Jo7F2Hc|6E!H)IrI9hrfA7VkFimCs zW9?~haCSE_$)w39H^8p0Nyp55*o+uzYRZVS00>T@^nBp;QiJ7Wf8rOfXR(?}M|~Vu z8>l}<)HlKN7Uv^(k~Jy!7sIHPn7w_TtjML=$$DJAse4^^`+Uy4>-45rBn>q~i~z|A z{Ni2u8OfJd`w)4Vj8NlPODk_3!<&d`zzqd;z^K zYhgyaJ7I|C_kjw5*72of^>rM4_j*dx$=B*D%393b61;M%x8Wj!_}9%pD#111EWYro zzi+cZjn{mp{B5HjKjbBG{4>71^QBT#ViW9Qva(BXB>4AIN+C0E zq34e``)Z>d&0@243N^D#Oo*NpL|^8InjSJr7ZzG$>|Hm%KEu#*-9DUONle2E2%uv| zVOeC3jiWbCw7@oGnbT+fMU0~aJB|FL_$RJt=ziYi9=bh~s~1{~lQQO(-uspRPpa;r zf(+K0`?pXNtDIO2fv2I1%aax;GRjVrXzkhKklgCCmLqW)T3Iy<=qwy{vx564K!{B7 zDDZcIZ4KXgic?`z6hJ94VRvxl9^%?UCG&oU#mGCp6{CWBTh`6&Yfs3tx4ay%#KgBM zGQg1uCDTHts_MOYqpkpfzixdf(Mxi2cE%}i1rc|c)TO*RhW+-*oT*ml6D%<=kdpwLl&mV*t zEzaWdU~bX+w$Wq!Ozhr+^S#7G$`E{6*`yoLr`c}&c?=ym4(^I>8=Jv-d+^-oAcug^ zx9Gc!KMnbosx+Hpr`&2&BTro^==|x?s5;??KPb(5xLEN_Pea4JP#=m=R?Q(*qeinU zA!(^d@(|e(pK`(Rui)bG0%0gH#IoZl_Se*pz_T1Wwf%37se_h>r_1~<Z} z&ASS5NN~Q#Q=zEy^SRi%7RGy|c12P^h*PAzD>c7C0!NjY zZuF~_l^u-S1CF8XtEOO?Ja^F{^`HLA=Xb+`GadM^u~l1D)CgFtB4Y)&`hDeK$_J3= zfo~5AA2z_}KfMI?_w|Y9Z*%>=GR>}Osancw#!JJA6&p$f;OeA4y2ahr68a`bKW^Q9 zh3wn`P$I8u*DsGU1Z?L+<#~DJBF{R^D~l#vKfIFX=P5W8!;ilP#Q2WIw0$8rXYoy2 z%O5ykE@kWd70;NrS?ROLHI)pG3g!_DeMcf@v$-9Lj!w$UeN)16%D+5VObiS90f+xqMaP#IX;tkgyynJlc;n<{%$RJxHQ(sY=HYG^(J zK^>2(*tL(5-5h%T9P8c(7$qd>fCH&(M>8%?6_?NmN!hRMkvC5Zi*}?Mcj+v?L2=@+ zHal4+XdgdKj6KLc0ylqmuW#Ojr4PTo)Q~F+YilH*c=S>Fnr+T?oi0)K1Xj*H-+PdGd3lxe^bSoqZ3VNekeIh$dN{ScTqcsr zF;caagD4=gswK_}UNa2^AFiFuSVP2USk2^=r+gGPs6lk;!E_iqqobTOZmy-`=gToX zHWbs+ka92-nM#GL@K0E>DWOOeP<7>}Mf>oT#pLuEt!P9^WzSMS0GzVngj7 zy>2_j$&r^q;PD%*5d@D(ona_gd5CuK&F&qoYm>$VvS! z%?I)D@nOJ!JIZOKsA$H2G?HD15Bnrlc(fna-m_(yPJ57ksn#bdu_wp3gjk5uww%Q% z|NXX!x%N;V^^gr!)^5Q;LjF zD*@;v_V=bbdn3`4$1u=@aq}|q{}KP>_koPrkLPQg48^jhvWm-Hrs54rjeoY*x4Wg0 zlX_J92cZ(}Diw7|;C#EwkDwgqW$&Tq+TE}%o3V&*YmMR7MDggHf;PM(I7-D!?_3SO z7VTc2A${m(&EL-T3`&znzxbaMSN&e=|N4yZilJgEj*+Mj9O;`p<|v4SOkX+D_#j_h znsl`5Y$(Qkt2j<@k}@!yH{vxin%j)VL=pT4PF7wKplA80;)z|F8?$Sv@~M-Ow5`r_ zYLk+?n~a9S1gC6PQujg#tV4|@p05+G`3k!WbdW~3sYjw3R(L!tPC#e>} zAFTwC@Xy1FxS>v-aTAp@F`rTbZ=aX!AYoUSP&zBa!yIUm7qP zW@^Xd7PL;MM7<8)(I_od9{M0(s5nSODE{nvxfrdisj72}zzoW?g_5eYr^My6DM(G* z+uKuZBpF337S!0=`Gko{PE9@Vy!b?BU}AzV{_nlz$Si@7i3eUJRNVZ_Hox9JI-!l0 zef5Hp`$e)bbfB&4gv$Z9-qP9edWAd6WE^HBZQoe<1Oi0Qi)&;^4F?}OHe?I!LOryJ zYhq&3H!>p5t>lHpMvhd61E;#2d4v&WXlRIAP6h3Q?L*D9{<0ejufAWVTmiGNjyZ&! z=EZ{_@YA-SVJN0+`UxHfO2`hfR{iVi>dFT7I2h6h5uYGfA6?U9JTSm?NK5Oaza|Fi zXOUKbu()gJ)K)%-A0m^0QZu52te|x`#Vh_Ajn5nBmP`Q(4QYMc$ZaN9+_Xm3RY`H* zZFVX?h*EfST4B)T=P5;afR0M*7LA}1B!mJX{I&>~V63>U@p2q7dDSrZ1Gx|>fCL^4 z)8WksPV^k#_}*Xi4X_lh*EDmlPPP zpEE)KG-6kRrpHr*0H0rniK{D*Lq&s}Qe^h9B7M^ngxR3kw-pNDd(`#4AM%7GOKlCA z*FjAGCsxbkiQEdI)7&V<%VRDN@jDFlWfXd)wC*#Gnv3$PG$mlGrJBPQGXM!-mnRX) zP8=FZyl>wqWi@5zA^_|`K}71Mg#I(IwqIm+ws_ zRm0p#xl|8uY_N8=adKgzc{8)sl++u%-AS`_vkmaBeJ(76c3NJ?K&(b42VrzGuf@E0 zGmUZy3J}a47U>)1iI5ZS*F4F3hJITKpQ4w_W-e_XjYEn;Lh8Ki?Wm=d-*mXM>@h@})2la%~)) z#m)I9T2B!#Ld^Nrv?Fb}pMW%$MVOc&{?h``?CqCdjk*JpxX6!L?8&u=?uo$p-`6=v z?FJ_gMo6~Z8Thjn%t;q$spKG_e(~@;`sJ=z`o^oNYP7u8poSuoHhnn^?{Mx`rk~Dn zzy3jUwqpak50c=ncBeoiU|m$Kr0Qk-$&bD>X##acpwNZ=4V4E}gMn>mNZ)^TAG>jd z(Rp!X3@YHRVi>2!#6sxSVRv}Z6U@Dn;qoXT5DG;H$s2r?BO$wpsfrChL0Jjgn#2Fa zSy*7D=w6-G{qL3>Km4^6q2;VPcH}U!bT?CVcHr%^-77OPDsQsUX1W6v(bFDTueXJ! z*s=OTYePsRSvRz_)NzBy=9^CJbw+Up`BZ}KXM~<(cY%jiU&6@570FU901m`5Fg7+8 z>e`8E{SLlltqwuuS9vt!WQV&gF!11Wo;?QesKD}99nOWPo!nL*O8L#LV z(ViRD{OJMZOZ8SbXD%`R*`$jFHD8b%Q8&D?xv6#C!XOn)Ozh?$FE3xX@)Fv=UQUyA zXbfo~>mnB*hj+od3G!s8B!9}6%H8kgIvctbhi=(~A(E}jjU}2+2LP{58kzK76vbJj z1X{Ec;7nOvAmxs^0%3E0GIl_EJ};B+3`Ac`*oWzI*;v zl>B|E?94w+oq_=SgK$M(c8_yn`@=nbs781kUf*S2+r-NYCt)9AAv|Gjfy=LT?qH$p z>ME|YxU4TP73jGiU*-1hA-&XE54oL_NJ-s>(4mfjnj(wMH*r&R*rXerG9#@UV>FCF z_w-Ix{HO6kkj$W`ea0RO4jaivhIDLm39VplkLN{10mP**taYA4CtGXI$!9DvSWVSW zU;dlL)ZNtBU!S~8X!}*$&j|oV%@=gIw&+iYOP>4zF?7 z5+_NlmBLHzfgvOgGCtv{&&dpb51x4y_YVg+hUimVrfF`OwT6ZXhqL&?uN9+F>+hnX z!-KZNPND`Y9j&@?vymVa$2;G~uqa}BG>>ow3LK{TA$#>YDW~Rzt~cx8_4BH&E@Yj` z%>SfxTvb0`d{(E$R`~Q-v1&>228u|d{yfy3ba8ZqMP&M+ z$L^f5-L`Ny3@lD~oIvo6P9f|6nE!mNgJ2G>YdXw|9XV#$g@gocirf~a z-Tm_(4fUHpS(*KPC;mN#wIT$ar#}R?@o)hlCLGP=`CkM%i!_ksRsw`};`--*VsEDK z78iVVaUBgemVtC(42az_$UVa5n3(cvSBTcgOclkR+}r|%N)?V4;D%dGjb_g8HL(X|*37Ia-fXt7ra=mW9eySy z$40rd%*`r1Xd^q=|9WKcs-3TUg2?4?uj>}PjG-vM0xfS`(~SY`bVZ!eb$E!xGaCE6 z_9>wF-$CPgf7t@$9&RNP>0@S*85lRmU|P`siT+XFda^E7Gni7wqaSu3ftadw6hh*YQ4qyV5hs4&=G62kJevkkMrAv`d~$>(QFp6&6SC` zgDGqu7=??}c$U;0%{((k4A!zbzWSCPHr0|w-Fy((0iEp|42kBQ0De5N*A2VLa#?KG z$BqN%uQ62OjCMwOv5;!LpVmg2g@HR{sDZC`pQV}$2Rrqcx*dI>wSpa#J66NM+&F;L z{dFFnZi}G)gvV~$!AHoF|L7d^wUP+Q$8wN6I3^=Mn}~3pLS9s?z8rzrTq`58a|buv68KGj*;c8xC*%a!_x3e>kt8R7Xv{dC9b1DdylG zz*Kzh!oMiU_2PvG5;7-A)OJ1`2yD!n7}Kve*?#Y7rXjLrVdEA_6tkLy4PVGHX{+yP zD4@{{j8UsAH$*Q3QT#X@M>A@K!^W-Hj)-h$ky6OEei$7VR1YJYLWdBZq69;^DBl?Otp^eRD27T(t3w#YYf}zL#U_LWPuuOqP~opiZ_T`jyt_{qn@y2 z=LXkC!_#oGS~%Q(kNs4foRQ&8Q6OUuQ>MO-Jg=1bApsdRz ze|PMNfrWh7VvEL%%0LdMRq#t^Vvu}!`0VKDj)>^h=+PKuv4j%8UtaIp=#)Yy2i&K7 z{k(aL<{(ewlZ@4DnuW77-~~zKJ_oONi+8I1b%qH1 z8zDua7B+lFP^kBA0aQBZr@cFt2md!hS}L;vJ}DNzzBtI4FZzS1^Ua=dmMJud_(OB? zR_AqGNlyHVF?6O36Bo)S5hbZS65;c+P`3B;Sa!GZRpV;5$)@fv(`=L$8*LjUd(-JkFO9)ZN<~CP@ zbdJZAW(;y#ITcC1KdY*=NtyrEWfz%)qJ7h&3o8GEjoYXCzs{!<;RbX=B{nO z9ZHSI{t;glt|S?W>LYblr0tRTHH{NF{7Q>9f4{qb&pDgCt;bjMI4`<}j)Gm+mlgtM zb5E!ad5)Z<*XqTwQC58ClGouOFVI9aiV~nUzA*efqkxc3t__`7^q%4-?QLk`WczkX=KPFTtoy6)>n)X1?^`>3A~d>JXm2Q zbmH|TF;kz1w`{B`G;s(4|EM6#j~~m)EzQe+S?o&jZ)$c|&TLmxlk82^7VT~qV58u& zgl8+4EAGMm_S6&JxYosh0$!lZ>gSm$Oao4`YGA&nAC3^Zj6O?b`Z;0+Sh81;oX*8W zP0Rqhu-e+rrmiS5Myd711wt#o(m1+>Xr1C!TAJ9Koba`3lOI4Yx2$)H@Ks#;$el-i z*1+>vP2^3wBk!J4f=7y$*5pM}e=_wSaESfC{_4Z33PFg}!K32_sKoW5Rs}$X=wneb gLskBtQtkv%z|W7fl=4Ua`#%FFAtozYBdj0rKhC(o^8f$< delta 1217 zcmV;y1U~!bX37bW8Gi!+001u>&=UXv0SHh`R7L;)|5U~JDYo_jSDRDC`1<|-SjPDL z{{Q{{{{H{}09Kk-#rR9Y_viNgVafPO!S|ls`uzR=MZfp^{QU=8od8La1X`Tr_Wmff z_5e$ivgQ1@=KMy$_g9a+`TPAle6cOJ_Fc#L7qIpvwDkd1mw$fK`6IOUD75rX!}mad zv(fMTE4=(Nx%L54lL1hVF1YpqNrC`FddBPg#_Ietx%Lrkq5wX00X1L{S%Cm9QY*av z#_Rh5PKy9KYTWbvz3BX9%J>0Hi1+#X{rLA{m%$Kamk?i!03AC38#Yrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`?TG`AHia671e^vgmp!llK zp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?tc*y?iZ$PR7_ceEIapF3KB14K0Pog?7wtd+^xgUCa_GVmlD z<^nU>AU_Yn-JU?NFdu|wf^bTCNf-wSBYVZltDdvGBln-YrbeGvJ!|s{#`gjN@yAMb zM6cjFz0eFECCsc|_8hTa3*9-JQGehksdoVP^K4m?&wpA~+|b%{EP5D-+7h)6CE; z*{>BP=GRR3Ea}xyV*bqry{l^J=0#DaC4ej;1qs8_by?H6Tr@7hl>UKNZt)^B&yl;)&oqzLg zcfZxpE?3k%_iTOVywh%`XVN-E#COl+($9{v(pqSQcrz=)>G!!3HeNxbXGM@})1|9g zG4*@(OBaMvY0P0_TfMFPh fVHk#CZX3S=^^2mI>Ux-D00000NkvXXu0mjfQgnni diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 0467bf12aa4d28f374bb26596605a46dcbb3e7c8..7d1f5911db779b7cf83a091763850c7358435e57 100644 GIT binary patch literal 14758 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

    b9!>u^}*qRaT zfQUv42QuU=+R9LH$m|+25~Y86J0(_3q{RZ@T3pNJ17-33sK5?w_&v(Yje;Q9Qs__g z5*{#Kp)~iqWlE&#b6rob*-o0i?O|7pW%%-cAtk}TGd7$1_1r%=l+5$wlwNFG{G3|o z33JjF{=6g3VcW|l3MV?*%TF=24tFZKeL_rizU_9Z*bsLkfMrmLL2S}7aK zQ|>=fDZ^&`=Im^+;GtRm+RwU0+nij49q}ffokm_Ae!^zCqfNdf{_qhpy{)JYSmWNig7%doits}QLIRqr+Af7ncihmQnfHuU7*kuATA1Mo0Y~*O7y=u zM_L*3C6Wt1&~fbg?Ko&VBq44*sGM}?R8f-`fZdWnVUY8(zyn!+eQm18fSQ{gU?sH` zrYR}zv>Le@Qm?e$Q7pc($Lqx8Zr@@*7^QeJxbB$>q>+*8BHg}{uE3+cg#f2QF|D=#I?P)7BJ!&Un(?KO3odLgrp<3R zIjlU*laIBvjLl0=Yje?1$Mmi;-{iyHDD(k4!;c@QE=*Nv?^w>x<+b*;(fUw-_Iy|C zDQu>=k#;n4yV=#xB1@w6e-7cd&GD}};awd7gs|D-xm`&_qIlg$Lu>ie&bW?UkilA{ zAHgrVw=X&iz0VRA@a!M};AXCt)u)#&TkF+TkhJhfQfW^hWb+^lxxpm3Hu~d!@%6-?t`ZZS-QWw#! zJCPZMCVuK=>$H}Y>TSv)SquC6u-QaM>-_QC7rLrvHXpE2!AWGjB6R1QS|VF`%2ni7 zSknRWL5~LuTurWOc?oq2eyqu?zgv>mzPTCe)zGuDMaEb5%pZzSOipc`p`qO-Ng99Y z?j&CEl@cC2xZB9Y94;y8-N5G4=7VL*=%nP4auQdy_(HIO>nTUwi=HUHaf`_l?{nwi zYF_$;#ODF(Z`17i@#5g84O*2>gG_={%Er1#&5Kv4+1^6I$L}R`nAvjdud$uwc|99! zS}K#1Mc=k@NoYiGfg-m|p9>L%1|+?~c_UGy-km_9Zr66DN62=GY)QU(W73eib%47K z_RZE-{ZjpoH9)Gx>)=~BItk(}%b|+IxH+pwzaZn|NPT=l#v&$42@lxVlt$ZHJ%FO8 zQApLY$C4*Y;X)Uq#sJUc9Bov>dDMoeaa4*Hiya=V!ENhU=cn1Pvmawh)yDnNRH(k< zq4~Y}+ztKs)&d1^c>kwhD436INz5luxplfegE2v+kW6XA6^})c)-COfa}S*E+)yI-p4z16Y1_kvdoBa{Q)Ar4m#XoEUH+oJ_=fO|y!{|-(50!!o> WG}vsJ>HYWr5=c^1PNY`I0PsJeRL}AN delta 1410 zcmV-|1%3LabBYU)8Gi!+002YCyxsr+0P|2xR7L;)|5U~JDYo_jSDRDB`2GI>{Qds= z{r_0T`1}6fwc-8!#-TGX}_?g)CZq4{k!uZ_g@DrQdoW0kI zu+W69&uN^)W`CK&06mMNcYMVF00dG=L_t(|+U?wHQxh>12H+Dm+1+fh+IF>G0SjJM zkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJTkdTm&kdTm&kdTm&kdP`e zsgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>VI$fQI%^ugM`#6By?GeadWcu z0gy9!D`m!H>Bd!JW(@avE8`|5XX(0PN}!8K>`dkavs;rHL+wy96QGNT=S@#7%xtlm zIW!++@*2zm-Py#Zr`DzqsLm!b{iskFNULSqE9A>SqHem>o31A%XL>S_5?=;V_i_y+ z(xxXhnt#r-l1Y8_*h`r?8Tr|)(RAiO)4jQR`13X0mx07C&p@KBP_2s``KEhv^|*8c z$$_T(v6^1Ig=#R}sE{vjA?ErGDZGUsyoJuWdJMc7Nb1^KF)-u<7q zPy$=;)0>vuWuK2hQhswLf!9yg`88u&eBbR8uhod?Nw09AXH}-#qOLLxeT2%C;R)QQ$Za#qp~cM&YVmS4i-*Fpd!cC zBXc?(4wcg>sHmXGd^VdE<5QX{Kyz$;$sCPl(_*-P2Iw?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF34$0Z;QO!J zOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUCUoZo%k(yku QW&i*H07*qoM6N<$g6bp9Pyhe` diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index fde44d2..dc12d9a 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -17,7 +17,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - siopas + SIOPAS ISTW CFBundlePackageType APPL CFBundleShortVersionString diff --git a/lib/connection/connection.dart b/lib/connection/connection.dart index 94c8d2f..c3a98df 100644 --- a/lib/connection/connection.dart +++ b/lib/connection/connection.dart @@ -1,4 +1,25 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/cupertino.dart'; +import 'package:shared_preferences/shared_preferences.dart'; -String baseUrl = 'http://192.168.0.20:8000/api/v1'; +import 'package:shared_preferences/shared_preferences.dart'; + +Future getBaseUrl() async { + try { + SharedPreferences prefs = await SharedPreferences.getInstance(); + String ipAddress = + prefs.getString('ipAddress') ?? '192.168.0.18'; // Default value + String port = prefs.getString('port') ?? '8000'; // Default value + + String baseUrl = 'http://$ipAddress:$port/api/v1'; + + return baseUrl; + } catch (e) { + // Penanganan kesalahan + print('Error reading SharedPreferences: $e'); + return ''; // Atau nilai default lainnya jika terjadi kesalahan + } +} + + // return 'http://$ipAddress:$port/api/v1'; +// String baseUrl = 'http://192.168.0.18:8000/api/v1'; +// Gunakan fungsi ini saat diperlukan, misalnya di tempat-tempat yang membutuhkan baseUrl +// Contoh penggunaan: String url = await getBaseUrl(); diff --git a/lib/main.dart b/lib/main.dart index 10eeaef..414d8e8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,36 +1,54 @@ import 'package:flutter/services.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/migrations/databasehelper.dart'; +import 'package:siopas/pages/transfer_peti/edit.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:siopas/pages/pengembalian_barang/edit.dart'; -import 'package:siopas/pages/pengembalian_barang/pengembalian_index.dart'; -import 'package:siopas/pages/transfer_peti/edit.dart'; -import 'package:siopas/pages/transfer_peti/transfer_peti_index.dart'; import 'pages/home/main_page.dart'; import 'pages/peminjaman_barang/peminjaman_stock_page.dart'; import 'pages/peminjaman_barang/create.dart'; import 'pages/peminjaman_barang/show.dart'; +import 'pages/pengembalian_barang/edit.dart'; +import 'pages/pengembalian_barang/index.dart'; import 'pages/sign_in_page.dart'; import 'pages/splash_page.dart'; -import 'pages/transfer_peti/show.dart'; +import 'pages/transfer_peti/index.dart'; import 'providers/asset_status_provider.dart'; import 'providers/auth_provider.dart'; import 'providers/m_status_provider.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - // SharedPreferences prefs = await SharedPreferences.getInstance(); - // var email = prefs.getString("email"); - // var password = prefs.getString("password"); - // var token = prefs.getString("token"); - // await Firebase.initializeApp(); - runApp(MyApp()); + await SqfliteDatabaseHelper.instance.db; SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, // Atur orientasi ke potrait ]); + runApp(MyApp()); + configLoading(); // Pindahkan baris ini ke sini setelah runApp +} + +void configLoading() { + EasyLoading.instance + ..displayDuration = const Duration(milliseconds: 2000) + ..indicatorType = EasyLoadingIndicatorType.fadingCircle + ..loadingStyle = EasyLoadingStyle.dark + ..indicatorSize = 45.0 + ..radius = 10.0 + ..progressColor = Colors.yellow + ..backgroundColor = Colors.green + ..indicatorColor = Colors.yellow + ..textColor = Colors.yellow + ..maskColor = Colors.blue.withOpacity(0.5) + ..userInteractions = true + ..dismissOnTap = false; } class MyApp extends StatelessWidget { + MyApp() { + EasyLoading.init(); // Inisialisasi EasyLoading + } + @override Widget build(BuildContext context) { return MultiProvider( @@ -51,18 +69,19 @@ class MyApp extends StatelessWidget { visualDensity: VisualDensity.adaptivePlatformDensity, ), debugShowCheckedModeBanner: false, + home: SplashPage(), routes: { - '/': (context) => SplashPage(), '/sign-in': (context) => SignInPage(), '/home': (context) => MainPage(), '/peminjaman-barang': (context) => AssetStatusPage(), '/peminjaman-barang/create': (context) => CreatePeminjamanBarang(), '/pengembalian-barang': (context) => PengembalianBarangPage(), - '/pengembalian-barang/create': (context) => + '/pengembalian-barang/edit': (context) => CreatePengembalianBarangPage(), '/transfer-peti': (context) => TransferPetiPage(), '/transfer-peti/edit': (context) => EditTransferPetiPage(), }, + builder: EasyLoading.init(), ), ); } diff --git a/lib/migrations/databasehelper.dart b/lib/migrations/databasehelper.dart new file mode 100644 index 0000000..ee8870c --- /dev/null +++ b/lib/migrations/databasehelper.dart @@ -0,0 +1,265 @@ +import 'dart:io'; + +import 'package:path_provider/path_provider.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path/path.dart'; + +import '../models/warehouse_mode.dart'; + +class SqfliteDatabaseHelper { + SqfliteDatabaseHelper.internal(); + static final SqfliteDatabaseHelper instance = + SqfliteDatabaseHelper.internal(); + factory SqfliteDatabaseHelper() => instance; + + static final warehouseTable = 'm_warehouses'; + static final typePetiTable = 'type_petis'; + static final conditionPetiTable = 'kondisi_petis'; + static final customerTable = 'customers'; + static final petiTable = 'petis'; + static final transferPetiTable = 'transfers'; + static final disposalTable = 'disposals'; + + static final asset_statusesTable = 'asset_statuses'; + // static final assetLocalTable = 'asset_statuses_local'; + + static final peminjamanTable = 'peminjamans'; + static final pengembalianTable = 'pengembalians'; + + static final _version = 1; // Versi database ditingkatkan + + Database? _db; + + Future get db async { + if (_db != null) { + return _db; + } + _db = await initDb(); + return _db; + } + + Future saveWarehouseList(List warehouseList) async { + final dbClient = await db; + try { + await dbClient!.transaction((txn) async { + var batch = txn.batch(); + for (var warehouse in warehouseList) { + batch.insert( + warehouseTable, + warehouse.toJson(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + await batch.commit(); + }); + } catch (e) { + print('Error saving warehouse list to SQLite: $e'); + } + } + + Future initDb() async { + final Directory directory = await getApplicationDocumentsDirectory(); + String dbPath = join(directory.path, 'siopas.db'); + print(dbPath); + var openDb = await openDatabase(dbPath, version: _version, + onCreate: (Database db, int version) async { + await db.execute(""" + CREATE TABLE $peminjamanTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id INTEGER NULL, + peti_id INTEGER NULL, + customer_id INTEGER NULL, + warehouse_id INTEGER NULL, + exit_at DATETIME NULL, + est_pengembalian DATETIME NULL, + exit_pic TEXT NULL, + exit_warehouse INTEGER NULL, + enter_at DATETIME NULL, + enter_pic TEXT NULL, + enter_warehouse INTEGER NULL, + kondisi_peti_id INTEGER NULL, + status INTEGER NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $pengembalianTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id INTEGER NULL, + peti_id INTEGER NULL, + customer_id INTEGER NULL, + warehouse_id INTEGER NULL, + exit_at DATETIME NULL, + est_pengembalian DATETIME NULL, + exit_pic TEXT NULL, + exit_warehouse INTEGER NULL, + enter_at DATETIME NULL, + enter_pic TEXT NULL, + enter_warehouse INTEGER NULL, + kondisi_peti_id INTEGER NULL, + status INTEGER NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $asset_statusesTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id INTEGER NOT NULL, + peti_id INTEGER NULL, + customer_id INTEGER NULL, + warehouse_id INTEGER NULL, + exit_at DATETIME NULL, + est_pengembalian DATETIME NULL, + exit_pic TEXT NULL, + exit_warehouse INTEGER NULL, + enter_at DATETIME NULL, + enter_pic TEXT NULL, + enter_warehouse INTEGER NULL, + kondisi_peti_id INTEGER NULL, + status INTEGER NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $warehouseTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id TEXT NULL, + name TEXT NULL, + description TEXT NULL, + address TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $typePetiTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + type TEXT NULL, + size_peti TEXT NULL, + description TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $conditionPetiTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nama_kondisi TEXT NULL, + deskripsi_kondisi TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $customerTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NULL, + code_customer TEXT NULL, + lot_no TEXT NULL, + no_tlp TEXT NULL, + address TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $petiTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + tipe_peti_id INTEGER NULL, + warna TEXT NULL, + fix_lot TEXT NULL, + packing_no INTEGER NULL, + customer_id INTEGER NULL, + jumlah INTEGER NULL, + date_pembuatan DATETIME NULL, + warehouse_id INTEGER NULL, + kondisipeti_id INTEGER NULL, + status TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL, + FOREIGN KEY (tipe_peti_id) REFERENCES $typePetiTable(id), + FOREIGN KEY (customer_id) REFERENCES $customerTable(id), + FOREIGN KEY (warehouse_id) REFERENCES $warehouseTable(id) + ); + """); + + await db.execute(""" + CREATE TABLE $transferPetiTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id TEXT NULL, + peti_id INTEGER NULL, + name_customer INTEGER NULL, + source_warehouse INTEGER NULL, + destination_warehouse INTEGER NULL, + date DATETIME NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + await db.execute(""" + CREATE TABLE $disposalTable ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + mobile_id TEXT NULL, + peti_id INTEGER NULL, + customer_id INTEGER NULL, + warehouse_id INTEGER NULL, + date_disposal DATETIME NULL, + description LONGTEXT NULL, + status_disposal TEXT NULL, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + created_by TEXT NULL, + updated_by TEXT NULL + ); + """); + + // Tambahkan CREATE TABLE untuk tabel-tabel lainnya di sini + }, onUpgrade: (Database db, int oldversion, int newversion) async { + if (oldversion < newversion) { + print("Version Upgrade"); + // Tambahkan pernyataan ALTER TABLE jika diperlukan + } + }); + print('db initialize'); + return openDb; + } +} diff --git a/lib/models/asset_status_model.dart b/lib/models/asset_status_model.dart index 893637d..bbc82a4 100644 --- a/lib/models/asset_status_model.dart +++ b/lib/models/asset_status_model.dart @@ -3,7 +3,10 @@ import 'warehouse_mode.dart'; class AssetStatusModel { int? id; + String? mobile_id; int? peti_id; + int? customer_id; + int? warehouse_id; DateTime? exit_at; String? exit_pic; int? exit_warehouse; @@ -11,16 +14,23 @@ class AssetStatusModel { String? enter_pic; int? enter_warehouse; DateTime? est_pengembalian; - String? kondisi_peti; + int? kondisi_peti_id; + // int? status; String? created_by; String? updated_by; - PetiAssetModel? peti; - WarehouseModel? warehouse; - WarehouseEnterModel? warehouse_enter; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; + // PetiAssetModel? peti; + // WarehouseModel? warehouse; + // WarehouseEnterModel? warehouse_enter; AssetStatusModel({ - this.id, + required this.id, + this.mobile_id, this.peti_id, + this.customer_id, + this.warehouse_id, this.exit_at, this.exit_pic, this.exit_warehouse, @@ -28,64 +38,85 @@ class AssetStatusModel { this.enter_pic, this.enter_warehouse, this.est_pengembalian, - this.kondisi_peti, + this.kondisi_peti_id, + // this.status, this.created_by, this.updated_by, - this.peti, - this.warehouse, - this.warehouse_enter, + this.created_at, + this.updated_at, + this.deleted_at, + // this.peti, + // this.warehouse, + // this.warehouse_enter, }); factory AssetStatusModel.fromJson(Map json) { return AssetStatusModel( - id: json['id'], - peti_id: json['peti_id'] != null - ? int.parse(json['peti_id'].toString()) - : null, - exit_at: json['exit_at'] != null ? DateTime.parse(json['exit_at']) : null, + id: json['id'] != null ? int.parse(json['id'].toString()) : 0, + mobile_id: json['mobile_id'].toString(), + peti_id: + json['peti_id'] != null ? int.parse(json['peti_id'].toString()) : 0, + customer_id: json['customer_id'] != null + ? int.parse(json['customer_id'].toString()) + : 0, + warehouse_id: json['warehouse_id'] != null + ? int.parse(json['warehouse_id'].toString()) + : 0, + exit_at: parseDateTime(json['exit_at']), exit_pic: json['exit_pic'], exit_warehouse: json['exit_warehouse'] != null ? int.parse(json['exit_warehouse'].toString()) - : null, - enter_at: - json['enter_at'] != null ? DateTime.parse(json['enter_at']) : null, - enter_pic: json['enter_pic'] != null ? json['enter_pic'] : null, + : 0, + enter_at: parseDateTime(json['enter_at']), + enter_pic: json['enter_pic'], enter_warehouse: json['enter_warehouse'] != null ? int.parse(json['enter_warehouse'].toString()) - : null, - est_pengembalian: json['est_pengembalian'] != null - ? DateTime.parse(json['est_pengembalian']) - : null, - kondisi_peti: - json['kondisi_peti'] != null ? json['kondisi_peti'] : 'null', - created_by: json['created_by'] != null ? json['created_by'] : 'null', - updated_by: json['updated_by'] != null ? json['updated_by'] : 'null', - peti: PetiAssetModel.fromJson(json['peti'] != null ? json['peti'] : null), - warehouse: WarehouseModel.fromJson(json['warehouse'] != null - ? json['warehouse'] - : {'id': 0, 'name': 'null'}), - warehouse_enter: WarehouseEnterModel.fromJson( - json['warehouse_enter'] != null - ? json['warehouse_enter'] - : {'id': 0, 'name': 'null'}), + : 0, + est_pengembalian: parseDateTime(json['est_pengembalian']), + kondisi_peti_id: json['kondisi_peti_id'] != null + ? int.parse(json['kondisi_peti_id'].toString()) + : 0, + created_by: json['created_by'] ?? 'null', + updated_by: json['updated_by'] ?? 'null', + created_at: parseDateTime(json['created_at']), + updated_at: parseDateTime(json['updated_at']), + deleted_at: parseDateTime(json['deleted_at']), ); } Map toJson() => { 'id': id, + 'mobile_id': mobile_id.toString(), 'peti_id': peti_id, - 'exit_at': exit_at, - 'exit_pic': exit_pic, + 'customer_id': customer_id, + 'warehouse_id': warehouse_id, + 'exit_at': exit_at?.toIso8601String(), + 'exit_pic': exit_pic.toString(), 'exit_warehouse': exit_warehouse, - 'enter_at': enter_at, + 'enter_at': enter_at?.toIso8601String(), 'enter_pic': enter_pic, - 'enter_warehouse': enter_warehouse, - 'est_pengembalian': est_pengembalian, - 'kondisi_peti': kondisi_peti, + 'enter_warehouse': enter_warehouse?.toString(), + 'est_pengembalian': est_pengembalian?.toIso8601String(), + 'kondisi_peti_id': kondisi_peti_id, + // 'status': status.toString(), 'created_by': created_by, 'updated_by': updated_by, - 'peti': peti!.toJson(), - 'warehouse': warehouse!.toJson(), - 'warehouse_enter': warehouse_enter!.toJson(), + 'created_at': created_at?.toIso8601String(), + 'updated_at': updated_at?.toIso8601String(), + 'deleted_at': deleted_at?.toIso8601String(), + // 'peti': peti!.toJson(), + // 'warehouse': warehouse!.toJson(), + // 'warehouse_enter': warehouse_enter!.toJson(), }; + + static DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString != null && dateTimeString.isNotEmpty) { + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + } + } + return null; + } } diff --git a/lib/models/condition_peti_model.dart b/lib/models/condition_peti_model.dart new file mode 100644 index 0000000..c262ad5 --- /dev/null +++ b/lib/models/condition_peti_model.dart @@ -0,0 +1,56 @@ +class ConditionPetiModel { + int? id; + String? nama_kondisi; + String? deskripsi_kondisi; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; + String? created_by; + String? updated_by; + + ConditionPetiModel({ + this.id, + this.nama_kondisi, + this.deskripsi_kondisi, + this.created_at, + this.updated_at, + this.deleted_at, + this.created_by, + this.updated_by, + }); + + factory ConditionPetiModel.fromJson(Map json) { + return ConditionPetiModel( + id: json['id'], + nama_kondisi: json['nama_kondisi'], + deskripsi_kondisi: json['deskripsi_kondisi'], + created_at: parseDateTime(json['created_at']), + updated_at: parseDateTime(json['updated_at']), + deleted_at: parseDateTime(json['deleted_at']), + created_by: json['created_by'].toString(), + updated_by: json['updated_by'].toString(), + ); + } + + Map toJson() => { + 'id': id, + 'nama_kondisi': nama_kondisi, + 'deskripsi_kondisi': deskripsi_kondisi, + 'created_by': created_by.toString(), + 'updated_by': updated_by.toString(), + 'created_at': created_at?.toIso8601String(), + 'updated_at': updated_at?.toIso8601String(), + 'deleted_at': deleted_at?.toIso8601String(), + }; + + static DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString != null && dateTimeString.isNotEmpty) { + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + } + } + return null; + } +} diff --git a/lib/models/customer_model.dart b/lib/models/customer_model.dart index 28a1b35..722fa73 100644 --- a/lib/models/customer_model.dart +++ b/lib/models/customer_model.dart @@ -3,26 +3,32 @@ class CustomerModel { String? name; String? code_customer; String? lot_no; - String? nip; - String? no_hp; - DateTime? tgl_lahir; - String? jenis_kelamin; - String? agama; + // String? nip; + // String? no_hp; + // DateTime? tgl_lahir; + // String? jenis_kelamin; + // String? agama; String? created_by; String? updated_by; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; CustomerModel({ this.id, this.name, this.code_customer, this.lot_no, - this.nip, - this.no_hp, - this.tgl_lahir, - this.jenis_kelamin, - this.agama, + // this.nip, + // this.no_hp, + // this.tgl_lahir, + // this.jenis_kelamin, + // this.agama, this.created_by, this.updated_by, + this.created_at, + this.updated_at, + this.deleted_at, }); factory CustomerModel.fromJson(Map json) { @@ -32,15 +38,24 @@ class CustomerModel { code_customer: json['code_customer'] != null ? json['code_customer'] : null, lot_no: json['lot_no'] != null ? json['lot_no'] : null, - nip: json['nip'] != null ? json['nip'] : null, - no_hp: json['no_hp'] != null ? json['no_hp'] : null, - tgl_lahir: - json['tgl_lahir'] != null ? DateTime.parse(json['tgl_lahir']) : null, - jenis_kelamin: - json['jenis_kelamin'] != null ? json['jenis_kelamin'] : null, - agama: json['agama'] != null ? json['agama'] : null, + // nip: json['nip'] != null ? json['nip'] : null, + // no_hp: json['no_hp'] != null ? json['no_hp'] : null, + // tgl_lahir: + // json['tgl_lahir'] != null ? DateTime.parse(json['tgl_lahir']) : null, + // jenis_kelamin: + // json['jenis_kelamin'] != null ? json['jenis_kelamin'] : null, + // agama: json['agama'] != null ? json['agama'] : null, created_by: json['created_by'] != null ? json['created_by'] : null, updated_by: json['updated_by'] != null ? json['updated_by'] : null, + created_at: json['created_at'] != null + ? DateTime.parse(json['created_at']) + : null, + updated_at: json['updated_at'] != null + ? DateTime.parse(json['updated_at']) + : null, + deleted_at: json['deleted_at'] != null + ? DateTime.parse(json['deleted_at']) + : null, ); } @@ -49,12 +64,15 @@ class CustomerModel { 'name': name, 'code_customer': code_customer, 'lot_no': lot_no, - 'nip': nip, - 'no_hp': no_hp, - 'tgl_lahir': tgl_lahir, - 'jenis_kelamin': jenis_kelamin, - 'agama': agama, + // 'nip': nip, + // 'no_hp': no_hp, + // 'tgl_lahir': tgl_lahir, + // 'jenis_kelamin': jenis_kelamin, + // 'agama': agama, 'created_by': created_by, 'updated_by': updated_by, + 'created_at': created_at, + 'updated_at': updated_at, + 'deleted_at': deleted_at, }; } diff --git a/lib/models/disposal_model.dart b/lib/models/disposal_model.dart new file mode 100644 index 0000000..1b3c6a3 --- /dev/null +++ b/lib/models/disposal_model.dart @@ -0,0 +1,84 @@ +class DisposalPetiModel { + int? id; + String? mobile_id; + int? peti_id; + int? customer_id; + int? warehouse_id; + DateTime? date_disposal; + String? description; + String? status_disposal; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; + String? created_by; + String? updated_by; + + DisposalPetiModel({ + this.id, + this.mobile_id, + this.peti_id, + this.customer_id, + this.warehouse_id, + this.date_disposal, + this.description, + this.status_disposal, + this.created_at, + this.updated_at, + this.deleted_at, + this.created_by, + this.updated_by, + }); + + factory DisposalPetiModel.fromJson(Map json) => + DisposalPetiModel( + id: json['id'], + mobile_id: + json['mobile_id'] != null ? json['mobile_id'].toString() : null, + peti_id: json['peti_id'] != null + ? int.parse(json['peti_id'].toString()) + : null, + customer_id: json['customer_id'] != null + ? int.parse(json['customer_id'].toString()) + : null, + warehouse_id: json['warehouse_id'] != null + ? int.parse(json['warehouse_id'].toString()) + : null, + date_disposal: json['date_disposal'] != null + ? DateTime.parse(json['date_disposal']) + : null, + description: + json['description'] != null ? json['description'].toString() : null, + status_disposal: json['status_disposal'] != null + ? json['status_disposal'].toString() + : null, + created_at: json['created_at'] != null + ? DateTime.parse(json['created_at']) + : null, + updated_at: json['updated_at'] != null + ? DateTime.parse(json['updated_at']) + : null, + deleted_at: json['deleted_at'] != null + ? DateTime.parse(json['deleted_at']) + : null, + created_by: + json['created_by'] != null ? json['created_by'].toString() : null, + updated_by: + json['updated_by'] != null ? json['updated_by'].toString() : null, + ); + + Map toJson() => { + "id": id, + "mobile_id": mobile_id, + "peti_id": peti_id, + "customer_id": customer_id, + "warehouse_id": warehouse_id, + "date_disposal": date_disposal, + "description": description, + "status_disposal": status_disposal, + "created_at": created_at, + "updated_at": updated_at, + "deleted_at": deleted_at, + "created_by": created_by, + "updated_by": updated_by, + }; +} diff --git a/lib/models/m_asset_status_model.dart b/lib/models/m_asset_status_model.dart index fc00f65..0d095b3 100644 --- a/lib/models/m_asset_status_model.dart +++ b/lib/models/m_asset_status_model.dart @@ -4,47 +4,56 @@ import 'package:siopas/models/warehouse_mode.dart'; class PetiAssetModel { int? id; - String? tipe_peti_id; + int? tipe_peti_id; String? warna; - String? fix_lot; + final String fix_lot; int? packing_no; int? customer_id; - int? warehouse_id; int? jumlah; DateTime? date_pembuatan; - WarehouseModel? warehouse; - TypePetiModel? tipe_peti; - CustomerModel? customer; + int? warehouse_id; + int? kondisipeti_id; + String? status; + // WarehouseModel? warehouse; + // TypePetiModel? tipe_peti; + // CustomerModel? customer; - String? status_disposal; String? created_by; String? updated_by; - // late WarehouseModel warehouse; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; PetiAssetModel({ this.id, this.tipe_peti_id, this.warna, - this.fix_lot, + required this.fix_lot, this.packing_no, this.customer_id, - this.warehouse_id, this.jumlah, this.date_pembuatan, - this.warehouse, - this.tipe_peti, - this.customer, - this.status_disposal, + // this.warehouse, + // this.tipe_peti, + // this.customer, + this.warehouse_id, + this.kondisipeti_id, + this.status, this.created_by, this.updated_by, + this.created_at, + this.updated_at, + this.deleted_at, // required this.warehouse, }); factory PetiAssetModel.fromJson(Map json) { return PetiAssetModel( id: json['id'], - tipe_peti_id: json['tipe_peti_id'], - warna: json['warna'], + tipe_peti_id: json['tipe_peti_id'] != null + ? int.parse(json['tipe_peti_id'].toString()) + : null, + warna: json['warna'] != null ? json['warna'].toString() : null, fix_lot: json['fix_lot'], packing_no: json['packing_no'] != null ? int.parse(json['packing_no'].toString()) @@ -55,25 +64,39 @@ class PetiAssetModel { warehouse_id: json['warehouse_id'] != null ? int.parse(json['warehouse_id'].toString()) : null, + kondisipeti_id: json['kondisipeti_id'] != null + ? int.parse(json['kondisipeti_id'].toString()) + : null, + status: json['status'] != null ? json['status'].toString() : null, jumlah: json['jumlah'] != null ? int.parse(json['jumlah'].toString()) : null, - date_pembuatan: DateTime.parse(json['date_pembuatan']), - warehouse: json['warehouse'] != null - ? WarehouseModel.fromJson(json['warehouse']) - : null, - tipe_peti: json['tipe_peti'] != null - ? TypePetiModel.fromJson(json['tipe_peti']) - : null, - customer: json['customer'] != null - ? CustomerModel.fromJson(json['customer']) + date_pembuatan: json['date_pembuatan'] != null + ? DateTime.parse(json['date_pembuatan'].toString()) : null, - status_disposal: json['status_disposal'], + // warehouse: json['warehouse'] != null + // ? WarehouseModel.fromJson(json['warehouse']) + // : null, + // tipe_peti: json['tipe_peti'] != null + // ? TypePetiModel.fromJson(json['tipe_peti']) + // : null, + // customer: json['customer'] != null + // ? CustomerModel.fromJson(json['customer']) + // : null, created_by: json['created_by'] != null ? json['created_by'].toString() : json['created_by'], updated_by: json['updated_by'] != null ? json['updated_by'].toString() : json['updated_by'], + created_at: json['created_at'] != null + ? DateTime.parse(json['created_at'].toString()) + : DateTime.now(), + updated_at: json['updated_at'] != null + ? DateTime.parse(json['updated_at'].toString()) + : DateTime.now(), + deleted_at: json['deleted_at'] != null + ? DateTime.parse(json['deleted_at'].toString()) + : DateTime.now(), ); } @@ -81,17 +104,21 @@ class PetiAssetModel { 'id': id, 'tipe_peti_id': tipe_peti_id, 'warna': warna, - 'fix_lot': fix_lot, + 'fix_lot': fix_lot.toString(), 'packing_no': packing_no, 'customer_id': customer_id, 'warehouse_id': warehouse_id, + 'kondisipeti_id': kondisipeti_id, + 'status': status, 'jumlah': jumlah, 'date_pembuatan': date_pembuatan!.toIso8601String(), - 'warehouse': warehouse!.toJson(), - 'tipe_peti': tipe_peti!.toJson(), - 'customer': customer!.toJson(), - 'status_disposal': status_disposal, + // 'warehouse': warehouse != null ? warehouse!.toJson() : null, + // 'customer': customer != null ? customer!.toJson() : null, + // 'tipe_peti': tipe_peti != null ? tipe_peti!.toJson() : null, 'created_by': created_by, 'updated_by': updated_by, + 'created_at': created_at!.toIso8601String(), + 'updated_at': updated_at!.toIso8601String(), + 'deleted_at': deleted_at!.toIso8601String(), }; } diff --git a/lib/models/transfer_peti_model.dart b/lib/models/transfer_peti_model.dart new file mode 100644 index 0000000..80de4ba --- /dev/null +++ b/lib/models/transfer_peti_model.dart @@ -0,0 +1,84 @@ +class TransferPetiModel { + int? id; + String? mobile_id; + int? peti_id; + int? name_customer; + int? source_warehouse; + int? destination_warehouse; + DateTime? date; + + String? created_by; + String? updated_by; + + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; + + TransferPetiModel({ + this.id, + this.mobile_id, + this.peti_id, + this.name_customer, + this.source_warehouse, + this.destination_warehouse, + this.date, + this.created_by, + this.updated_by, + this.created_at, + this.updated_at, + this.deleted_at, + }); + + factory TransferPetiModel.fromJson(Map json) { + return TransferPetiModel( + id: json['id'], + mobile_id: json['mobile_id'] != null ? json['mobile_id'] : null, + peti_id: json['peti_id'] != null + ? int.parse(json['peti_id'].toString()) + : null, + name_customer: json['name_customer'] != null + ? int.parse(json['name_customer'].toString()) + : null, + source_warehouse: json['source_warehouse'] != null + ? int.parse(json['source_warehouse'].toString()) + : null, + destination_warehouse: json['destination_warehouse'] != null + ? int.parse(json['destination_warehouse'].toString()) + : null, + date: parseDateTime(json['date']), + created_by: json['created_by'] != null ? json['created_by'] : null, + updated_by: json['updated_by'] != null ? json['updated_by'] : null, + created_at: parseDateTime(json['created_at']), + updated_at: parseDateTime(json['updated_at']), + deleted_at: parseDateTime(json['deleted_at']), + ); + } + + Map toJson() { + return { + 'id': id, + 'mobile_id': mobile_id, + 'peti_id': peti_id, + 'name_customer': name_customer, + 'source_warehouse': source_warehouse, + 'destination_warehouse': destination_warehouse, + 'date': date?.toIso8601String(), + 'created_by': created_by, + 'updated_by': updated_by, + 'created_at': created_at?.toIso8601String(), + 'updated_at': updated_at?.toIso8601String(), + 'deleted_at': deleted_at?.toIso8601String(), + }; + } + + static DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString != null && dateTimeString.isNotEmpty) { + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + } + } + return null; + } +} diff --git a/lib/models/type_peti_model.dart b/lib/models/type_peti_model.dart index a8d40e3..79c6295 100644 --- a/lib/models/type_peti_model.dart +++ b/lib/models/type_peti_model.dart @@ -29,7 +29,7 @@ class TypePetiModel { } Map toJson() => { - 'id': id, + 'id': id.toString(), 'type': type, 'size_peti': size_peti, 'description': description, diff --git a/lib/models/user_model.dart b/lib/models/user_model.dart index 3a8999b..8b04301 100644 --- a/lib/models/user_model.dart +++ b/lib/models/user_model.dart @@ -1,12 +1,17 @@ import 'package:flutter/cupertino.dart'; class UserModel { - int? id; + String? id; String? username; String? fullname; String? email; + String? nip; + String? no_hp; + String? jenis_kelamin; + String? address; String? password; int? role_id; + int? warehouse_id; String? token; UserModel({ @@ -14,28 +19,47 @@ class UserModel { this.username, this.fullname, this.email, + this.nip, + this.no_hp, + this.jenis_kelamin, + this.address, this.password, this.role_id, + this.warehouse_id, this.token, }); UserModel.fromJson(Map json) { - id = json['id']; + id = json['id'].toString(); username = json['username']; fullname = json['fullname']; email = json['email']; + nip = json['nip']; + no_hp = json['no_hp']; + jenis_kelamin = json['jenis_kelamin']; + address = json['address']; password = json['password']; - role_id = int.parse(json['role_id'].toString()); + role_id = + json['role_id'] != null ? int.parse(json['role_id'].toString()) : null; + warehouse_id = json['warehouse_id'] != null + ? int.parse(json['warehouse_id'].toString()) + : null; token = json['token'].toString(); } Map toJson() { return { - 'id': id, + 'id': id.toString(), 'username': username, 'email': email, + 'fullname': fullname, + 'nip': nip, + 'no_hp': no_hp, + 'jenis_kelamin': jenis_kelamin, + 'address': address, 'password': password, - 'role_id': role_id, + 'role_id': role_id.toString(), + 'warehouse_id': warehouse_id.toString(), 'token': token.toString(), }; } diff --git a/lib/models/warehouse_mode.dart b/lib/models/warehouse_mode.dart index d3c6312..3b7fba1 100644 --- a/lib/models/warehouse_mode.dart +++ b/lib/models/warehouse_mode.dart @@ -8,6 +8,10 @@ class WarehouseModel { String? created_by; String? updated_by; + DateTime? created_at; + DateTime? updated_at; + DateTime? deleted_at; + WarehouseModel({ this.id, this.name, @@ -15,19 +19,31 @@ class WarehouseModel { this.address, this.created_by, this.updated_by, + this.created_at, + this.updated_at, + this.deleted_at, }); WarehouseModel.fromJson(Map json) { - id = json['id']; + id = json['id'] != null ? int.parse(json['id'].toString()) : 0; name = json['name']; description = json['description']; address = json['address']; created_by = json['created_by']; updated_by = json['updated_by']; + created_at = DateTime.parse(json['created_at'] != null + ? json['created_at'].toString() + : DateTime.now().toString()); + updated_at = DateTime.parse(json['updated_at'] != null + ? json['updated_at'].toString() + : DateTime.now().toString()); + deleted_at = DateTime.parse(json['deleted_at'] != null + ? json['deleted_at'].toString() + : DateTime.now().toString()); } Map toJson() => { - 'id': id, + 'id': id.toString(), 'name': name, 'description': description, 'address': address, @@ -37,7 +53,7 @@ class WarehouseModel { } class WarehouseEnterModel { - int? id; + String? id; String? name; String? description; String? address; @@ -51,7 +67,7 @@ class WarehouseEnterModel { factory WarehouseEnterModel.fromJson(Map json) { return WarehouseEnterModel( - id: json['id'], + id: json['id'].toString(), name: json['name'], description: json['description'], address: json['address'], @@ -59,7 +75,7 @@ class WarehouseEnterModel { } Map toJson() => { - 'id': id, + 'id': id.toString(), 'name': name, 'description': description, 'address': address, diff --git a/lib/pages/home/conn_home_page.dart/syncronize.dart b/lib/pages/home/conn_home_page.dart/syncronize.dart new file mode 100644 index 0000000..5d69e06 --- /dev/null +++ b/lib/pages/home/conn_home_page.dart/syncronize.dart @@ -0,0 +1,259 @@ +import 'dart:convert'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:intl/intl.dart'; +import '../../../connection/connection.dart'; +import '../../../migrations/databasehelper.dart'; +import '../../../models/asset_status_model.dart'; +import 'package:http/http.dart' as http; + +class SyncronizationGlobalData { + Future addData(AssetStatusModel assetStatusModel) async { + final dbClient = await conn.db; + late int result; + try { + result = await dbClient!.insert( + SqfliteDatabaseHelper.peminjamanTable, assetStatusModel.toJson()); + } catch (e) { + print('Error adding data to local SQLite: $e'); + result = 0; // Handle the error appropriately + } + return result; + } + + Future fetchData() async { + var dbclient = await conn.db; + List assetStatusList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.peminjamanTable, orderBy: 'id DESC'); + for (var item in maps) { + assetStatusList.add(item); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllPeminjamanInfo() async { + final dbClient = await conn.db; + List peminjamanList = []; + try { + final maps = await dbClient!.query(SqfliteDatabaseHelper.peminjamanTable); + for (var item in maps) { + peminjamanList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return peminjamanList; + } + + Future> fetchAllPengembalianInfo() async { + final dbClient = await conn.db; + List pengembalianList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.pengembalianTable); + for (var item in maps) { + pengembalianList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return pengembalianList; + } + + Future> fetchAllTransferInfo() async { + final dbClient = await conn.db; + List transferList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.transferPetiTable); + for (var item in maps) { + transferList.add(TransferPetiModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return transferList; + } + + Future deleteAllPeminjamanData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.peminjamanTable); + } + + Future deleteAllPengembalianData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.pengembalianTable); + } + + Future deleteAllTransferData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.transferPetiTable); + } + + Future saveToMysqlWith(List assetStatusesLocalList) async { + for (var i = 0; i < assetStatusesLocalList.length; i++) { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + // Format tanggal sesuai kebutuhan + String formattedCreatedAt = assetStatusesLocalList[i].created_at != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i].created_at!) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": assetStatusesLocalList[i].mobile_id.toString(), + "peti_id": assetStatusesLocalList[i].peti_id.toString(), + "exit_at": assetStatusesLocalList[i].exit_at.toString(), + "est_pengembalian": + assetStatusesLocalList[i].est_pengembalian.toString(), + "exit_pic": assetStatusesLocalList[i].exit_pic.toString(), + "exit_warehouse": assetStatusesLocalList[i].exit_warehouse.toString(), + // "status": assetStatusesLocalList[i].status.toString(), + "created_by": assetStatusesLocalList[i].created_by.toString(), + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/store'), + body: data, + ); + + if (response.statusCode == 200) { + // print("Data uploaded successfully for index $i:"); + // print("Response body: ${response.body}"); + print("Saving Data saveToMysqlWith"); + } else { + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + print("Response body: ${response.body}"); + } + } + + return true; // Pengunggahan berhasil + } + + Future fetchAllCustomerInfo() async { + final dbClient = await conn.db; + List contactList = []; + try { + final maps = await dbClient!.query(SqfliteDatabaseHelper.peminjamanTable); + for (var item in maps) { + contactList.add(item); + } + } catch (e) { + print(e.toString()); + } + return contactList; + } + + Future saveToMysql(List assetStatusesLocalList) async { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + for (var i = 0; i < assetStatusesLocalList.length; i++) { +// Format tanggal sesuai kebutuhan + String formattedCreatedAt = + assetStatusesLocalList[i]['created_at'] != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i]['created_at']) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": assetStatusesLocalList[i]['mobile_id'].toString(), + "peti_id": assetStatusesLocalList[i]['peti_id'].toString(), + "exit_at": assetStatusesLocalList[i]['exit_at'].toString(), + "est_pengembalian": + assetStatusesLocalList[i]['est_pengembalian'].toString(), + "exit_pic": assetStatusesLocalList[i]['exit_pic'].toString(), + "exit_warehouse": + assetStatusesLocalList[i]['exit_warehouse'].toString(), + "status": assetStatusesLocalList[i]['status'].toString(), + "created_by": assetStatusesLocalList[i]['created_by'].toString(), + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/store'), + body: data); + if (response.statusCode == 200) { + print(response.body); + print("Saving Data saveToMysql"); + } else { + print(response.statusCode); + } + } + } + + Future> fetchFromApi() async { + final response = await http.get( + Uri.parse(await getBaseUrl() + '/asset-status'), + ); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['asset_status']; + List contactDBList = data + .map( + (item) => AssetStatusModel.fromJson(item as Map)) + .toList(); + + return contactDBList; + } else { + throw Exception('Failed to fetch data from API Asset Status'); + } + } +} diff --git a/lib/pages/home/controller/home_controller.dart b/lib/pages/home/controller/home_controller.dart new file mode 100644 index 0000000..50d7de2 --- /dev/null +++ b/lib/pages/home/controller/home_controller.dart @@ -0,0 +1,62 @@ +import 'dart:async'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:http/http.dart' as http; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:sqflite/sqflite.dart'; + +import '../../../migrations/databasehelper.dart'; + +class ControllerHome { + final conn = SqfliteDatabaseHelper.instance; + Future getPeminjamanCount() async { + final dbClient = await conn.db; + final count = Sqflite.firstIntValue(await dbClient! + .query(SqfliteDatabaseHelper.peminjamanTable, columns: ['COUNT(*)'])); + return count ?? 0; + } + + Future getPengembalianCount() async { + final dbClient = await conn.db; + final count = Sqflite.firstIntValue( + await dbClient!.query(SqfliteDatabaseHelper.pengembalianTable, + columns: ['COUNT(*)']), + ); + return count ?? 0; + } + + Future getTransferCount() async { + final dbClient = await conn.db; + final count = Sqflite.firstIntValue( + await dbClient!.query(SqfliteDatabaseHelper.transferPetiTable, + columns: ['COUNT(*)']), + ); + return count ?? 0; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data nor WIFI detected, no internet connection found."); + return false; + } + } +} diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index b4216bd..47ddefd 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -1,14 +1,31 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/migrations/databasehelper.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import '../../models/asset_status_model.dart'; +import '../../models/condition_peti_model.dart'; +import '../../models/customer_model.dart'; +import '../../models/m_asset_status_model.dart'; +import '../../models/type_peti_model.dart'; import '../../models/user_model.dart'; +import '../../models/warehouse_mode.dart'; import '../../providers/auth_provider.dart'; import 'package:intl/intl.dart'; import 'package:intl/date_symbol_data_local.dart'; +import '../../services/controllerApi.dart'; +import '../../services/syncronizeAPI.dart'; import '../../theme.dart'; +import '../peminjaman_barang/conn/syncronize.dart'; +import '../peminjaman_barang/controller/peminjaman_controller.dart'; +import '../pengembalian_barang/conn/syncronize.dart'; +import '../transfer_peti/conn/syncronize.dart'; +import 'conn_home_page.dart/syncronize.dart'; +import 'controller/home_controller.dart'; class HomePage extends StatefulWidget { @override @@ -17,20 +34,45 @@ class HomePage extends StatefulWidget { class _HomePageState extends State { String? token; - // final items = ["Android", "iOS", "Desktop", "Web"]; - // final items = ['assets/gps_samara.jpeg']; - final items = [ - 'https://mypertamina.id/uploads/posts/Survey-Bright-Cafe-2021-1024x576.jpg', - 'https://grhaproperti.com/wp-content/uploads/2022/05/banner-survey-on-520.jpg', - 'https://grhaproperti.com/wp-content/uploads/2022/05/banner-properti-agent-1-1.jpg' - ]; - - // bool isLoading = true; + bool loading = true; + + // Reinit atau Upload Only + WarehouseModel? warehouseSqfliteApi; + List? typePetiSqfliteApi; + List? customerSqfliteApi; + PetiAssetModel? petiSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + + // Datatable + int _currentPage = 1; + int _pageSize = 10; + List? _data; + List? _petiData; + List? _tipePetiData; + List? _customerData; + List? _warehouseData; + bool _isLoading = false; + Timer? _timer; + @override void initState() { super.initState(); - initializeDateFormatting("id_ID", null); // Inisialisasi pustaka intl _getUserToken(); + + warehouseListAPI(); + typePetiListAPI(); + customerListAPI(); + petiListAPI(); + + // Tampil data Datatables + datatablesAssetStatusList(); + datatablesPetiList(); + datatablesTipePetiList(); + datatablesCustomerList(); + datatablesWarehouseList(); + _data = []; } void _getUserToken() async { @@ -38,11 +80,251 @@ class _HomePageState extends State { if (mounted) { setState(() { token = prefs.getString('token'); - // getInit(); // Panggil getInit jika token sudah didapatkan }); } } + // Reinit atau Upload Only ------------------------------------------------------------------------ + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future typePetiListAPI() async { + if (mounted) { + await ControllerApi().fetchTipePetiDataAPI().then((value) { + setState(() { + typePetiSqfliteApi = (value as List) + .map((item) => TypePetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerSqfliteApi = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future reinitWarehouseApi() async { + EasyLoading.show(status: 'Mengambil data Warehouse...'); + List warehouseApiData = + await SyncronizationDataAPI().fetchWarehouseFromApi(); + await ControllerApi() + .deleteAllWarehouseDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllWarehouseDataAPI(warehouseApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitPetiApi() async { + EasyLoading.show(status: 'Mengambil data Peti...'); + List petiApiData = + await SyncronizationDataAPI().fetchPetiFromApi(); + await ControllerApi() + .deleteAllPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllPetiDataAPI(petiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitCustomerApi() async { + EasyLoading.show(status: 'Mengambil data Customer...'); + List customerApiData = + await SyncronizationDataAPI().fetchCustomerFromApi(); + await ControllerApi() + .deleteAllCustomerDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllCustomerDataAPI(customerApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitConditionPetiApi() async { + EasyLoading.show(status: 'Mengambil data Condition Peti...'); + List conditionPetiApiData = + await SyncronizationDataAPI().fetchKondisiPetiFromApi(); + await ControllerApi() + .deleteAllKondisiPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi().addAllKondisiPetiDataAPI( + conditionPetiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future fetchDataFromApiAndSync() async { + EasyLoading.show(status: 'Mengambil data dari Server...'); + try { + // await syncToGlobal(); + await syncToGlobal('Peminjaman'); + await syncToGlobal('Pengembalian'); + await syncToGlobal('Transfer'); + + // await reinitAssetStatusApi(); + await reinitWarehouseApi(); + await reinitPetiApi(); + await reinitCustomerApi(); + // await reinitTypePetiApi(); + await reinitConditionPetiApi(); + + await datatablesAssetStatusList(); + EasyLoading.showSuccess('Data berhasil diperbarui'); + } catch (e) { + EasyLoading.showError('Gagal memperbarui data: $e'); + } finally { + EasyLoading.dismiss(); + } + } + + Future syncToGlobal(String type) async { + try { + EasyLoading.show( + status: 'Jangan tutup aplikasi. Kami sedang menyinkronkan...'); + await Future.delayed(Duration(seconds: 3)); + + // Tambahkan penanganan pengunggahan + bool uploadSuccess = false; // Berikan nilai awal false + + if (type == 'Peminjaman') { + List peminjamanList = + await SyncronizationGlobalData().fetchAllPeminjamanInfo(); + uploadSuccess = await SyncronizationPeminjamanData() + .saveToPeminjamanWith(peminjamanList); + + // Jika pengunggahan berhasil, hapus data lokal Peminjaman + if (uploadSuccess) { + await SyncronizationGlobalData().deleteAllPeminjamanData(); + } + } else if (type == 'Pengembalian') { + List pengembalianList = + await SyncronizationGlobalData().fetchAllPengembalianInfo(); + uploadSuccess = await SyncronizationPengembalianData() + .savePengembalianToServerWith(pengembalianList); + + // Jika pengunggahan berhasil, hapus data lokal Pengembalian + if (uploadSuccess) { + await SyncronizationGlobalData().deleteAllPengembalianData(); + } + } else if (type == 'Transfer') { + List transferPetiList = + await SyncronizationGlobalData().fetchAllTransferInfo(); + uploadSuccess = await SyncronizationTransferPetiData() + .saveTransferPetiServerWith(transferPetiList); + + // Jika pengunggahan berhasil, hapus data lokal Pengembalian + if (uploadSuccess) { + await SyncronizationGlobalData().deleteAllTransferData(); + } + } + + // Setelah selesai, tampilkan pesan sukses atau gagal + if (uploadSuccess) { + EasyLoading.showSuccess('Berhasil disinkronkan dengan Server'); + } else { + EasyLoading.showError('Gagal disinkronkan dengan Server'); + } + } catch (error) { + // Handle error jika terjadi + EasyLoading.showError('Terjadi kesalahan: $error'); + } + } + + Future isInteret() async { + await SyncronizationGlobalData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); + } else { + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); + } + }); + } + + // Datatables ------------------------------------------------------------------------ + Future datatablesAssetStatusList() async { + await Controller().fetchAssetStatusLocalController().then((value) { + setState(() { + _data = (value as List) + .map((e) => AssetStatusModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesPetiList() async { + await Controller().fetchPetiData().then((value) { + setState(() { + _petiData = (value as List) + .map((e) => PetiAssetModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesTipePetiList() async { + await Controller().fetchTipePetiData().then((value) { + setState(() { + _tipePetiData = (value as List) + .map((e) => TypePetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesCustomerList() async { + await Controller().fetchCustomerData().then((value) { + setState(() { + _customerData = (value as List) + .map((e) => CustomerModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesWarehouseList() async { + await Controller().fetchWarehouseData().then((value) { + setState(() { + _warehouseData = (value as List) + .map((e) => WarehouseModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + @override void dispose() { // Memastikan untuk membatalkan timer saat widget di-dispose @@ -55,156 +337,6 @@ class _HomePageState extends State { UserModel user = authProvider.user; // String? token = authProvider.token; - Widget header() { - return Container( - margin: EdgeInsets.only( - top: defaultMargin, - left: 10, - right: 10, - bottom: 15.5, - ), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Hallo, ${user.email}', - style: primaryTextStyle.copyWith( - fontSize: 16, - fontWeight: semiBold, - ), - ), - Text( - '${user.email}', - style: subtitleTextStyle.copyWith( - fontSize: 14, - ), - ), - ], - ), - ), - Stack( - children: [ - GestureDetector( - onTap: () { - // Tambahkan aksi yang ingin Anda lakukan ketika ikon notifikasi diklik di sini - }, - child: Icon( - Icons - .notifications, // Ubah ikon notifikasi sesuai kebutuhan - size: 30, - color: Colors.blue[700], // Ubah warna sesuai kebutuhan - ), - ), - Positioned( - right: 0, - top: 0, - child: Container( - padding: EdgeInsets.all(4), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.red, // Warna latar belakang notifikasi - ), - child: Text( - '1', // Jumlah notifikasi (Anda dapat mengubahnya sesuai kebutuhan) - style: TextStyle( - color: Colors.white, // Warna teks notifikasi - fontSize: 12, - fontWeight: FontWeight.bold, - ), - ), - ), - ), - ], - ), - ], - ), - ); - } - - Widget subHeader() { - return Card( - margin: EdgeInsets.only( - top: 10, - left: 10, - right: 10, - ), - child: Container( - padding: EdgeInsets.all(15), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Pengumuman', - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - ), - ), - Text( - DateFormat('dd MMMM yyyy', 'id_ID').format(DateTime.now()), - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - SizedBox(height: 10), - Text( - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod, nisl eget aliquet ultricies, nunc nisl aliquam nisl, vitae aliquam nisl nisl eget nisl. Donec euismod, nisl eget aliquet ultricies, nunc nisl aliquam nisl, vitae aliquam nisl nisl eget nisl.', - style: TextStyle( - fontSize: 11.5, - ), - ), - ], - ), - ), - ); - } - - Widget titleMenu() { - return Container( - margin: EdgeInsets.only( - top: 5, - left: 10, - right: 10, - bottom: 5, - ), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Menu Apps', - style: primaryTextStyle.copyWith( - fontSize: 16, - fontWeight: semiBold, - ), - ), - Text( - 'See All', - style: TextStyle(fontSize: 12, color: Colors.blue[700]), - ), - ], - ), - ], - ), - ), - ], - ), - ); - } - Widget cardMenuPeminjaman() { return Container( margin: EdgeInsets.all(10), @@ -352,82 +484,161 @@ class _HomePageState extends State { ); } - Widget cardRow() { + Widget _buildCountTile(IconData icon, int count, Color color, String text) { return Column( children: [ - Row( - children: [ - cardTotal('PENGADAAN', 0, Icons.shopping_cart), - cardTotal('PEMINJAMAN', 0, Icons.shopping_basket), - ], + CircleAvatar( + backgroundColor: color, + radius: 12, + child: Icon(icon, size: 12, color: Colors.white), ), - SizedBox(height: 5), - Row( - children: [ - cardTotal('PENGEMBALIAN', 0, Icons.reply), - cardTotal('REMINDER PENGEMBALIAN', 0, Icons.access_alarm), - ], + SizedBox(height: 4), + Text( + text, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + ), + ), + Text( + '$count', + style: TextStyle(fontSize: 12), ), ], ); } - Widget _buildDrawer() { - return SizedBox( - //membuat menu drawer - child: Drawer( - //membuat list, - //list digunakan untuk melakukan scrolling jika datanya terlalu panjang - child: ListView( - padding: EdgeInsets.zero, - //di dalam listview ini terdapat beberapa widget drawable - children: [ - UserAccountsDrawerHeader( - //membuat gambar profil - currentAccountPicture: Image( - image: NetworkImage( - "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_960_720.png")), - //membuat nama akun - accountName: Text("Sahretech"), - //membuat nama email - accountEmail: Text("ig: @sahretech"), - //memberikan background - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage( - "https://cdn.pixabay.com/photo/2016/04/24/20/52/laundry-1350593_960_720.jpg"), - fit: BoxFit.cover)), - ), - //membuat list menu - ListTile( - leading: Icon(Icons.home), - title: Text("Beranda"), - onTap: () {}, - ), - ListTile( - leading: Icon(Icons.people), - title: Text("Pegawai"), - onTap: () {}, - ), - ListTile( - leading: Icon(Icons.money), - title: Text("Transaksi"), - onTap: () {}, - ), - Divider(), - ListTile( - leading: Icon(Icons.emoji_emotions), - title: Text("Profil"), - onTap: () {}, - ), - ListTile( - leading: Icon(Icons.info), - title: Text("Tentang"), - onTap: () {}, - ), - ], - ), - ), + Future showSyncDialog(BuildContext context) async { + // Create an instance of ControllerHome + ControllerHome controllerHome = ControllerHome(); + + // Fetch counts from the ControllerHome + int peminjamanCount = await controllerHome.getPeminjamanCount(); + int pengembalianCount = await controllerHome.getPengembalianCount(); + int transferCount = await controllerHome.getTransferCount(); + + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + // Dialog shape and style + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + backgroundColor: Colors.grey[100], + elevation: 0, + + // Dialog content + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Dialog title with close button + Container( + width: double.infinity, + color: Colors.indigo[700], // Indigo background + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + "Sync Server Global", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 20.0, + ), + ), + ), + IconButton( + icon: Icon( + Icons.close, + color: Colors.white, + ), + onPressed: () { + Navigator.pop(context); // Close dialog + }, + ), + ], + ), + ), + + Divider( + height: 1, + thickness: 1, + color: Colors.black, // Black divider + ), + // Display counts for each table + SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + _buildCountTile(Icons.vertical_align_top, peminjamanCount, + Colors.green[700]!, 'Peminjaman'), + _buildCountTile(Icons.vertical_align_bottom, + pengembalianCount, Colors.blue[700]!, 'Pengembalian'), + _buildCountTile(Icons.input_outlined, transferCount, + Colors.yellow[700]!, 'Transfer'), + ], + ), + SizedBox(height: 10), + // Divider + Divider( + height: 1, + thickness: 1, + color: Colors.black, // Black divider + ), + + // Re-init Button + Container( + width: double.infinity, + child: TextButton( + onPressed: () { + Navigator.pop(context); // Close dialog + fetchDataFromApiAndSync(); + }, + child: Text( + "Upload + Download", + style: TextStyle( + color: Colors.black, + fontSize: 16.0, + fontFamily: 'Poppins', + ), + ), + ), + ), + + // Divider + // Divider( + // height: 1, + // thickness: 1, + // color: Colors.black, // Black divider + // ), + + // Upload Only Button + // Container( + // width: double.infinity, + // child: TextButton( + // onPressed: () { + // Navigator.pop(context); // Close dialog + // syncToGlobal('Peminjaman'); + // syncToGlobal('Pengembalian'); + // syncToGlobal('Transfer'); + // }, + // child: Text( + // "Upload Only", + // style: TextStyle( + // color: Colors.black, + // fontSize: 16.0, + // fontFamily: 'Poppins', + // ), + // ), + // ), + // ), + ], + ), + ); + }, ); } @@ -437,6 +648,24 @@ class _HomePageState extends State { elevation: 0, automaticallyImplyLeading: false, backgroundColor: Colors.indigo[700], + actions: [ + IconButton( + icon: Icon( + Icons.cloud_sync, + size: 30, + ), + onPressed: () async { + if (await SyncronizationGlobalData.isInternet()) { + // Display custom dialog when the IconButton is pressed + showSyncDialog(context); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text("No internet connection")), + ); + } + }, + ), + ], title: Row( children: [ SizedBox(width: 10), @@ -445,7 +674,7 @@ class _HomePageState extends State { child: Column( children: [ Text( - 'Beranda', + 'SIOPAS-ISTW', textAlign: TextAlign.center, ), Text( @@ -460,54 +689,9 @@ class _HomePageState extends State { ), ], ), - // actions: [ - // Align( - // alignment: Alignment.center, - // child: Stack( - // children: [ - // GestureDetector( - // onTap: () { - // // Tambahkan aksi yang diinginkan saat ikon ditekan - // }, - // child: Icon( - // Icons.notifications, - // color: Colors.white, - // size: 30, - // ), - // ), - // Positioned( - // right: 0, - // top: 0, - // child: Container( - // padding: EdgeInsets.all(4), - // decoration: BoxDecoration( - // shape: BoxShape.circle, - // color: Colors.red, // Warna latar belakang notifikasi - // ), - // child: Text( - // '5', - // style: TextStyle( - // color: Colors.white, // Warna teks notifikasi - // fontSize: 12, - // fontWeight: FontWeight.bold, - // ), - // ), - // ), - // ), - // ], - // ), - // ), - // SizedBox(width: 10), - // ], ), - // drawer: _buildDrawer(), body: ListView( children: [ - // header(), - // subHeader(), - // SizedBox(height: 10), - // cardRow(), - // titleMenu(), GridView.count( crossAxisCount: 2, shrinkWrap: true, diff --git a/lib/pages/home/main_page.dart b/lib/pages/home/main_page.dart index fb43b97..9386ac7 100644 --- a/lib/pages/home/main_page.dart +++ b/lib/pages/home/main_page.dart @@ -67,7 +67,7 @@ class _MainPageState extends State { // label: 'Receive', // ), BottomNavigationBarItem( - icon: Icon(Icons.person), + icon: Icon(Icons.settings), label: 'Pengaturan', ), ], diff --git a/lib/pages/home/setting_page.dart b/lib/pages/home/setting_page.dart index 6d03038..760aa87 100644 --- a/lib/pages/home/setting_page.dart +++ b/lib/pages/home/setting_page.dart @@ -163,7 +163,7 @@ class SettingPageState extends State { appBar: AppBar( elevation: 0, backgroundColor: Colors.indigo[700], - title: const Text("Settings"), + title: const Text("Pengaturan"), automaticallyImplyLeading: false, ), body: Center( @@ -182,7 +182,7 @@ class SettingPageState extends State { _SingleSection( children: [ _Logout( - title: "Sign out", + title: "Keluar", icon: Icons.exit_to_app_rounded, handleLogout: handleGetLogout, ), diff --git a/lib/pages/peminjaman_barang/conn/syncronize.dart b/lib/pages/peminjaman_barang/conn/syncronize.dart new file mode 100644 index 0000000..1fd92a9 --- /dev/null +++ b/lib/pages/peminjaman_barang/conn/syncronize.dart @@ -0,0 +1,222 @@ +import 'dart:convert'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:intl/intl.dart'; +import '../../../connection/connection.dart'; +import '../../../migrations/databasehelper.dart'; +import '../../../models/asset_status_model.dart'; +import 'package:http/http.dart' as http; + +class SyncronizationPeminjamanData { + Future addData(AssetStatusModel assetStatusModel) async { + final dbClient = await conn.db; + late int result; + try { + result = await dbClient!.insert( + SqfliteDatabaseHelper.peminjamanTable, assetStatusModel.toJson()); + } catch (e) { + print('Error adding data to local SQLite: $e'); + result = 0; // Handle the error appropriately + } + return result; + } + + Future fetchData() async { + var dbclient = await conn.db; + List assetStatusList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.peminjamanTable, orderBy: 'id DESC'); + for (var item in maps) { + assetStatusList.add(item); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllInfo() async { + final dbClient = await conn.db; + List assetStatusList = []; + try { + final maps = await dbClient!.query(SqfliteDatabaseHelper.peminjamanTable); + for (var item in maps) { + assetStatusList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + Future deleteAllAssetStatusData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.peminjamanTable); + } + + Future saveToPeminjamanWith( + List assetStatusesLocalList) async { + for (var i = 0; i < assetStatusesLocalList.length; i++) { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + // Format tanggal sesuai kebutuhan + String formattedCreatedAt = assetStatusesLocalList[i].created_at != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i].created_at!) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": assetStatusesLocalList[i].mobile_id.toString(), + "peti_id": assetStatusesLocalList[i].peti_id.toString(), + "customer_id": assetStatusesLocalList[i].customer_id.toString(), + "warehouse_id": assetStatusesLocalList[i].warehouse_id.toString(), + "exit_at": assetStatusesLocalList[i].exit_at.toString(), + "est_pengembalian": + assetStatusesLocalList[i].est_pengembalian.toString(), + "exit_pic": assetStatusesLocalList[i].exit_pic.toString(), + "exit_warehouse": assetStatusesLocalList[i].exit_warehouse.toString(), + "created_by": assetStatusesLocalList[i].created_by.toString(), + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/store'), + body: data, + ); + + if (response.statusCode == 200) { + // print("Data uploaded successfully for index $i:"); + // print("Response body: ${response.body}"); + print("Saving Data saveToMysqlWith"); + } else { + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + print("Response body: ${response.body}"); + } + } + + return true; // Pengunggahan berhasil + } + + Future fetchAllCustomerInfo() async { + final dbClient = await conn.db; + List contactList = []; + try { + final maps = await dbClient!.query(SqfliteDatabaseHelper.peminjamanTable); + for (var item in maps) { + contactList.add(item); + } + } catch (e) { + print(e.toString()); + } + return contactList; + } + + Future saveToMysql(List assetStatusesLocalList) async { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + for (var i = 0; i < assetStatusesLocalList.length; i++) { +// Format tanggal sesuai kebutuhan + String formattedCreatedAt = + assetStatusesLocalList[i]['created_at'] != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i]['created_at']) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": assetStatusesLocalList[i]['mobile_id'].toString(), + "peti_id": assetStatusesLocalList[i]['peti_id'].toString(), + "customer_id": assetStatusesLocalList[i]['customer_id'].toString(), + "warehouse_id": assetStatusesLocalList[i]['warehouse_id'].toString(), + "exit_at": assetStatusesLocalList[i]['exit_at'].toString(), + "est_pengembalian": + assetStatusesLocalList[i]['est_pengembalian'].toString(), + "exit_pic": assetStatusesLocalList[i]['exit_pic'].toString(), + "exit_warehouse": + assetStatusesLocalList[i]['exit_warehouse'].toString(), + "status": assetStatusesLocalList[i]['status'].toString(), + "created_by": assetStatusesLocalList[i]['created_by'].toString(), + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/store'), + body: data); + if (response.statusCode == 200) { + print(response.body); + print("Saving Data saveToMysql"); + } else { + print(response.statusCode); + } + } + } + + Future> fetchFromApi() async { + final response = await http.get( + Uri.parse(await getBaseUrl() + '/asset-status'), + ); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['asset_status']; + List contactDBList = data + .map( + (item) => AssetStatusModel.fromJson(item as Map)) + .toList(); + + return contactDBList; + } else { + throw Exception('Failed to fetch data from API Asset Status'); + } + } +} diff --git a/lib/pages/peminjaman_barang/controller/peminjaman_controller.dart b/lib/pages/peminjaman_barang/controller/peminjaman_controller.dart new file mode 100644 index 0000000..6605b56 --- /dev/null +++ b/lib/pages/peminjaman_barang/controller/peminjaman_controller.dart @@ -0,0 +1,204 @@ +import 'dart:async'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:http/http.dart' as http; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:sqflite/sqflite.dart'; + +import '../../../migrations/databasehelper.dart'; + +class Controller { + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllPeminjamanInfo() async { + final dbClient = await conn.db; + List assetStatusList = []; + try { + final maps = await dbClient!.query(SqfliteDatabaseHelper.peminjamanTable); + for (var item in maps) { + assetStatusList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + Future addPeminjamanData(AssetStatusModel peminjamanAddModel) async { + var dbclient = await conn.db; + int result = 0; // Provide an initial value + try { + result = await dbclient!.insert( + SqfliteDatabaseHelper.peminjamanTable, peminjamanAddModel.toJson()); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future updatePeminjamanData(AssetStatusModel peminjamanAddModel) async { + var dbclient = await conn.db; + late int result; + try { + result = await dbclient!.update( + SqfliteDatabaseHelper.peminjamanTable, + peminjamanAddModel.toJson(), + where: 'id=?', + whereArgs: [peminjamanAddModel.id], + ); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future fetchAssetStatusLocalController() async { + var dbclient = await conn.db; + List peminjamanStatusList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.peminjamanTable, orderBy: 'id DESC'); + for (var item in maps) { + peminjamanStatusList.add(item); + } + } catch (e) { + print(e.toString()); + } + return peminjamanStatusList; + } + + Future> fetchPeminjamanDataId() async { + var dbclient = await conn.db; + List peminjamanList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.peminjamanTable, orderBy: 'id DESC'); + for (var item in maps) { + peminjamanList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return peminjamanList; + } + + Future deleteAllData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.peminjamanTable); + } + + Future addAllData(List contactList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var contact in contactList) { + batch.insert( + SqfliteDatabaseHelper.peminjamanTable, + contact.toJson(), + ); + } + + await batch.commit(); + } + + Future fetchPetiData() async { + var dbclient = await conn.db; + List petiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.petiTable, orderBy: 'id DESC'); + for (var item in maps) { + petiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return petiList; + } + + Future fetchTipePetiData() async { + var dbclient = await conn.db; + List tipePetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.typePetiTable, orderBy: 'id DESC'); + for (var item in maps) { + tipePetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return tipePetiList; + } + + Future fetchCustomerData() async { + var dbclient = await conn.db; + List customerList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.customerTable, orderBy: 'id DESC'); + for (var item in maps) { + customerList.add(item); + } + } catch (e) { + print(e.toString()); + } + return customerList; + } + + Future fetchWarehouseData() async { + var dbclient = await conn.db; + List warehouseList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.warehouseTable, orderBy: 'id DESC'); + for (var item in maps) { + warehouseList.add(item); + } + } catch (e) { + print(e.toString()); + } + return warehouseList; + } + + Future fetchDisposalData() async { + var dbclient = await conn.db; + List disposalList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.disposalTable, orderBy: 'id DESC'); + for (var item in maps) { + disposalList.add(item); + } + } catch (e) { + print(e.toString()); + } + return disposalList; + } +} diff --git a/lib/pages/peminjaman_barang/create.dart b/lib/pages/peminjaman_barang/create.dart index 0aa0fad..15c5bc7 100644 --- a/lib/pages/peminjaman_barang/create.dart +++ b/lib/pages/peminjaman_barang/create.dart @@ -1,7 +1,15 @@ import 'dart:convert'; import 'dart:core'; +import 'dart:math'; import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/disposal_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/pages/peminjaman_barang/conn/syncronize.dart'; +import 'package:siopas/services/controllerApi.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart'; @@ -10,12 +18,16 @@ import 'package:siopas/models/m_asset_status_model.dart'; import 'package:siopas/models/warehouse_mode.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; import 'package:intl/date_symbol_data_local.dart'; // Import package intl +import 'package:uuid/uuid.dart'; import '../../connection/connection.dart'; import 'package:http/http.dart' as http; import '../../models/user_model.dart'; import '../../providers/auth_provider.dart'; +import '../../services/syncronizeAPI.dart'; +import 'controller/peminjaman_controller.dart'; +import 'package:collection/collection.dart'; class CreatePeminjamanBarang extends StatefulWidget { const CreatePeminjamanBarang({Key? key}) : super(key: key); @@ -25,12 +37,28 @@ class CreatePeminjamanBarang extends StatefulWidget { } class _CreatePeminjamanBarangState extends State { - List _dataAsset = []; - List _dataWarehouse = []; - bool _isLoading = false; String? token; - PetiAssetModel? _valAsset; - WarehouseModel? _valWarehouse; + List? typePetiSqfliteApi; + // List? customerSqfliteApi; + PetiAssetModel? petiSqfliteApi; + WarehouseModel? warehouseSqfliteApi; + WarehouseModel? warehouseTujuanSqfliteApi; + DisposalPetiModel? disposalSqfliteApi; + CustomerModel? customerSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valwarehouseTujuan; + List? _valcustomer; + List? _valdisposal; + + List _allPetiList = []; + + List _unrestrictedPetiList = []; + List _filteredPetiList = []; + bool isQRCodeScanned = false; + + bool loading = true; TextEditingController _exit_atController = TextEditingController(); TextEditingController _est_pengembalianController = TextEditingController(); TextEditingController _penanggungJawabController = TextEditingController(); @@ -44,9 +72,12 @@ class _CreatePeminjamanBarangState extends State { void initState() { super.initState(); _getUserToken(); - fetchDataWarehouse(); - fetchDataAsset(); - initializeDateFormatting('id_ID'); + warehouseListAPI(); + petiListAPI(); + disposalListAPI(); + customerListAPI(); + + initializeDateFormatting('id_ID', null); } void _getUserToken() async { @@ -54,76 +85,226 @@ class _CreatePeminjamanBarangState extends State { if (mounted) { setState(() { token = prefs.getString('token'); + loading = false; }); } } - Future fetchDataAsset() async { - setState(() { - _isLoading = true; - }); - - final response = await http.get(Uri.parse('$baseUrl/peti-asset')); - + Future disposalListAPI() async { if (mounted) { - // Periksa apakah widget masih "mounted" - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['petis']; - - final List newDataAsset = (jsonData as List) - .map((item) => PetiAssetModel.fromJson(item)) - .toList(); - - if (mounted) { - // Periksa lagi sebelum memanggil setState - setState(() { - _dataAsset.addAll(newDataAsset); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Asset Status'); - } + await ControllerApi().fetchDisposalDataAPI().then((value) { + setState(() { + _valdisposal = (value as List) + .map((item) => DisposalPetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); } } - Future fetchDataWarehouse() async { - setState(() { - _isLoading = true; - }); + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + _valcustomer = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - final response = await http.get(Uri.parse('$baseUrl/m-warehouse')); + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + Future petiListAPI() async { if (mounted) { - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['warehouse']; - - final List newDataWarehouse = (jsonData as List) - .map((item) => WarehouseModel.fromJson(item)) - .toList(); - - if (mounted) { - setState(() { - _dataWarehouse.addAll(newDataWarehouse); - _isLoading = false; - }); - } + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future isInteret() async { + await SyncronizationPeminjamanData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Warehouse'); + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); } - } + }); } + // Future _onQRViewCreated(QRViewController controller) async { + // this.controller = controller; + // bool scanned = false; + + // // code to auto focus kamera belakang + // controller.flipCamera(); + // await Future.delayed(const Duration(milliseconds: 400)); + // controller.flipCamera(); + + // controller.scannedDataStream.listen( + // (scanData) { + // if (!scanned) { + // try { + // setState(() { + // result = scanData; + // List lines = result!.code!.split('\n'); + // String idPeti = ''; + // String idWarehouse = ''; + + // for (String line in lines) { + // if (line.contains(';')) { + // List values = line.split(';'); + // if (values.length >= 3) { + // idPeti = values[1]; + // idWarehouse = values[2]; + // break; + // } + // } + // } + + // int? petiId = int.tryParse(idPeti); + // int? warehouseId = int.tryParse(idWarehouse); + // // AuthProvider authProvider = + // // Provider.of(context, listen: false); + // // UserModel user = authProvider.user; + + // if (petiId != null && warehouseId != null) { + // // Check apakah peti dengan warehouse_id yang sesuai ada dalam daftar yang diizinkan + // PetiAssetModel? allowedPeti = _valpeti?.firstWhereOrNull( + // (peti) => + // peti.id == petiId && + // peti.deleted_at != true && + // // peti.warehouse_id == user.warehouse_id && + // peti.status == 'AKTIF', + // ); + + // if (allowedPeti != null) { + // petiSqfliteApi = allowedPeti; + + // warehouseSqfliteApi = _valwarehouse?.firstWhereOrNull( + // // warehouseSqfliteApi = _valwarehouse?.firstWhere( + // (warehouse) => warehouse.id == allowedPeti.warehouse_id, + // ); + // } else { + // // Tampilkan pesan error jika data tidak sesuai dengan hak akses + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Text( + // 'Data Peti tidak ditemukan atau tidak sesuai dengan hak akses.', + // style: TextStyle( + // color: Colors.white, + // fontSize: 12, + // ), + // ), + // backgroundColor: Colors.red[700], + // action: SnackBarAction( + // label: 'Tutup', + // onPressed: () { + // ScaffoldMessenger.of(context).hideCurrentSnackBar(); + // }, + // ), + // ), + // ); + // petiSqfliteApi = null; + // warehouseSqfliteApi = null; + // } + // } else { + // // Tampilkan pesan error jika nilai yang dipindai tidak sesuai + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Row( + // children: [ + // Icon( + // Icons.warning, + // color: Colors.black, + // ), + // SizedBox(width: 8), + // Text( + // 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + // style: TextStyle( + // color: Colors.black, + // fontSize: 12, + // ), + // ), + // ], + // ), + // backgroundColor: Colors.yellow[700], + // ), + // ); + // petiSqfliteApi = null; + // warehouseSqfliteApi = null; + // } + + // scanned = true; + // }); + + // controller.stopCamera(); + + // Future.delayed(Duration(milliseconds: 500), () { + // if (mounted) { + // Navigator.of(context).pop(); + // } + // }); + // } catch (e) { + // controller.stopCamera(); + + // // Reset nilai dropdown Peti dan Warehouse + // setState(() { + // petiSqfliteApi = null; + // warehouseSqfliteApi = null; + // }); + // print('Error scanning QR Code: $e'); + + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Row( + // children: [ + // Icon( + // Icons.error, + // color: Colors.red[400], + // ), + // SizedBox(width: 8), + // Flexible( + // child: Text( + // e.toString(), + // style: TextStyle( + // color: Colors.white, + // fontSize: 12, + // ), + // ), + // ), + // ], + // ), + // backgroundColor: Colors.red[700], + // ), + // ); + // } + // } + // }, + // ); + // } + Future _onQRViewCreated(QRViewController controller) async { this.controller = controller; bool scanned = false; @@ -133,151 +314,164 @@ class _CreatePeminjamanBarangState extends State { await Future.delayed(const Duration(milliseconds: 400)); controller.flipCamera(); - controller.scannedDataStream.listen((scanData) { - if (!scanned) { - try { - setState(() { - result = scanData; - - List lines = result!.code!.split('\n'); - - String idPeti = ''; - String idWarehouse = ''; - - for (String line in lines) { - if (line.contains(';')) { - List values = line.split(';'); - if (values.length >= 3) { - idPeti = values[1]; - idWarehouse = values[2]; - break; + controller.scannedDataStream.listen( + (scanData) { + if (!scanned) { + try { + setState(() { + result = scanData; + List lines = result!.code!.split('\n'); + String idPeti = ''; + String idWarehouse = ''; + + for (String line in lines) { + if (line.contains(';')) { + List values = line.split(';'); + if (values.length >= 3) { + idPeti = values[1]; + idWarehouse = values[2]; + break; + } } } - } - - int? petiId = int.tryParse(idPeti); - int? warehouseId = int.tryParse(idWarehouse); - - if (petiId != null && warehouseId != null) { - _valAsset = _dataAsset.firstWhere( - (peti) => peti.id == petiId, - orElse: () => _valAsset!, - ); - - _valWarehouse = _dataWarehouse.firstWhere( - (warehouse) => warehouse.id == warehouseId, - orElse: () => _valWarehouse!, - ); - } else { - // Jika nilai yang dipindai tidak sesuai, tampilkan pesan kesalahan - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Row( - children: [ - Icon( - Icons.warning, - color: Colors.black, // Warna ikon - ), - SizedBox(width: 8), // Jarak antara ikon dan teks - Text( - 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + + int? petiId = int.tryParse(idPeti); + int? warehouseId = int.tryParse(idWarehouse); + // AuthProvider authProvider = Provider.of(context, listen: false); + // UserModel user = authProvider.user; + + // Dalam fungsi yang menangani pemindaian QR code + // Dalam fungsi yang menangani pemindaian QR code + if (petiId != null && warehouseId != null) { + // Check apakah peti dengan warehouse_id yang sesuai ada dalam daftar yang diizinkan + PetiAssetModel? allowedPeti = _valpeti?.firstWhereOrNull( + (peti) => + peti.id == petiId && + peti.deleted_at != true && + peti.status == 'AKTIF', + ); + + if (allowedPeti != null) { + setState(() { + isQRCodeScanned = true; + // Mengisi _filteredPetiList untuk dropdown hasil QR Code + _filteredPetiList = [ + _valpeti!.firstWhere((peti) => peti.id == allowedPeti.id) + ]; + + petiSqfliteApi = allowedPeti; + + warehouseSqfliteApi = _valwarehouse?.firstWhereOrNull( + (warehouse) => warehouse.id == allowedPeti.warehouse_id, + ); + + customerSqfliteApi = _valcustomer?.firstWhereOrNull( + (customer) => customer.id == allowedPeti.customer_id, + ); + }); + } else { + // Tampilkan pesan error jika data tidak sesuai dengan hak akses + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Data Peti tidak ditemukan atau tidak sesuai dengan hak akses.', style: TextStyle( - color: Colors.black, + color: Colors.white, fontSize: 12, - ), // Warna teks + ), ), - ], + backgroundColor: Colors.red[700], + action: SnackBarAction( + label: 'Tutup', + onPressed: () { + ScaffoldMessenger.of(context).hideCurrentSnackBar(); + }, + ), + ), + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } + } else { + // Tampilkan pesan error jika nilai yang dipindai tidak sesuai + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.warning, + color: Colors.black, + ), + SizedBox(width: 8), + Text( + 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + style: TextStyle( + color: Colors.black, + fontSize: 12, + ), + ), + ], + ), + backgroundColor: Colors.yellow[700], ), - backgroundColor: - Colors.yellow[700], // Warna latar belakang SnackBar - ), - ); - } - - scanned = true; - }); - - controller.stopCamera(); - - Future.delayed(Duration(milliseconds: 500), () { - if (mounted) { - Navigator.of(context).pop(); - } - }); - } catch (e) { - print('Error scanning QR Code: $e'); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('Error scanning QR Code: $e'), - ), - ); - } - } - }); - } + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } - // void _onQRViewCreated(QRViewController controller) { - // this.controller = controller; - // bool scanned = false; + scanned = true; + }); - // controller.scannedDataStream.listen((scanData) { - // if (!scanned) { - // try { - // setState(() { - // result = scanData; - - // List lines = result!.code!.split('\n'); - - // for (String line in lines) { - // if (line.startsWith('ID Peti')) { - // String idPeti = line.split(': ')[1]; - // // Isi formulir dropdown asset - // _valAsset = _dataAsset - // .firstWhere((peti) => peti.id == int.parse(idPeti)); - // } else if (line.startsWith('Date:')) { - // String datePeminjaman = line.split(': ')[1]; - // try { - // DateTime parsedDate = - // DateFormat('dd-MM-yyyy').parse(datePeminjaman); - // String formattedDate = - // DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(parsedDate); - // _exit_atController.text = formattedDate; - // } catch (e) { - // print('Error parsing date: $e'); - // // Lakukan penanganan jika format tanggal tidak sesuai - // } - // } else if (line.startsWith('ID Warehouse')) { - // String idWarehouse = line.split(': ')[1]; - // // Isi formulir dropdown gudang - // _valWarehouse = _dataWarehouse.firstWhere( - // (warehouse) => warehouse.id == int.parse(idWarehouse)); - // } - // } - - // scanned = true; - // }); - - // controller.stopCamera(); - - // Future.delayed(Duration(milliseconds: 500), () { - // if (mounted) { - // Navigator.of(context).pop(); - // } - // }); - // } catch (e) { - // print('Error scanning QR Code: $e'); - // ScaffoldMessenger.of(context).showSnackBar(SnackBar( - // content: Text('Error scanning QR Code: $e'), - // )); - // } - // } - // }); - // } + controller.stopCamera(); - @override - void dispose() { - super.dispose(); - controller?.dispose(); + Future.delayed(Duration(milliseconds: 500), () { + if (mounted) { + Navigator.of(context).pop(); + } + }); + } catch (e) { + controller.stopCamera(); + + // Reset nilai dropdown Peti dan Warehouse + setState(() { + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + print('Error scanning QR Code: $e'); + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.error, + color: Colors.red[400], + ), + SizedBox(width: 8), + Flexible( + child: Text( + e.toString(), + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + ], + ), + backgroundColor: Colors.red[700], + ), + ); + } + } + }, + ); } @override @@ -285,104 +479,59 @@ class _CreatePeminjamanBarangState extends State { AuthProvider authProvider = Provider.of(context, listen: false); UserModel user = authProvider.user; - var scanArea = (MediaQuery.of(context).size.width < 400 || - MediaQuery.of(context).size.height < 400) - ? 150.0 - : 300.0; - - // var now = DateTime.now(); - // var dt = DateTime(DateTime.now().year, DateTime.now().month, - // DateTime.now().day, DateTime.now().hour, DateTime.now().minute); - // // _exit_atController.text = DateFormat('yyyy-MM-dd HH:mm:ss').format(dt); - // _exit_atController.text = DateFormat('dd-MM-yyyy').format(dt); + var uuid = Uuid(); - Future _storePeminjaman() async { - setState(() { - _isLoading = true; - }); + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } try { - final response = await http.post( - Uri.parse('$baseUrl/asset-status/store'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': token!, - }, - body: jsonEncode({ - 'peti_id': _valAsset!.id, - 'exit_at': _exit_atController.text, - 'exit_pic': _penanggungJawabController.text, - 'exit_warehouse': _valWarehouse!.id, - 'est_pengembalian': _est_pengembalianController.text, - 'created_by': user.fullname, - // 'updated_by': user.fullname, - }), - ); - - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['peminjam']; - - print('Berhasil menyimpan data: $jsonData'); + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } - // Tampilkan snackbar - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.greenAccent[700], - content: Row( - children: [ - Icon( - Icons.check_circle_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Data berhasil disimpan'), - ], - ), - duration: Duration(seconds: 3), // Durasi tampilan snackbar - ), - ); + Future saveAssetData() async { + DateTime now = DateTime.now().toLocal(); + String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(now); + + if (_exit_atController.text.isNotEmpty) { + AssetStatusModel assetAddModel = AssetStatusModel( + id: null, + peti_id: petiSqfliteApi!.id, + customer_id: customerSqfliteApi!.id, + warehouse_id: warehouseSqfliteApi!.id, + exit_at: parseDateTime(_exit_atController.text), + exit_pic: _penanggungJawabController.text, + exit_warehouse: warehouseTujuanSqfliteApi!.id, + est_pengembalian: parseDateTime(_est_pengembalianController.text), + created_by: user.fullname, + created_at: parseDateTime(formattedDate), + mobile_id: uuid.v4(), + ); - // Reset form input - _exit_atController.text = ''; - _valAsset = null; - _valWarehouse = null; - result = null; + // Call addData function + int result = await Controller().addPeminjamanData(assetAddModel); + if (result > 0) { + print("Success Tambah data"); + // print(result); + Navigator.pushNamed(context, '/peminjaman-barang'); + EasyLoading.showSuccess("Data Berhasil Disimpan"); } else { - // Reset form input - _exit_atController.text = ''; - _valAsset = null; - _valWarehouse = null; - result = null; - throw Exception('Gagal menyimpan data Asset Status'); - } - } catch (e) { - print('Error storing data: $e'); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.redAccent[700], - content: Row( - children: [ - Icon( - Icons.error_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Gagal menyimpan data'), - ], - ), - duration: Duration(seconds: 2), // Durasi tampilan snackbar - ), - ); - } finally { - if (mounted) { - setState(() { - _isLoading = false; - }); + print("Failed"); } } } + var scanArea = (MediaQuery.of(context).size.width < 400 || + MediaQuery.of(context).size.height < 400) + ? 250.0 + : 300.0; + return Scaffold( appBar: AppBar( automaticallyImplyLeading: false, @@ -392,18 +541,12 @@ class _CreatePeminjamanBarangState extends State { style: TextStyle( fontSize: 16, )), - leading: IconButton( - icon: Icon(Icons.arrow_back), - onPressed: () { - Navigator.pushNamed(context, '/peminjaman-barang'); - }, - ), ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) + body: loading + ? Center(child: CircularProgressIndicator()) : SingleChildScrollView( child: Padding( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.all(8.0), child: Form( key: _formKey, child: Column( @@ -415,7 +558,61 @@ class _CreatePeminjamanBarangState extends State { elevation: 2, child: Container( margin: EdgeInsets.all(8), - child: DropdownButtonFormField( + child: + // DropdownButtonFormField( + // validator: (value) { + // if (value == null) { + // return 'Harus diisi'; + // } + // return null; + // }, + // decoration: InputDecoration( + // labelText: 'Peti', + // border: OutlineInputBorder(), + // ), + // hint: Text("Pilih Peti"), + // value: petiSqfliteApi, + // items: (_valpeti ?? []) + // .where((peti) => + // peti.deleted_at != true && + // (peti.warehouse_id == + // user.warehouse_id) && + // (peti.status == 'AKTIF')) + // .map((PetiAssetModel peti) { + // return DropdownMenuItem( + // child: Text( + // '${peti.fix_lot}', // Menampilkan warehouse_id + // style: TextStyle( + // fontSize: 12, + // ), + // ), + // value: peti, + // ); + // }).toList(), + // onChanged: (PetiAssetModel? value) { + // setState( + // () { + // petiSqfliteApi = value; + // if (value != null) { + // warehouseSqfliteApi = + // _valwarehouse?.firstWhere( + // (warehouse) => + // warehouse.id == + // value.warehouse_id, + // ); + // customerSqfliteApi = + // _valcustomer?.firstWhereOrNull( + // (customer) => + // customer.id == + // value.customer_id, + // ); + // } + // }, + // ); + // }, + // ), + + DropdownButtonFormField( validator: (value) { if (value == null) { return 'Harus diisi'; @@ -427,25 +624,46 @@ class _CreatePeminjamanBarangState extends State { border: OutlineInputBorder(), ), hint: Text("Pilih Peti"), - value: _valAsset, - items: _dataAsset.map((PetiAssetModel item) { + value: petiSqfliteApi, + items: (isQRCodeScanned + ? _filteredPetiList + : (_valpeti ?? []).where((peti) => + peti.deleted_at != true && + (peti.warehouse_id == + user.warehouse_id) && + (peti.status == 'AKTIF'))) + .map((PetiAssetModel peti) { return DropdownMenuItem( - child: Text('${item.fix_lot}'), - value: item, + child: Text( + '${peti.fix_lot}', + style: TextStyle( + fontSize: 12, + ), + ), + value: peti, ); }).toList(), onChanged: (PetiAssetModel? value) { setState(() { - _valAsset = value; + petiSqfliteApi = value; if (value != null) { - // Set _valWarehouse berdasarkan warehouse_id dari PetiAssetModel - _valWarehouse = - _dataWarehouse.firstWhere( + warehouseSqfliteApi = + _valwarehouse?.firstWhere( (warehouse) => warehouse.id == - int.parse(value.warehouse_id - .toString()), + value.warehouse_id, ); + customerSqfliteApi = + _valcustomer?.firstWhereOrNull( + (customer) => + customer.id == value.customer_id, + ); + + // Perbarui _unrestrictedPetiList sesuai pemilihan manual + _unrestrictedPetiList = [ + _valpeti!.firstWhere( + (peti) => peti.id == value.id) + ]; } }); }, @@ -533,39 +751,40 @@ class _CreatePeminjamanBarangState extends State { elevation: 2, child: Padding( padding: const EdgeInsets.all(8), - child: FormBuilderDateTimePicker( + child: DropdownButtonFormField( validator: (value) { - if (_exit_atController.text.isEmpty) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.redAccent[700], - content: Row( - children: [ - Icon( - Icons.error_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Tanggal Peminjaman harus diisi'), - ], - ), - duration: Duration(seconds: 2), - ), - ); - return null; // Return null jika ada kesalahan + if (value == null) { + return 'Harus diisi'; } - return null; // Return null jika tidak ada kesalahan + return null; }, - controller: _exit_atController, - name: 'tanggal', - inputType: InputType.date, - // format: DateFormat('yyyy-MM-dd HH:mm:ss.SSS'), - format: DateFormat('yyyy-MM-dd', 'id_ID'), decoration: InputDecoration( - labelText: 'Tanggal Peminjaman', + labelText: 'Customer', border: OutlineInputBorder(), - suffixIcon: Icon(Icons.calendar_today), ), + hint: Text("Pilih Customer"), + value: customerSqfliteApi, + items: (_valcustomer ?? []) + .where( + (customer) => customer.deleted_at != true) + .map((CustomerModel customer) { + return DropdownMenuItem( + child: Text( + '${customer.name}', // Menampilkan warehouse_id + style: TextStyle( + fontSize: 12, + ), + ), + value: customer, + ); + }).toList(), + onChanged: (CustomerModel? value) { + setState( + () { + customerSqfliteApi = value; + }, + ); + }, ), ), ), @@ -575,43 +794,67 @@ class _CreatePeminjamanBarangState extends State { child: Padding( padding: const EdgeInsets.all(8), child: FormBuilderDateTimePicker( - validator: (value) { - if (_est_pengembalianController.text.isEmpty) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.redAccent[700], - content: Row( - children: [ - Icon( - Icons.error_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text( - 'Estimasi Tanggal Pengembalian harus diisi'), - ], - ), - duration: Duration(seconds: 2), - ), - ); - return null; // Return null jika ada kesalahan - } - return null; // Return null jika tidak ada kesalahan - }, - controller: _est_pengembalianController, - name: 'tanggal', + controller: _exit_atController, + name: 'tanggal_peminjaman', inputType: InputType.date, - // format: DateFormat('yyyy-MM-dd HH:mm:ss.SSS'), format: DateFormat('yyyy-MM-dd', 'id_ID'), decoration: InputDecoration( - labelText: 'Estimasi Tanggal Pengembalian', + labelText: 'Tanggal Peminjaman', border: OutlineInputBorder(), suffixIcon: Icon(Icons.calendar_today), ), + onChanged: (DateTime? selectedDate) { + if (selectedDate != null) { + // Mengisi tanggal estimasi 7 hari ke depan + DateTime estimasiPengembalian = + selectedDate.add(Duration(days: 7)); + _est_pengembalianController.text = + DateFormat('yyyy-MM-dd') + .format(estimasiPengembalian); + } + }, ), ), ), SizedBox(height: 16), + Card( + elevation: 2, + child: Column( + children: [ + SizedBox(height: 8), + Container( + margin: EdgeInsets.only( + left: 8), // Atur nilai left sesuai kebutuhan + child: Align( + alignment: Alignment.centerLeft, + child: Text( + '* Terisi otomatis 7 hari setelah tanggal peminjaman', + style: TextStyle( + fontSize: 12, + color: Colors.red, + fontStyle: FontStyle.italic), + ), + ), + ), + SizedBox(height: 8), + Padding( + padding: const EdgeInsets.all(8), + child: FormBuilderDateTimePicker( + controller: _est_pengembalianController, + name: 'estimasi_pengembalian', + inputType: InputType.date, + format: DateFormat('yyyy-MM-dd', 'id_ID'), + decoration: InputDecoration( + labelText: 'Estimasi Tanggal Pengembalian', + border: OutlineInputBorder(), + suffixIcon: Icon(Icons.calendar_today), + ), + ), + ), + ], + ), + ), + SizedBox(height: 16), Card( elevation: 2, child: Padding( @@ -632,11 +875,10 @@ class _CreatePeminjamanBarangState extends State { ), ), ), - SizedBox(height: 16), + SizedBox(height: 13), Card( - elevation: 2, child: Padding( - padding: const EdgeInsets.all(8), + padding: const EdgeInsets.all(8.0), child: DropdownButtonFormField( validator: (value) { if (value == null) { @@ -645,82 +887,65 @@ class _CreatePeminjamanBarangState extends State { return null; }, decoration: InputDecoration( - labelText: 'Pilih Gudang', + labelText: 'Asal Gudang', border: OutlineInputBorder(), ), - hint: Text("Pilih Gudang"), - value: _valWarehouse, - items: - _dataWarehouse.map((WarehouseModel warehouse) { - return DropdownMenuItem( - child: Text('${warehouse.name}'), - value: warehouse, - ); - }).toList(), + hint: Text("Asal Gudang"), + value: warehouseSqfliteApi, + items: (_valwarehouse ?? []) + .where((warehouse) => + warehouse.deleted_at != true) + .map((WarehouseModel warehouse) + // _valwarehouse?.map((WarehouseModel warehouse) + { + return DropdownMenuItem( + child: Text('${warehouse.name}'), + value: warehouse, + ); + }).toList() ?? + [], onChanged: (WarehouseModel? value) { setState(() { - _valWarehouse = value; + warehouseSqfliteApi = value; }); }, ), ), ), - SizedBox(height: 16), - // FractionallySizedBox( - // widthFactor: 1.0, // Lebar penuh - // child: Card( - // elevation: 1, - // child: Padding( - // padding: const EdgeInsets.all(8), - // child: Column( - // children: [ - // Text( - // 'Data dari QR Code:', - // style: TextStyle( - // fontSize: 16, - // fontWeight: FontWeight.bold, - // ), - // ), - // SizedBox(height: 8), - // Text( - // result != null - // ? result!.code ?? - // 'Belum ada data QR Code terpindai' - // : 'Belum ada data QR Code terpindai', - // style: TextStyle(fontSize: 14), - // ), - // ], - // ), - // ), - // ), - // ), - Visibility( - visible: false, - child: FractionallySizedBox( - widthFactor: 1.0, - child: Card( - elevation: 1, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - children: [ - Text( - 'Data dari QR Code:', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 8), - Text( - result != null && result!.code != null - ? result!.code! - : 'Belum ada data QR Code terpindai', - style: TextStyle(fontSize: 14), - ), - ], - ), + SizedBox(height: 13), + Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: DropdownButtonFormField( + validator: (value) { + if (value == null) { + return 'Harus diisi'; + } + return null; + }, + decoration: InputDecoration( + labelText: 'Tujuan Gudang', + border: OutlineInputBorder(), ), + hint: Text("Tujuan Gudang"), + value: warehouseTujuanSqfliteApi, + items: (_valwarehouse ?? []) + .where((warehouseTujuan) => + warehouseTujuan.deleted_at != true) + .map((WarehouseModel warehouseTujuan) + // _valwarehouse?.map((WarehouseModel warehouse) + { + return DropdownMenuItem( + child: Text('${warehouseTujuan.name}'), + value: warehouseTujuan, + ); + }).toList() ?? + [], + onChanged: (WarehouseModel? value) { + setState(() { + warehouseTujuanSqfliteApi = value; + }); + }, ), ), ), @@ -758,58 +983,6 @@ class _CreatePeminjamanBarangState extends State { ], ), ), - // Container( - // // width: 50, // Lebar sesuai kebutuhan - // width: 65.0, - // height: 50, // Tinggi sesuai kebutuhan - // decoration: BoxDecoration( - // color: Colors.indigoAccent, // Warna latar belakang - // shape: BoxShape.circle, // Membuat lingkaran - // ), - // child: IconButton( - // onPressed: () { - // showModalBottomSheet( - // context: context, - // builder: (BuildContext context) { - // return Stack( - // alignment: Alignment.center, - // children: [ - // Container( - // height: double.infinity, - // width: double.infinity, - // child: QRView( - // key: qrKey, - // onQRViewCreated: _onQRViewCreated, - // overlay: QrScannerOverlayShape( - // borderColor: Colors.red, - // borderRadius: 10, - // borderLength: 30, - // borderWidth: 10, - // cutOutSize: 300, - // ), - // ), - // ), - // Positioned( - // bottom: 16, - // child: ElevatedButton( - // onPressed: () { - // Navigator.of(context).pop(); - // }, - // child: Text('Tutup'), - // ), - // ), - // ], - // ); - // }, - // ); - // }, - // icon: Icon( - // Icons.qr_code, - // size: 30, - // ), - // color: Colors.white, // Warna ikon - // ), - // ), Container( width: MediaQuery.of(context).size.width / 3, child: Column( @@ -823,11 +996,13 @@ class _CreatePeminjamanBarangState extends State { color: Colors.green, // Warna hijau untuk save ), child: IconButton( - onPressed: () { + onPressed: () async { if (_formKey.currentState!.validate()) { try { - if (_exit_atController.text.isNotEmpty) { - _storePeminjaman(); + if (_exit_atController.text.isNotEmpty && + petiSqfliteApi != null && + warehouseSqfliteApi != null) { + await saveAssetData(); } } catch (e) { print('Error storing data: $e'); diff --git a/lib/pages/peminjaman_barang/peminjaman_stock_page.dart b/lib/pages/peminjaman_barang/peminjaman_stock_page.dart index b991e11..3fe62fd 100644 --- a/lib/pages/peminjaman_barang/peminjaman_stock_page.dart +++ b/lib/pages/peminjaman_barang/peminjaman_stock_page.dart @@ -1,16 +1,26 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:data_table_2/data_table_2.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/disposal_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/models/warehouse_mode.dart'; +import 'package:siopas/pages/peminjaman_barang/conn/syncronize.dart'; +import 'package:siopas/services/syncronizeAPI.dart'; +import 'package:siopas/services/controllerApi.dart'; +import 'package:siopas/pages/peminjaman_barang/controller/peminjaman_controller.dart'; import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:siopas/models/asset_status_model.dart'; import 'package:siopas/providers/asset_status_provider.dart'; -import 'package:http/http.dart' as http; +import 'package:collection/collection.dart'; -import '../../connection/connection.dart'; +import '../../models/condition_peti_model.dart'; import 'show.dart'; class AssetStatusPage extends StatefulWidget { @@ -22,16 +32,49 @@ class AssetStatusPage extends StatefulWidget { class AssetStatusPageState extends State { String? token; + bool loading = true; + + // Reinit atau Upload Only + WarehouseModel? warehouseSqfliteApi; + List? typePetiSqfliteApi; + List? customerSqfliteApi; + PetiAssetModel? petiSqfliteApi; + DisposalPetiModel? disposalSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valdisposal; + + // Datatable int _currentPage = 1; int _pageSize = 10; - List _data = []; + List? _data; + List? _petiData; + List? _tipePetiData; + List? _customerData; + List? _warehouseData; + bool _isLoading = false; + Timer? _timer; @override void initState() { super.initState(); _getUserToken(); - fetchData(); + + warehouseListAPI(); + typePetiListAPI(); + customerListAPI(); + petiListAPI(); + // disposalListAPI(); + + // Tampil data Datatables + datatablesAssetStatusList(); + datatablesPetiList(); + datatablesTipePetiList(); + datatablesCustomerList(); + datatablesWarehouseList(); + _data = []; } void _getUserToken() async { @@ -43,149 +86,617 @@ class AssetStatusPageState extends State { } } - Future fetchData() async { + // Reinit atau Upload Only ------------------------------------------------------------------------ + Future warehouseListAPI() async { if (mounted) { - setState(() { - _isLoading = true; + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); }); + } + } - try { - final response = await http.get(Uri.parse('$baseUrl/asset-status')); + // Future disposalListAPI() async { + // if (mounted) { + // await ControllerApi().fetchDisposalDataAPI().then((value) { + // setState(() { + // _valdisposal = (value as List) + // .map((item) => DisposalPetiModel.fromJson(item)) + // .toList(); + // loading = false; + // }); + // }); + // } + // } - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['asset_status']; + Future typePetiListAPI() async { + if (mounted) { + await ControllerApi().fetchTipePetiDataAPI().then((value) { + setState(() { + typePetiSqfliteApi = (value as List) + .map((item) => TypePetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - final List newData = (jsonData as List) - .map((item) => AssetStatusModel.fromJson(item)) + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerSqfliteApi = (value as List) + .map((item) => CustomerModel.fromJson(item)) .toList(); + loading = false; + }); + }); + } + } - if (mounted) { - setState(() { - _data.addAll(newData); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data'); - } - } catch (e) { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - print('Error fetching data: $e'); - } + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); } } + Future reinitAssetStatusApi() async { + EasyLoading.show(status: 'Mengambil data Asset Status...'); + List assetStatusApiData = + await SyncronizationDataAPI().fetchAssetStatusFromApi(); + await ControllerApi() + .deleteAllAssetStatusDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllAssetStatusDataAPI(assetStatusApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitWarehouseApi() async { + EasyLoading.show(status: 'Mengambil data Warehouse...'); + List warehouseApiData = + await SyncronizationDataAPI().fetchWarehouseFromApi(); + await ControllerApi() + .deleteAllWarehouseDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllWarehouseDataAPI(warehouseApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitPetiApi() async { + EasyLoading.show(status: 'Mengambil data Peti...'); + List petiApiData = + await SyncronizationDataAPI().fetchPetiFromApi(); + await ControllerApi() + .deleteAllPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllPetiDataAPI(petiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitCustomerApi() async { + EasyLoading.show(status: 'Mengambil data Customer...'); + List customerApiData = + await SyncronizationDataAPI().fetchCustomerFromApi(); + await ControllerApi() + .deleteAllCustomerDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllCustomerDataAPI(customerApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitTypePetiApi() async { + EasyLoading.show(status: 'Mengambil data Type Peti...'); + List typePetiApiData = + await SyncronizationDataAPI().fetchTipePetiFromApi(); + await ControllerApi() + .deleteAllTipePetiDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllTipePetiDataAPI(typePetiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitConditionPetiApi() async { + EasyLoading.show(status: 'Mengambil data Condition Peti...'); + List conditionPetiApiData = + await SyncronizationDataAPI().fetchKondisiPetiFromApi(); + await ControllerApi() + .deleteAllKondisiPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi().addAllKondisiPetiDataAPI( + conditionPetiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + // Future reinitDisposalApi() async { + // List disposalApiData = + // await SyncronizationDataAPI().fetchDisposalFromApi(); + // await ControllerApi() + // .deleteAllDisposalDataAPI(); // Clear existing data in SQLite + // await ControllerApi() + // .addAllDisposalDataAPI(disposalApiData); // Add new data to SQLite + // } + + Future fetchDataFromApiAndSync() async { + EasyLoading.show(status: 'Mengambil data dari Server...'); + await Future.delayed(Duration(seconds: 3)); + + try { + await syncToMysql(); + + // await reinitAssetStatusApi(); + await reinitWarehouseApi(); + await reinitPetiApi(); + await reinitCustomerApi(); + // await reinitTypePetiApi(); + await reinitConditionPetiApi(); + // await reinitDisposalApi(); + + await datatablesAssetStatusList(); + EasyLoading.showSuccess('Data berhasil diperbarui'); + } catch (e) { + EasyLoading.showError('Gagal memperbarui data: $e'); + } finally { + EasyLoading.dismiss(); + } + } + + Future syncToMysql() async { + await SyncronizationPeminjamanData() + .fetchAllInfo() + .then((peminjamanList) async { + EasyLoading.show( + status: 'Jangan tutup aplikasi. Kami sedang menyinkronkan...'); + await Future.delayed(Duration(seconds: 3)); + + // Tambahkan penanganan pengunggahan + bool uploadSuccess = await SyncronizationPeminjamanData() + .saveToPeminjamanWith(peminjamanList); + + // Jika pengunggahan berhasil, hapus data lokal + if (uploadSuccess) { + await SyncronizationPeminjamanData().deleteAllAssetStatusData(); + // Setelah selesai, tampilkan pesan sukses + EasyLoading.showSuccess('Berhasil disinkronkan dengan Server'); + await datatablesAssetStatusList(); + } else { + // Tampilkan pesan gagal jika pengunggahan tidak berhasil + EasyLoading.showError('Gagal disinkronkan dengan Server'); + } + }); + } + + // Future syncToMysql() async { + // await SyncronizationData().fetchAllInfo().then((assetList) async { + // EasyLoading.show(status: 'Don\'t close app. We are syncing...'); + // await SyncronizationData().saveToMysqlWith(assetList); + // await SyncronizationData().deleteAllAssetStatusData(); + // // EasyLoading.showSuccess('Successfully saved to MySQL'); + // }); + // } + + Future isInteret() async { + await SyncronizationPeminjamanData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); + } else { + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); + } + }); + } + + // Datatables ------------------------------------------------------------------------ + Future datatablesAssetStatusList() async { + await Controller().fetchAssetStatusLocalController().then((value) { + setState(() { + _data = (value as List) + .map((e) => AssetStatusModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesPetiList() async { + await Controller().fetchPetiData().then((value) { + setState(() { + _petiData = (value as List) + .map((e) => PetiAssetModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesTipePetiList() async { + await Controller().fetchTipePetiData().then((value) { + setState(() { + _tipePetiData = (value as List) + .map((e) => TypePetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesCustomerList() async { + await Controller().fetchCustomerData().then((value) { + setState(() { + _customerData = (value as List) + .map((e) => CustomerModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesWarehouseList() async { + await Controller().fetchWarehouseData().then((value) { + setState(() { + _warehouseData = (value as List) + .map((e) => WarehouseModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + void _loadMoreData() { if (mounted && !_isLoading) { setState(() { _currentPage++; }); - fetchData(); + datatablesAssetStatusList(); } } @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Colors.indigo[700], - elevation: 0, - title: Text('Data Peminjaman Barang', - style: TextStyle( - fontSize: 16, - )), - leading: IconButton( - icon: Icon(Icons.arrow_back, color: Colors.white), - onPressed: () { - Navigator.pushNamed(context, '/home'); - }, - ), - ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) - : SingleChildScrollView( - child: SizedBox( - width: double.infinity, - child: PaginatedDataTable( - header: const Text('Peminjaman Barang'), - rowsPerPage: _pageSize, - availableRowsPerPage: const [10, 25, 50], - onRowsPerPageChanged: (value) { - setState(() { - _pageSize = value!; - }); - }, - columns: const [ - DataColumn(label: Text('No')), - DataColumn(label: Text('')), - DataColumn(label: Text('Kode Peti')), - DataColumn(label: Text('Nama Customer')), - DataColumn(label: Text('Tgl Peminjaman')), - DataColumn(label: Text('PJ Peminjaman')), - DataColumn(label: Text('Asal Gudang')), - ], - source: _DataSource(data: _data, context: context), - ), - ), + // Add this function outside the build method + void showSyncDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + // Dialog shape and style + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), ), - bottomNavigationBar: BottomAppBar( - color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang - child: Container( - height: 65.0, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - customBorder: CircleBorder(), - onTap: () { - // Aksi ketika ikon diklik - Navigator.pushNamed(context, '/peminjaman-barang/create'); - }, - child: Container( - width: 45, - height: 45, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.greenAccent[700], + backgroundColor: Colors.grey[100], + elevation: 0, + + // Dialog content + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Dialog title with close button + Container( + width: double.infinity, + color: Colors.indigo[700], // Indigo background + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + "Sync Server Peminjaman", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16.0, + ), + ), + ), + IconButton( + icon: Icon( + Icons.close, + color: Colors.white, + ), + onPressed: () { + Navigator.pop(context); // Close dialog + }, + ), + ], ), - child: Icon( - Icons.add, - size: 30, - color: Colors.white, + ), + + // Divider + Divider( + height: 1, + thickness: 1, + color: Colors.black, // Black divider + ), + + // Re-init Button + Container( + width: double.infinity, + child: TextButton( + onPressed: () { + Navigator.pop(context); // Close dialog + fetchDataFromApiAndSync(); + }, + child: Text( + "Upload + Download", + style: TextStyle( + color: Colors.black, + fontSize: 16.0, + fontFamily: 'Poppins', + ), + ), ), ), - ), + + // Divider + // Divider( + // height: 1, + // thickness: 1, + // color: Colors.black, // Black divider + // ), + + // Upload Only Button + // Container( + // width: double.infinity, + // child: TextButton( + // onPressed: () { + // Navigator.pop(context); // Close dialog + // syncToMysql(); + // }, + // child: Text( + // "Upload Only", + // style: TextStyle( + // color: Colors.black, + // fontSize: 16.0, + // fontFamily: 'Poppins', + // ), + // ), + // ), + // ), + ], + ), + ); + }, + ); + } + + return DefaultTabController( + length: 1, + child: Scaffold( + appBar: AppBar( + backgroundColor: Colors.indigo[700], + elevation: 0, + title: Text('Data Peminjaman Barang', + style: TextStyle( + fontSize: 16, + )), + actions: [ + IconButton( + icon: Icon(Icons.backup), + onPressed: () async { + if (await SyncronizationPeminjamanData.isInternet()) { + // Display custom dialog when the IconButton is pressed + showSyncDialog(context); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text("No internet connection")), + ); + } + }, + ), + ], + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Colors.white), + onPressed: () { + Navigator.pushNamed(context, '/home'); + }, + ), + bottom: TabBar( + indicator: BoxDecoration(color: Color.fromARGB(255, 50, 39, 122)), + tabs: [ + Tab(text: 'Peminjaman Hari ini'), ], ), ), + body: _isLoading + ? const Center(child: CircularProgressIndicator()) + : TabBarView( + children: [ + SingleChildScrollView( + child: Column( + children: [ + SizedBox( + width: double.infinity, + child: PaginatedDataTable( + // header: Text('Searching'), // Removed const + rowsPerPage: _pageSize, + availableRowsPerPage: [10, 25, 50], // Removed const + onRowsPerPageChanged: (value) { + setState(() { + _pageSize = value!; + }); + }, + columns: [ + DataColumn(label: Text('No')), + DataColumn(label: Text('')), + DataColumn(label: Text('Kode Peti')), + DataColumn(label: Text('Nama Customer')), + DataColumn(label: Text('Tgl Peminjaman')), + DataColumn(label: Text('Est Peminjaman')), + DataColumn(label: Text('PJ Peminjaman')), + DataColumn(label: Text('Asal Gudang')), + DataColumn(label: Text('Tujuan Gudang')), + ], + source: _DataSourceLokal( + data: _data!, + context: context, + petiData: _petiData != null ? _petiData : [], + tipePetiData: + _tipePetiData != null ? _tipePetiData : [], + customerData: + _customerData != null ? _customerData : [], + warehouseData: + _warehouseData != null ? _warehouseData : [], + ), + ), + ), + ], + ), + ), + ], + ), + bottomNavigationBar: BottomAppBar( + color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang + child: Container( + height: 65.0, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + customBorder: CircleBorder(), + onTap: () { + // Aksi ketika ikon diklik + Navigator.pushNamed(context, '/peminjaman-barang/create'); + }, + child: Container( + width: 45, + height: 45, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.greenAccent[700], + ), + child: Icon( + Icons.add, + size: 30, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ), ), ); } } -class _DataSource extends DataTableSource { +class _DataSourceLokal extends DataTableSource { final List data; + List? petiData; + List? tipePetiData; + List? customerData; + List? warehouseData; final BuildContext context; - _DataSource({required this.data, required this.context}); + _DataSourceLokal({ + required this.data, + required this.petiData, + required this.tipePetiData, + required this.customerData, + required this.warehouseData, + required this.context, + }); @override DataRow? getRow(int index) { if (index >= data.length) { return null; } + data.sort((a, b) { + if (a.created_at == null && b.created_at == null) { + return 0; // Both dates are null, consider them equal + } else if (a.created_at == null) { + return 1; // Null is considered greater than non-null + } else if (b.created_at == null) { + return -1; // Non-null is considered smaller than null + } else { + return b.created_at!.compareTo(a.created_at!); // Compare non-null dates + } + }); + final item = data[index]; + // Menemukan data peti yang sesuai dengan asset + PetiAssetModel? petiSqfliteApi; + if (item.peti_id != null) { + petiSqfliteApi = petiData!.firstWhere( + (peti) => peti.id == item.peti_id, + orElse: () => PetiAssetModel( + id: null, + tipe_peti_id: null, + warna: 'null', + packing_no: null, + customer_id: null, + warehouse_id: null, + kondisipeti_id: null, + jumlah: null, + date_pembuatan: DateTime.now(), + created_by: 'null', + updated_by: 'null', + fix_lot: '', + ), + ); + } + + TypePetiModel? tipePetiSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.tipe_peti_id != null) { + tipePetiSqfliteApi = tipePetiData?.firstWhere( + (tipePeti) => tipePeti.id == petiSqfliteApi?.tipe_peti_id, + orElse: () => TypePetiModel( + id: null, + type: 'null', + size_peti: 'null', + description: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + CustomerModel? customerSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.customer_id != null) { + customerSqfliteApi = customerData?.firstWhere( + (customer) => customer.id == item.customer_id, + orElse: () => CustomerModel( + id: null, + name: 'null', + code_customer: 'null', + lot_no: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + WarehouseModel? warehouseSqfliteApi; + if (item.warehouse_id != null) { + warehouseSqfliteApi = warehouseData?.firstWhere( + (warehouse) => warehouse.id == item.warehouse_id, + orElse: () => WarehouseModel( + id: null, + name: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + WarehouseModel? warehouseTujuanSqfliteApi; + warehouseTujuanSqfliteApi = warehouseData?.firstWhereOrNull( + (warehouse) => warehouse.id == item.exit_warehouse, + ); + return DataRow(cells: [ DataCell( Text( @@ -200,7 +711,7 @@ class _DataSource extends DataTableSource { context, MaterialPageRoute( builder: (context) => DetailPeminjamanBarangPage( - assetId: item.id!, + peminjamanId: item.id.toString(), ), ), ); @@ -215,22 +726,27 @@ class _DataSource extends DataTableSource { ), DataCell( Text( - // item.asset.exit_at.toString(), - item.peti!.customer!.code_customer.toString() + - '-' + - item.peti!.tipe_peti!.type.toString(), + petiSqfliteApi != null && petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', + ), + ), + DataCell( + Text( + customerSqfliteApi != null && customerSqfliteApi.name != null + ? customerSqfliteApi!.name.toString() + : '-', ), ), DataCell( Text( - item.peti!.customer!.name.toString(), + item.exit_at != null + ? DateFormat('dd-MM-yyyy').format(item.exit_at!) + : '-', ), ), DataCell( Text( - // item.asset.exit_at.toString(), - // item.exit_at.toString(), - // DateFormat('dd-MM-yyyy').format(item.est_pengembalian!) item.est_pengembalian != null ? DateFormat('dd-MM-yyyy').format(item.est_pengembalian!) : '-', @@ -238,11 +754,23 @@ class _DataSource extends DataTableSource { ), DataCell( Text( - item.exit_pic.toString(), + item.exit_pic != null ? item.exit_pic.toString() : '-', ), ), DataCell( - Text(item.warehouse!.name.toString()), + Text( + warehouseSqfliteApi != null && warehouseSqfliteApi.name != null + ? warehouseSqfliteApi.name.toString() + : '-', + ), + ), + DataCell( + Text( + warehouseTujuanSqfliteApi != null && + warehouseTujuanSqfliteApi.name != null + ? warehouseTujuanSqfliteApi.name.toString() + : '-', + ), ), ]); } diff --git a/lib/pages/peminjaman_barang/show.dart b/lib/pages/peminjaman_barang/show.dart index 5804526..1d88abd 100644 --- a/lib/pages/peminjaman_barang/show.dart +++ b/lib/pages/peminjaman_barang/show.dart @@ -1,13 +1,19 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; -import 'package:http/http.dart' as http; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/pages/peminjaman_barang/controller/peminjaman_controller.dart'; +import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; -import 'package:siopas/connection/connection.dart'; +import 'package:collection/collection.dart'; + +import '../../models/warehouse_mode.dart'; +import '../../services/controllerApi.dart'; class DetailPeminjamanBarangPage extends StatefulWidget { - final int assetId; - const DetailPeminjamanBarangPage({Key? key, required this.assetId}) + final String peminjamanId; + + const DetailPeminjamanBarangPage({Key? key, required this.peminjamanId}) : super(key: key); @override @@ -17,54 +23,118 @@ class DetailPeminjamanBarangPage extends StatefulWidget { class _DetailPeminjamanBarangPageState extends State { - Map? assetStatusData; + AssetStatusModel? peminjamanInfo; + WarehouseModel? warehouseInfo; - String _formatDate(String date) { - DateTime parsedDate = DateTime.parse(date); - String formattedDate = - DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); - return formattedDate; - } + List? petiData; + List? customerData; + List? warehouseData; + + bool loading = true; @override void initState() { super.initState(); - _fetchAssetStatusData(); + getPeminjamanIdData(); + customerListAPI(); + petiListAPI(); + warehouseListAPI(); + initializeDateFormatting('id_ID', null); + } + + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerData = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } } - Future _fetchAssetStatusData() async { - try { - final response = await http.get( - Uri.parse('$baseUrl/asset-status/peminjaman/show/${widget.assetId}'), - headers: { - 'Content-Type': 'application/json', - }, - ); + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + petiData = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - if (response.statusCode == 200) { + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { setState(() { - assetStatusData = json.decode(response.body)['data']['asset_status']; + warehouseData = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; }); - } else { - throw Exception('Failed to load data'); - } - } catch (e) { - print('Error fetching data: $e'); + }); + } + } + + Future getPeminjamanIdData() async { + List peminjamans = + await Controller().fetchPeminjamanDataId(); + peminjamanInfo = peminjamans.firstWhereOrNull( + (peminjaman) => peminjaman.id.toString() == widget.peminjamanId, + ); + + setState(() {}); + } + + String _formatDate(String? date) { + if (date != null) { + DateTime parsedDate = DateTime.parse(date); + String formattedDate = + DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); + return formattedDate; + } else { + return ''; } } @override Widget build(BuildContext context) { + PetiAssetModel? petiSqfliteApi; + petiSqfliteApi = petiData?.firstWhereOrNull( + (peti) => peti.id == peminjamanInfo!.peti_id, + ); + + CustomerModel? customerSqfliteApi; + customerSqfliteApi = customerData?.firstWhereOrNull( + (customer) => customer.id == peminjamanInfo?.customer_id, + ); + + WarehouseModel? warehouseSqfliteApi; + warehouseSqfliteApi = warehouseData?.firstWhereOrNull( + (warehouse) => warehouse.id == peminjamanInfo!.exit_warehouse, + ); + WarehouseModel? warehouseTujuanSqfliteApi; + warehouseTujuanSqfliteApi = warehouseData?.firstWhereOrNull( + (warehouse) => warehouse.id == peminjamanInfo!.exit_warehouse, + ); + return Scaffold( backgroundColor: Colors.grey[200], appBar: AppBar( backgroundColor: Colors.indigo[700], elevation: 0, - title: Text('Detail Peminjaman Barang', - style: TextStyle( - color: Colors.white, - fontSize: 16, - )), + title: Text( + 'Detail Peminjaman Barang', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ), leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.white), onPressed: () { @@ -91,45 +161,85 @@ class _DetailPeminjamanBarangPageState color: Colors.indigo[700], child: Padding( padding: const EdgeInsets.all(16.0), - child: Row( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Icon(Icons.article, - size: 40, - color: Colors.white), // Ganti ikon sesuai kebutuhan - SizedBox(width: 10), - Text( - 'ID: ${widget.assetId}', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: Colors.white, - ), + Row( + children: [ + Icon(Icons.article, size: 30, color: Colors.white), + SizedBox(width: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'ID:', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + SizedBox(height: 5), + Text( + petiSqfliteApi != null && + petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ], + ), + ], ), ], ), ), ), SizedBox(height: 10), - if (assetStatusData != null) ...[ + if (peminjamanInfo != null) ...[ _buildDetailItem( 'Kode Peti', - assetStatusData!['peti']['customer']['code_customer'] + - ' - ' + - assetStatusData!['peti']['tipe_peti']['type'], + petiSqfliteApi != null && petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', ), - // _buildDetailItem( - // 'Peti Nama', assetStatusData!['peti']['fix_lot']), Divider(thickness: 1), - _buildDetailItem('Nama Customer', - assetStatusData!['peti']['customer']['name']), + _buildDetailItem( + 'Nama Customer', + customerSqfliteApi != null && customerSqfliteApi.name != null + ? customerSqfliteApi!.name.toString() + : '-', + ), + Divider(thickness: 1), + _buildDetailItem('Tgl Peminjaman', + _formatDate(peminjamanInfo!.exit_at.toString())), + Divider(thickness: 1), + _buildDetailItem('Est Peminjaman', + _formatDate(peminjamanInfo!.est_pengembalian.toString())), Divider(thickness: 1), _buildDetailItem( - 'Tgl Peminjaman', _formatDate(assetStatusData!['exit_at'])), + 'PJ Peminjaman', peminjamanInfo!.exit_pic.toString()), Divider(thickness: 1), - _buildDetailItem('PJ Peminjaman', assetStatusData!['exit_pic']), + _buildDetailItem( + 'Asal Warehouse', + // peminjamanInfo!.exit_warehouse.toString()), + warehouseSqfliteApi != null && + warehouseSqfliteApi.name != null + ? warehouseSqfliteApi!.name.toString() + : '-'), Divider(thickness: 1), _buildDetailItem( - 'Exit Warehouse', assetStatusData!['warehouse']['name']), + 'Exit Warehouse', + // peminjamanInfo!.exit_warehouse.toString()), + warehouseSqfliteApi != null && + warehouseSqfliteApi.name != null + ? warehouseSqfliteApi!.name.toString() + : '-'), + Divider(thickness: 1), // ... tambahkan data lainnya sesuai kebutuhan ], ], @@ -147,7 +257,7 @@ class _DetailPeminjamanBarangPageState children: [ Text( label, - style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold), + style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold), ), Text(value), ], diff --git a/lib/pages/pengembalian_barang/conn/syncronize.dart b/lib/pages/pengembalian_barang/conn/syncronize.dart new file mode 100644 index 0000000..c69574f --- /dev/null +++ b/lib/pages/pengembalian_barang/conn/syncronize.dart @@ -0,0 +1,218 @@ +import 'dart:convert'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:intl/intl.dart'; +import '../../../connection/connection.dart'; +import '../../../migrations/databasehelper.dart'; +import '../../../models/asset_status_model.dart'; +import 'package:http/http.dart' as http; + +class SyncronizationPengembalianData { + Future addData(AssetStatusModel assetStatusModel) async { + final dbClient = await conn.db; + late int result; + try { + result = await dbClient!.insert( + SqfliteDatabaseHelper.pengembalianTable, assetStatusModel.toJson()); + } catch (e) { + print('Error adding data to local SQLite: $e'); + result = 0; // Handle the error appropriately + } + return result; + } + + Future fetchData() async { + var dbclient = await conn.db; + List assetStatusList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.pengembalianTable, orderBy: 'id DESC'); + for (var item in maps) { + assetStatusList.add(item); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllInfo() async { + final dbClient = await conn.db; + List assetStatusList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.pengembalianTable); + for (var item in maps) { + assetStatusList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return assetStatusList; + } + + Future deleteAllAssetStatusData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.pengembalianTable); + } + + Future savePengembalianToServerWith( + List assetStatusesLocalList) async { + for (var i = 0; i < assetStatusesLocalList.length; i++) { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + // Format tanggal sesuai kebutuhan + String formattedCreatedAt = assetStatusesLocalList[i].created_at != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i].created_at!) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "peti_id": assetStatusesLocalList[i].peti_id.toString(), + "enter_at": assetStatusesLocalList[i].enter_at.toString(), + "enter_pic": assetStatusesLocalList[i].enter_pic.toString(), + "enter_warehouse": assetStatusesLocalList[i].enter_warehouse.toString(), + "kondisi_peti_id": assetStatusesLocalList[i].kondisi_peti_id.toString(), + "updated_by": assetStatusesLocalList[i].updated_by.toString(), + "updated_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/update'), + body: data, + ); + + if (response.statusCode == 200) { + // print("Data uploaded successfully for index $i:"); + // print("Response body: ${response.body}"); + print("Saving Data saveToPengembalianWith"); + } else { + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + print("Response body: ${response.body}"); + } + } + + return true; // Pengunggahan berhasil + } + + Future fetchAllCustomerInfo() async { + final dbClient = await conn.db; + List contactList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.pengembalianTable); + for (var item in maps) { + contactList.add(item); + } + } catch (e) { + print(e.toString()); + } + return contactList; + } + + Future saveToMysql(List assetStatusesLocalList) async { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + for (var i = 0; i < assetStatusesLocalList.length; i++) { +// Format tanggal sesuai kebutuhan + String formattedCreatedAt = + assetStatusesLocalList[i]['created_at'] != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(assetStatusesLocalList[i]['created_at']) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "peti_id": assetStatusesLocalList[i]['peti_id'].toString(), + "enter_at": assetStatusesLocalList[i]['enter_at'].toString(), + "enter_pic": assetStatusesLocalList[i]['enter_pic'].toString(), + "enter_warehouse": + assetStatusesLocalList[i]['enter_warehouse'].toString(), + "kondisi_peti_id": + assetStatusesLocalList[i]['kondisi_peti_id'].toString(), + "updated_by": assetStatusesLocalList[i]['updated_by'].toString(), + "updated_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/asset-status/update'), + body: data); + if (response.statusCode == 200) { + print(response.body); + print("Saving Data saveToMysql"); + } else { + print(response.statusCode); + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + } + } + } + + Future> fetchFromApi() async { + final response = await http.get( + Uri.parse(await getBaseUrl() + '/asset-status'), + ); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['asset_status']; + List contactDBList = data + .map( + (item) => AssetStatusModel.fromJson(item as Map)) + .toList(); + + return contactDBList; + } else { + throw Exception('Failed to fetch data from API Asset Status'); + } + } +} diff --git a/lib/pages/pengembalian_barang/controller/pengembalian_controller.dart b/lib/pages/pengembalian_barang/controller/pengembalian_controller.dart new file mode 100644 index 0000000..4971402 --- /dev/null +++ b/lib/pages/pengembalian_barang/controller/pengembalian_controller.dart @@ -0,0 +1,221 @@ +import 'dart:async'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:http/http.dart' as http; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:sqflite/sqflite.dart'; + +import '../../../migrations/databasehelper.dart'; + +class ControllerPengembalian { + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllPengembalianInfo() async { + final dbClient = await conn.db; + List pengembalianList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.pengembalianTable); + for (var item in maps) { + pengembalianList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return pengembalianList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + Future addPengembalianData(AssetStatusModel pengembalianAddModel) async { + var dbclient = await conn.db; + int result = 0; // Provide an initial value + try { + result = await dbclient!.insert(SqfliteDatabaseHelper.pengembalianTable, + pengembalianAddModel.toJson()); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future updatePengembalianData( + AssetStatusModel pengembalianAddModel) async { + var dbclient = await conn.db; + late int result; + try { + result = await dbclient!.update( + SqfliteDatabaseHelper.pengembalianTable, + pengembalianAddModel.toJson(), + where: 'id=?', + whereArgs: [pengembalianAddModel.id], + ); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future fetchPengembalianLocalController() async { + var dbclient = await conn.db; + List pengembalianStatusList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.pengembalianTable, orderBy: 'id DESC'); + for (var item in maps) { + pengembalianStatusList.add(item); + } + } catch (e) { + print(e.toString()); + } + return pengembalianStatusList; + } + + Future> fetchPengembalianDataId() async { + var dbclient = await conn.db; + List pengembalianList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.pengembalianTable, orderBy: 'id DESC'); + for (var item in maps) { + pengembalianList.add(AssetStatusModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return pengembalianList; + } + + Future deleteAllData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.pengembalianTable); + } + + Future addAllData(List pengembalianList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var pengembalian in pengembalianList) { + batch.insert( + SqfliteDatabaseHelper.pengembalianTable, + pengembalian.toJson(), + ); + } + + await batch.commit(); + } + + Future fetchPetiData() async { + var dbclient = await conn.db; + List petiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.petiTable, orderBy: 'id DESC'); + for (var item in maps) { + petiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return petiList; + } + + Future fetchTipePetiData() async { + var dbclient = await conn.db; + List tipePetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.typePetiTable, orderBy: 'id DESC'); + for (var item in maps) { + tipePetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return tipePetiList; + } + + Future fetchCustomerData() async { + var dbclient = await conn.db; + List customerList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.customerTable, orderBy: 'id DESC'); + for (var item in maps) { + customerList.add(item); + } + } catch (e) { + print(e.toString()); + } + return customerList; + } + + Future fetchWarehouseData() async { + var dbclient = await conn.db; + List warehouseList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.warehouseTable, orderBy: 'id DESC'); + for (var item in maps) { + warehouseList.add(item); + } + } catch (e) { + print(e.toString()); + } + return warehouseList; + } + + Future fetchConditionData() async { + var dbclient = await conn.db; + List conditionList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.conditionPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + conditionList.add(item); + } + } catch (e) { + print(e.toString()); + } + return conditionList; + } + + Future fetchDisposalData() async { + var dbclient = await conn.db; + List disposalList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.disposalTable, orderBy: 'id DESC'); + for (var item in maps) { + disposalList.add(item); + } + } catch (e) { + print(e.toString()); + } + return disposalList; + } +} diff --git a/lib/pages/pengembalian_barang/edit.dart b/lib/pages/pengembalian_barang/edit.dart index 868d503..4e14f55 100644 --- a/lib/pages/pengembalian_barang/edit.dart +++ b/lib/pages/pengembalian_barang/edit.dart @@ -1,22 +1,39 @@ import 'dart:convert'; +import 'dart:core'; import 'package:flutter/material.dart'; -import 'package:flutter_form_builder/flutter_form_builder.dart'; -import 'package:intl/date_symbol_data_local.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/condition_peti_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/pages/peminjaman_barang/conn/syncronize.dart'; +import 'package:siopas/pages/pengembalian_barang/conn/syncronize.dart'; +import 'package:siopas/pages/pengembalian_barang/controller/pengembalian_controller.dart'; +import 'package:siopas/services/controllerApi.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:siopas/connection/connection.dart'; -import 'package:http/http.dart' as http; -import 'package:siopas/models/asset_status_model.dart'; -// import 'package:siopas/models/m_asset_status_model.dart'; -import 'package:siopas/models/user_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; import 'package:siopas/models/warehouse_mode.dart'; -import 'package:siopas/providers/auth_provider.dart'; +import 'package:flutter_form_builder/flutter_form_builder.dart'; +import 'package:intl/date_symbol_data_local.dart'; // Import package intl +import 'package:uuid/uuid.dart'; + +import '../../connection/connection.dart'; +import 'package:http/http.dart' as http; + +import '../../models/user_model.dart'; +import '../../providers/auth_provider.dart'; +import '../peminjaman_barang/controller/peminjaman_controller.dart'; +import 'package:collection/collection.dart'; + +// import 'conn/syncronizeAPI.dart'; +// import 'controller/peminjaman_controller.dart'; class CreatePengembalianBarangPage extends StatefulWidget { - const CreatePengembalianBarangPage({super.key}); + const CreatePengembalianBarangPage({Key? key}) : super(key: key); @override State createState() => @@ -25,15 +42,32 @@ class CreatePengembalianBarangPage extends StatefulWidget { class _CreatePengembalianBarangPageState extends State { - List _dataAsset = []; - List _dataWarehouse = []; - bool _isLoading = false; + List? _data; + String? token; - AssetStatusModel? _valAsset; - WarehouseModel? _valWarehouse; + List? typePetiSqfliteApi; + // List? customerSqfliteApi; + + PetiAssetModel? petiSqfliteApi; + ConditionPetiModel? conditionPetiSqfliteApi; + WarehouseModel? warehouseSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valconditionPeti; + + CustomerModel? customerSqfliteApi; + List? _valcustomer; + + List _unrestrictedPetiList = []; + List _filteredPetiList = []; + bool isQRCodeScanned = false; + + bool loading = true; TextEditingController _enterAtController = TextEditingController(); - TextEditingController _enterPicController = TextEditingController(); - TextEditingController _kondisiPetiController = TextEditingController(); + // TextEditingController _enterPicController = TextEditingController(); + // TextEditingController _kondisiPetiController = TextEditingController(); + // TextEditingController _penanggungJawabController = TextEditingController(); final _formKey = GlobalKey(); final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); @@ -44,9 +78,15 @@ class _CreatePengembalianBarangPageState void initState() { super.initState(); _getUserToken(); - fetchDataWarehouse(); - fetchDataAsset(); - initializeDateFormatting('id_ID'); + warehouseListAPI(); + + datatablesAssetStatusList(); + // typePetiListAPI(); + // customerListAPI(); + petiListAPI(); + kondisiPetiListAPI(); + + initializeDateFormatting('id_ID', null); } void _getUserToken() async { @@ -54,75 +94,70 @@ class _CreatePengembalianBarangPageState if (mounted) { setState(() { token = prefs.getString('token'); + loading = false; }); } } - Future fetchDataAsset() async { - setState(() { - _isLoading = true; - }); - - final response = - await http.get(Uri.parse('$baseUrl/asset-status/pengembalian/create')); - + Future warehouseListAPI() async { if (mounted) { - // Periksa apakah widget masih "mounted" - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['asset_status']; - - final List newDataAsset = (jsonData as List) - .map((item) => AssetStatusModel.fromJson(item)) - .toList(); - - if (mounted) { - // Periksa lagi sebelum memanggil setState - setState(() { - _dataAsset.addAll(newDataAsset); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Asset Status'); - } + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); } } - Future fetchDataWarehouse() async { - setState(() { - _isLoading = true; + Future datatablesAssetStatusList() async { + await Controller().fetchAssetStatusLocalController().then((value) { + setState(() { + _data = (value as List) + .map((e) => AssetStatusModel.fromJson(e)) + .toList(); + loading = false; + }); }); + } - final response = await http.get(Uri.parse('$baseUrl/m-warehouse')); - + Future petiListAPI() async { if (mounted) { - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['warehouse']; + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - final List newDataWarehouse = (jsonData as List) - .map((item) => WarehouseModel.fromJson(item)) - .toList(); + Future kondisiPetiListAPI() async { + if (mounted) { + await ControllerApi().fetchKondisiPetiDataAPI().then((value) { + setState(() { + _valconditionPeti = (value as List) + .map((item) => ConditionPetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - if (mounted) { - setState(() { - _dataWarehouse.addAll(newDataWarehouse); - _isLoading = false; - }); - } + Future isInteret() async { + await SyncronizationPengembalianData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Warehouse'); + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); } - } + }); } Future _onQRViewCreated(QRViewController controller) async { @@ -134,108 +169,164 @@ class _CreatePengembalianBarangPageState await Future.delayed(const Duration(milliseconds: 400)); controller.flipCamera(); - controller.scannedDataStream.listen((scanData) { - if (!scanned) { - try { - setState(() { - result = scanData; - - List lines = result!.code!.split('\n'); - - String idPeti = ''; - - for (String line in lines) { - if (line.contains(';')) { - List values = line.split(';'); - if (values.length >= 3) { - idPeti = values[1]; - break; + controller.scannedDataStream.listen( + (scanData) { + if (!scanned) { + try { + setState(() { + result = scanData; + List lines = result!.code!.split('\n'); + String idPeti = ''; + String idWarehouse = ''; + + for (String line in lines) { + if (line.contains(';')) { + List values = line.split(';'); + if (values.length >= 3) { + idPeti = values[1]; + idWarehouse = values[2]; + break; + } } } - } - - int? petiId = int.tryParse(idPeti); - - if (petiId != null) { - _valAsset = _dataAsset.firstWhere( - (peminjaman) => peminjaman.peti_id == petiId, - orElse: () => _valAsset!, - ); - } else { - // Jika nilai yang dipindai tidak sesuai, tampilkan pesan kesalahan - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Row( - children: [ - Icon( - Icons.warning, - color: Colors.black, // Warna ikon - ), - SizedBox(width: 8), // Jarak antara ikon dan teks - Text( - 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + + int? petiId = int.tryParse(idPeti); + int? warehouseId = int.tryParse(idWarehouse); + // AuthProvider authProvider = Provider.of(context, listen: false); + // UserModel user = authProvider.user; + + // Dalam fungsi yang menangani pemindaian QR code + // Dalam fungsi yang menangani pemindaian QR code + if (petiId != null && warehouseId != null) { + // Check apakah peti dengan warehouse_id yang sesuai ada dalam daftar yang diizinkan + PetiAssetModel? allowedPeti = _valpeti?.firstWhereOrNull( + (peti) => + peti.id == petiId && + peti.deleted_at != true && + peti.status == 'AKTIF', + ); + + if (allowedPeti != null) { + setState(() { + isQRCodeScanned = true; + // Mengisi _filteredPetiList untuk dropdown hasil QR Code + _filteredPetiList = [ + _valpeti!.firstWhere((peti) => peti.id == allowedPeti.id) + ]; + + petiSqfliteApi = allowedPeti; + + warehouseSqfliteApi = _valwarehouse?.firstWhereOrNull( + (warehouse) => warehouse.id == allowedPeti.warehouse_id, + ); + + customerSqfliteApi = _valcustomer?.firstWhereOrNull( + (customer) => customer.id == allowedPeti.customer_id, + ); + }); + } else { + // Tampilkan pesan error jika data tidak sesuai dengan hak akses + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Data Peti tidak ditemukan atau tidak sesuai dengan hak akses.', style: TextStyle( - color: Colors.black, + color: Colors.white, fontSize: 12, - ), // Warna teks + ), ), - ], + backgroundColor: Colors.red[700], + action: SnackBarAction( + label: 'Tutup', + onPressed: () { + ScaffoldMessenger.of(context).hideCurrentSnackBar(); + }, + ), + ), + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } + } else { + // Tampilkan pesan error jika nilai yang dipindai tidak sesuai + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.warning, + color: Colors.black, + ), + SizedBox(width: 8), + Text( + 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + style: TextStyle( + color: Colors.black, + fontSize: 12, + ), + ), + ], + ), + backgroundColor: Colors.yellow[700], ), - backgroundColor: Colors.yellow[700], - ), - ); - } - - scanned = true; - }); - - controller.stopCamera(); - - Future.delayed(Duration(milliseconds: 500), () { - if (mounted) { - Navigator.pop(context); - } - }); - } catch (e) { - controller.stopCamera(); - if (mounted) { - Navigator.pushNamed(context, '/pengembalian-barang/create'); - } - print('Error scanning QR Code: $e'); + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Row( - children: [ - Icon( - Icons.error, // Icon error - color: Colors.red[400], // Warna merah - ), - SizedBox(width: 8), - Flexible( - // Menggunakan Flexible untuk menghindari overflow - child: Text( - 'Peti ini belum ada di menu pinjaman, silahkan untuk mengecek kembali.', - style: TextStyle( - color: Colors.white, - fontSize: 12, - ), // Warna teks merah + scanned = true; + }); + + controller.stopCamera(); + + Future.delayed(Duration(milliseconds: 500), () { + if (mounted) { + Navigator.of(context).pop(); + } + }); + } catch (e) { + controller.stopCamera(); + + // Reset nilai dropdown Peti dan Warehouse + setState(() { + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + print('Error scanning QR Code: $e'); + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.error, + color: Colors.red[400], ), - ), - ], + SizedBox(width: 8), + Flexible( + child: Text( + e.toString(), + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + ], + ), + backgroundColor: Colors.red[700], ), - backgroundColor: Colors.red[700], - ), - ); + ); + } } - } - }); - } - - @override - void dispose() { - super.dispose(); - controller?.dispose(); + }, + ); } @override @@ -243,110 +334,71 @@ class _CreatePengembalianBarangPageState AuthProvider authProvider = Provider.of(context, listen: false); UserModel user = authProvider.user; - var scanArea = (MediaQuery.of(context).size.width < 400 || - MediaQuery.of(context).size.height < 400) - ? 150.0 - : 300.0; - Future _updatePeminjaman() async { - setState(() { - _isLoading = true; - }); + // var uuid = Uuid(); - try { - final response = await http.put( - Uri.parse('$baseUrl/asset-status/update/${_valAsset!.id}'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': token!, - }, - body: jsonEncode({ - 'enter_at': _enterAtController.text, - 'enter_pic': _enterPicController.text, - 'enter_warehouse': _valWarehouse!.id, - 'kondisi_peti': _kondisiPetiController.text, - 'updated_by': user.fullname, - }), - ); - - print(response.body); + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['asset_status']; + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } - print('Berhasil memperbarui data: $jsonData'); + Future saveAssetData() async { + DateTime now = DateTime.now().toLocal(); + String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(now); + + if (_enterAtController.text.isNotEmpty) { + AssetStatusModel pengembalianAddModel = AssetStatusModel( + id: null, + peti_id: petiSqfliteApi!.id, + enter_at: parseDateTime(_enterAtController.text), + enter_pic: user.fullname, + enter_warehouse: warehouseSqfliteApi!.id, + kondisi_peti_id: conditionPetiSqfliteApi!.id, + updated_by: user.fullname, + updated_at: parseDateTime(formattedDate), + ); - // Tampilkan snackbar - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.greenAccent[700], - content: Row( - children: [ - Icon( - Icons.check_circle_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Data berhasil dikembalikan'), - ], - ), - duration: Duration(seconds: 3), // Durasi tampilan snackbar - ), - ); - - // Reset form input - _valAsset = null; - _enterAtController.text = ''; - _enterPicController.text = ''; - _kondisiPetiController.text = ''; - _valWarehouse = null; + // Call addData function + int result = await ControllerPengembalian() + .addPengembalianData(pengembalianAddModel); + if (result > 0) { + print("Success Tambah data"); + // print(result); + Navigator.pushNamed(context, '/pengembalian-barang'); + EasyLoading.showSuccess("Data Berhasil Disimpan"); } else { - throw Exception('Gagal memperbarui data Asset Status'); - } - } catch (e) { - print('Error updating data: $e'); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.redAccent[700], - content: Row( - children: [ - Icon( - Icons.error_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Gagal memperbarui data'), - ], - ), - duration: Duration(seconds: 2), // Durasi tampilan snackbar - ), - ); - } finally { - if (mounted) { - setState(() { - _isLoading = false; - }); + print("Failed"); } } } + var scanArea = (MediaQuery.of(context).size.width < 400 || + MediaQuery.of(context).size.height < 400) + ? 250.0 + : 300.0; return Scaffold( appBar: AppBar( + automaticallyImplyLeading: false, + backgroundColor: Colors.indigo[700], elevation: 0, - backgroundColor: Color.fromARGB(255, 5, 28, 158), - title: Text('Pengembalian Barang'), - leading: IconButton( - icon: Icon(Icons.arrow_back), - onPressed: () { - Navigator.pushNamed(context, '/pengembalian-barang'); - }, - ), + title: Text('Buat Pengembalian barang', + style: TextStyle( + fontSize: 16, + )), ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) + body: loading + ? Center(child: CircularProgressIndicator()) : SingleChildScrollView( - child: Container( - padding: EdgeInsets.all(10.0), + child: Padding( + padding: const EdgeInsets.all(8.0), child: Form( key: _formKey, child: Column( @@ -358,8 +410,7 @@ class _CreatePengembalianBarangPageState elevation: 2, child: Container( margin: EdgeInsets.all(8), - child: - DropdownButtonFormField( + child: DropdownButtonFormField( validator: (value) { if (value == null) { return 'Harus diisi'; @@ -371,24 +422,48 @@ class _CreatePengembalianBarangPageState border: OutlineInputBorder(), ), hint: Text("Pilih Peti"), - value: _valAsset, - items: - _dataAsset.map((AssetStatusModel item) { - return DropdownMenuItem( - child: Text('${item.peti!.fix_lot!}'), - value: item, + value: petiSqfliteApi, + items: (isQRCodeScanned + ? _filteredPetiList + : (_valpeti ?? []).where((peti) => + peti.deleted_at != true && + (peti.warehouse_id == + user.warehouse_id) && + (peti.status == 'AKTIF'))) + .map((PetiAssetModel peti) { + return DropdownMenuItem( + child: Text( + '${peti.fix_lot}', + style: TextStyle( + fontSize: 12, + ), + ), + value: peti, ); }).toList(), - onChanged: (AssetStatusModel? value) { + onChanged: (PetiAssetModel? value) { setState(() { - _valAsset = value; + petiSqfliteApi = value; + if (value != null) { + warehouseSqfliteApi = + _valwarehouse?.firstWhere( + (warehouse) => + warehouse.id == + value.warehouse_id, + ); + + // Perbarui _unrestrictedPetiList sesuai pemilihan manual + _unrestrictedPetiList = [ + _valpeti!.firstWhere( + (peti) => peti.id == value.id) + ]; + } }); }, ), ), ), ), - SizedBox(width: 8), // Spacer antara dua card Card( elevation: 2, @@ -401,10 +476,6 @@ class _CreatePengembalianBarangPageState ), child: IconButton( onPressed: () { - setState(() { - _valAsset = - null; // Mengatur _valAsset menjadi null - }); showModalBottomSheet( context: context, isScrollControlled: @@ -468,32 +539,6 @@ class _CreatePengembalianBarangPageState ), ], ), - - SizedBox(height: 16), - // Visibility( - // visible: false, - // child: - Card( - elevation: 2, - child: Padding( - padding: const EdgeInsets.all(8), - child: TextFormField( - controller: _enterPicController = - TextEditingController(text: user.fullname), - decoration: InputDecoration( - labelText: 'Penanggung Jawab', - border: OutlineInputBorder(), - ), - validator: (value) { - if (value == null || value.isEmpty) { - return 'Harus diisi'; - } - return null; // Return null jika tidak ada kesalahan - }, - ), - ), - ), - // ), SizedBox(height: 16), Card( elevation: 2, @@ -512,7 +557,8 @@ class _CreatePengembalianBarangPageState color: Colors.white, ), SizedBox(width: 5), - Text('Tanggal Pengembalian'), + Text( + 'Tanggal Pengembalian harus diisi'), ], ), duration: Duration(seconds: 2), @@ -525,8 +571,10 @@ class _CreatePengembalianBarangPageState controller: _enterAtController, name: 'tanggal', inputType: InputType.date, - // format: DateFormat('dd-MMMM-yyyy', 'id_ID'), + // format: DateFormat('yyyy-MM-dd HH:mm:ss.SSS'), format: DateFormat('yyyy-MM-dd', 'id_ID'), + // format: DateFormat('yyyy-MM-dd'), + decoration: InputDecoration( labelText: 'Tanggal Pengembalian', border: OutlineInputBorder(), @@ -535,12 +583,10 @@ class _CreatePengembalianBarangPageState ), ), ), - - SizedBox(height: 16), + SizedBox(height: 13), Card( - elevation: 2, child: Padding( - padding: const EdgeInsets.all(8), + padding: const EdgeInsets.all(8.0), child: DropdownButtonFormField( validator: (value) { if (value == null) { @@ -553,74 +599,80 @@ class _CreatePengembalianBarangPageState border: OutlineInputBorder(), ), hint: Text("Pilih Gudang"), - value: _valWarehouse, - items: - _dataWarehouse.map((WarehouseModel warehouse) { - return DropdownMenuItem( - child: Text('${warehouse.name}'), - value: warehouse, - ); - }).toList(), + value: warehouseSqfliteApi, + items: (_valwarehouse ?? []) + .where((warehouse) => + warehouse.deleted_at != true) + .map((WarehouseModel warehouse) { + return DropdownMenuItem( + child: Text('${warehouse.name}'), + value: warehouse, + ); + }).toList() ?? + [], onChanged: (WarehouseModel? value) { setState(() { - _valWarehouse = value; + warehouseSqfliteApi = value; }); }, ), ), ), - - SizedBox(height: 16.0), + SizedBox(height: 13), Card( - elevation: 2, child: Padding( - padding: const EdgeInsets.all(8), - child: TextFormField( - controller: _kondisiPetiController, - decoration: InputDecoration( - labelText: 'Kondisi Barang', - border: OutlineInputBorder(), - ), + padding: const EdgeInsets.all(8.0), + child: DropdownButtonFormField( validator: (value) { - if (value == null || value.isEmpty) { + if (value == null) { return 'Harus diisi'; } - return null; // Return null jika tidak ada kesalahan + return null; }, - ), - ), - ), - SizedBox(height: 20.0), - Visibility( - visible: false, - child: FractionallySizedBox( - widthFactor: 1.0, - child: Card( - elevation: 1, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - children: [ - Text( - 'Data dari QR Code:', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 8), - Text( - result != null && result!.code != null - ? result!.code! - : 'Belum ada data QR Code terpindai', - style: TextStyle(fontSize: 14), - ), - ], - ), + decoration: InputDecoration( + labelText: 'Pilih Kondisi Peti', + border: OutlineInputBorder(), ), + hint: Text("Pilih Kondisi Peti"), + value: conditionPetiSqfliteApi, + items: (_valconditionPeti ?? []) + .where( + (kondisi) => kondisi.deleted_at != true) + .map((ConditionPetiModel kondisi) { + return DropdownMenuItem( + child: Text('${kondisi.nama_kondisi}'), + value: kondisi, + ); + }).toList() ?? + [], + onChanged: (ConditionPetiModel? value) { + setState(() { + conditionPetiSqfliteApi = value; + }); + }, ), ), ), + // SizedBox(height: 16.0), + // Card( + // elevation: 2, + // child: Padding( + // padding: const EdgeInsets.all(8), + // child: TextFormField( + // controller: _kondisiPetiController, + // decoration: InputDecoration( + // labelText: 'Kondisi Barang', + // border: OutlineInputBorder(), + // ), + // validator: (value) { + // if (value == null || value.isEmpty) { + // return 'Harus diisi'; + // } + // return null; // Return null jika tidak ada kesalahan + // }, + // ), + // ), + // ), ], ), ), @@ -668,11 +720,13 @@ class _CreatePengembalianBarangPageState color: Colors.green, // Warna hijau untuk save ), child: IconButton( - onPressed: () { + onPressed: () async { if (_formKey.currentState!.validate()) { try { - if (_enterAtController.text.isNotEmpty) { - _updatePeminjaman(); + if (_enterAtController.text.isNotEmpty && + petiSqfliteApi != null && + warehouseSqfliteApi != null) { + await saveAssetData(); } } catch (e) { print('Error storing data: $e'); diff --git a/lib/pages/pengembalian_barang/index.dart b/lib/pages/pengembalian_barang/index.dart new file mode 100644 index 0000000..3f757d7 --- /dev/null +++ b/lib/pages/pengembalian_barang/index.dart @@ -0,0 +1,801 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:data_table_2/data_table_2.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/condition_peti_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/disposal_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/models/warehouse_mode.dart'; +import 'package:siopas/pages/pengembalian_barang/conn/syncronize.dart'; +import 'package:siopas/pages/pengembalian_barang/controller/pengembalian_controller.dart'; +import 'package:siopas/pages/pengembalian_barang/show.dart'; +import 'package:siopas/services/syncronizeAPI.dart'; +import 'package:siopas/services/controllerApi.dart'; +import 'package:siopas/pages/peminjaman_barang/controller/peminjaman_controller.dart'; +import 'package:intl/intl.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:collection/collection.dart'; + +import '../peminjaman_barang/show.dart'; +// import 'show.dart'; + +class PengembalianBarangPage extends StatefulWidget { + const PengembalianBarangPage({super.key}); + + @override + State createState() => PengembalianBarangPageState(); +} + +class PengembalianBarangPageState extends State { + String? token; + bool loading = true; + + // Reinit atau Upload Only + WarehouseModel? warehouseSqfliteApi; + List? typePetiSqfliteApi; + List? customerSqfliteApi; + PetiAssetModel? petiSqfliteApi; + ConditionPetiModel? conditionPetiSqfliteApi; + DisposalPetiModel? disposalSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valconditionPeti; + List? _valdisposal; + + // Datatable + int _currentPage = 1; + int _pageSize = 10; + List? _data; + List? _petiData; + List? _tipePetiData; + List? _customerData; + List? _warehouseData; + List? _conditionData; + bool _isLoading = false; + Timer? _timer; + + @override + void initState() { + super.initState(); + _getUserToken(); + + warehouseListAPI(); + conditionPetiListAPI(); + typePetiListAPI(); + customerListAPI(); + petiListAPI(); + // disposalListAPI(); + + // Tampil data Datatables + datatablesPengembalianList(); + datatablesPetiList(); + datatablesTipePetiList(); + datatablesCustomerList(); + datatablesWarehouseList(); + datatablesConditionList(); + _data = []; + } + + void _getUserToken() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + if (mounted) { + setState(() { + token = prefs.getString('token'); + }); + } + } + + // Reinit atau Upload Only ------------------------------------------------------------------------ + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + // Future disposalListAPI() async { + // if (mounted) { + // await ControllerApi().fetchDisposalDataAPI().then((value) { + // setState(() { + // _valdisposal = (value as List) + // .map((item) => DisposalPetiModel.fromJson(item)) + // .toList(); + // loading = false; + // }); + // }); + // } + // } + + Future typePetiListAPI() async { + if (mounted) { + await ControllerApi().fetchTipePetiDataAPI().then((value) { + setState(() { + typePetiSqfliteApi = (value as List) + .map((item) => TypePetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerSqfliteApi = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future conditionPetiListAPI() async { + if (mounted) { + await ControllerApi().fetchKondisiPetiDataAPI().then((value) { + setState(() { + _valconditionPeti = (value as List) + .map((item) => ConditionPetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + // Future reinitAssetStatusApi() async { + // List assetStatusApiData = + // await SyncronizationDataAPI().fetchAssetStatusFromApi(); + // await ControllerApi() + // .deleteAllAssetStatusDataAPI(); // Clear existing data in SQLite + // await ControllerApi() + // .addAllAssetStatusDataAPI(assetStatusApiData); // Add new data to SQLite + // } + + Future reinitWarehouseApi() async { + EasyLoading.show(status: 'Mengambil data Warehouse...'); + List warehouseApiData = + await SyncronizationDataAPI().fetchWarehouseFromApi(); + await ControllerApi() + .deleteAllWarehouseDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllWarehouseDataAPI(warehouseApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitPetiApi() async { + EasyLoading.show(status: 'Mengambil data Peti...'); + List petiApiData = + await SyncronizationDataAPI().fetchPetiFromApi(); + await ControllerApi() + .deleteAllPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllPetiDataAPI(petiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitCustomerApi() async { + EasyLoading.show(status: 'Mengambil data Customer...'); + List customerApiData = + await SyncronizationDataAPI().fetchCustomerFromApi(); + await ControllerApi() + .deleteAllCustomerDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllCustomerDataAPI(customerApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitConditionPetiApi() async { + EasyLoading.show(status: 'Mengambil data Condition Peti...'); + List conditionPetiApiData = + await SyncronizationDataAPI().fetchKondisiPetiFromApi(); + await ControllerApi() + .deleteAllKondisiPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi().addAllKondisiPetiDataAPI( + conditionPetiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + // Future reinitDisposalApi() async { + // List disposalApiData = + // await SyncronizationDataAPI().fetchDisposalFromApi(); + // await ControllerApi() + // .deleteAllDisposalDataAPI(); // Clear existing data in SQLite + // await ControllerApi() + // .addAllDisposalDataAPI(disposalApiData); // Add new data to SQLite + // } + + Future fetchDataFromApiAndSync() async { + EasyLoading.show(status: 'Mengambil data dari Server...'); + try { + await syncToMysql(); + + // await reinitAssetStatusApi(); + await reinitWarehouseApi(); + await reinitPetiApi(); + await reinitCustomerApi(); + // await reinitTypePetiApi(); + await reinitConditionPetiApi(); + // await reinitDisposalApi(); + + await datatablesPengembalianList(); + EasyLoading.showSuccess('Data berhasil diperbarui'); + } catch (e) { + EasyLoading.showError('Gagal memperbarui data: $e'); + } finally { + EasyLoading.dismiss(); + } + } + + Future syncToMysql() async { + await SyncronizationPengembalianData() + .fetchAllInfo() + .then((assetList) async { + EasyLoading.show( + status: 'Jangan tutup aplikasi. Kami sedang menyinkronkan...'); + await Future.delayed(Duration(seconds: 3)); + + // Tambahkan penanganan pengunggahan + bool uploadSuccess = await SyncronizationPengembalianData() + .savePengembalianToServerWith(assetList); + + // Jika pengunggahan berhasil, hapus data lokal + if (uploadSuccess) { + await SyncronizationPengembalianData().deleteAllAssetStatusData(); + // Setelah selesai, tampilkan pesan sukses + await datatablesPengembalianList(); + EasyLoading.showSuccess('Berhasil disinkronkan dengan Server'); + } else { + // Tampilkan pesan gagal jika pengunggahan tidak berhasil + EasyLoading.showError('Gagal disinkronkan dengan Server'); + } + }); + } + + // Future syncToMysql() async { + // await SyncronizationData().fetchAllInfo().then((assetList) async { + // EasyLoading.show(status: 'Don\'t close app. We are syncing...'); + // await SyncronizationData().saveToMysqlWith(assetList); + // await SyncronizationData().deleteAllAssetStatusData(); + // // EasyLoading.showSuccess('Successfully saved to MySQL'); + // }); + // } + + Future isInteret() async { + await SyncronizationPengembalianData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); + } else { + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); + } + }); + } + + // Datatables ------------------------------------------------------------------------ + Future datatablesPengembalianList() async { + await ControllerPengembalian() + .fetchPengembalianLocalController() + .then((value) { + setState(() { + _data = (value as List) + .map((e) => AssetStatusModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesPetiList() async { + await ControllerPengembalian().fetchPetiData().then((value) { + setState(() { + _petiData = (value as List) + .map((e) => PetiAssetModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesTipePetiList() async { + await ControllerPengembalian().fetchTipePetiData().then((value) { + setState(() { + _tipePetiData = (value as List) + .map((e) => TypePetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesCustomerList() async { + await ControllerPengembalian().fetchCustomerData().then((value) { + setState(() { + _customerData = (value as List) + .map((e) => CustomerModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesWarehouseList() async { + await ControllerPengembalian().fetchWarehouseData().then((value) { + setState(() { + _warehouseData = (value as List) + .map((e) => WarehouseModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesConditionList() async { + await ControllerPengembalian().fetchConditionData().then((value) { + setState(() { + _conditionData = (value as List) + .map((e) => ConditionPetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + void _loadMoreData() { + if (mounted && !_isLoading) { + setState(() { + _currentPage++; + }); + datatablesPengembalianList(); + } + } + + @override + Widget build(BuildContext context) { + // Add this function outside the build method + void showSyncDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + // Dialog shape and style + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + backgroundColor: Colors.grey[100], + elevation: 0, + + // Dialog content + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Dialog title with close button + Container( + width: double.infinity, + color: Colors.indigo[700], // Indigo background + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + "Sync Server Pengembalian", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16.0, + ), + ), + ), + IconButton( + icon: Icon( + Icons.close, + color: Colors.white, + ), + onPressed: () { + Navigator.pop(context); // Close dialog + }, + ), + ], + ), + ), + + // Divider + Divider( + height: 1, + thickness: 1, + color: Colors.black, // Black divider + ), + + // Re-init Button + Container( + width: double.infinity, + child: TextButton( + onPressed: () { + Navigator.pop(context); // Close dialog + fetchDataFromApiAndSync(); + }, + child: Text( + "Upload + Download", + style: TextStyle( + color: Colors.black, + fontSize: 16.0, + fontFamily: 'Poppins', + ), + ), + ), + ), + + // Divider + // Divider( + // height: 1, + // thickness: 1, + // color: Colors.black, // Black divider + // ), + + // Upload Only Button + // Container( + // width: double.infinity, + // child: TextButton( + // onPressed: () { + // Navigator.pop(context); // Close dialog + // syncToMysql(); + // }, + // child: Text( + // "Upload Only", + // style: TextStyle( + // color: Colors.black, + // fontSize: 16.0, + // fontFamily: 'Poppins', + // ), + // ), + // ), + // ), + ], + ), + ); + }, + ); + } + + return DefaultTabController( + length: 1, + child: Scaffold( + appBar: AppBar( + backgroundColor: Colors.indigo[700], + elevation: 0, + title: Text('Data Pengembalian Barang', + style: TextStyle( + fontSize: 16, + )), + actions: [ + IconButton( + icon: Icon(Icons.backup), + onPressed: () async { + if (await SyncronizationPengembalianData.isInternet()) { + // Display custom dialog when the IconButton is pressed + showSyncDialog(context); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text("No internet connection")), + ); + } + }, + ), + ], + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Colors.white), + onPressed: () { + Navigator.pushNamed(context, '/home'); + }, + ), + bottom: TabBar( + indicator: BoxDecoration(color: Color.fromARGB(255, 50, 39, 122)), + tabs: [ + Tab(text: 'Pengembalian Peti Hari ini'), + ], + ), + ), + body: _isLoading + ? const Center(child: CircularProgressIndicator()) + : TabBarView( + children: [ + SingleChildScrollView( + child: Column( + children: [ + SizedBox( + width: double.infinity, + child: PaginatedDataTable( + // header: Text('Searching'), // Removed const + rowsPerPage: _pageSize, + availableRowsPerPage: [10, 25, 50], // Removed const + onRowsPerPageChanged: (value) { + setState(() { + _pageSize = value!; + }); + }, + columns: [ + DataColumn(label: Text('No')), + DataColumn(label: Text('')), + DataColumn(label: Text('Kode Peti')), + DataColumn(label: Text('Tgl Pengembalian')), + DataColumn(label: Text('PJ Pengembalian')), + DataColumn(label: Text('Tujuan WH Pengembalian')), + DataColumn(label: Text('Kondisi Peti')), + ], + source: _DataSourceLokal( + data: _data!, + context: context, + petiData: _petiData != null ? _petiData : [], + tipePetiData: + _tipePetiData != null ? _tipePetiData : [], + customerData: + _customerData != null ? _customerData : [], + warehouseData: + _warehouseData != null ? _warehouseData : [], + conditionData: + _conditionData != null ? _conditionData : [], + ), + ), + ), + ], + ), + ), + ], + ), + bottomNavigationBar: BottomAppBar( + color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang + child: Container( + height: 65.0, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + customBorder: CircleBorder(), + onTap: () { + // Aksi ketika ikon diklik + Navigator.pushNamed(context, '/pengembalian-barang/edit'); + }, + child: Container( + width: 45, + height: 45, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.greenAccent[700], + ), + child: Icon( + Icons.add, + size: 30, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class _DataSourceLokal extends DataTableSource { + final List data; + List? petiData; + List? tipePetiData; + List? customerData; + List? warehouseData; + List? conditionData; + final BuildContext context; + + _DataSourceLokal({ + required this.data, + required this.petiData, + required this.tipePetiData, + required this.customerData, + required this.warehouseData, + required this.conditionData, + required this.context, + }); + @override + DataRow? getRow(int index) { + if (index >= data.length) { + return null; + } + + data.sort((a, b) { + if (a.created_at == null && b.created_at == null) { + return 0; // Both dates are null, consider them equal + } else if (a.created_at == null) { + return 1; // Null is considered greater than non-null + } else if (b.created_at == null) { + return -1; // Non-null is considered smaller than null + } else { + return b.created_at!.compareTo(a.created_at!); // Compare non-null dates + } + }); + + final item = data[index]; + + // Menemukan data peti yang sesuai dengan asset + PetiAssetModel? petiSqfliteApi; + if (item.peti_id != null) { + petiSqfliteApi = petiData!.firstWhere( + (peti) => peti.id == item.peti_id, + orElse: () => PetiAssetModel( + id: null, + tipe_peti_id: null, + warna: 'null', + packing_no: null, + customer_id: null, + warehouse_id: null, + kondisipeti_id: null, + jumlah: null, + date_pembuatan: DateTime.now(), + created_by: 'null', + updated_by: 'null', + fix_lot: '', + ), + ); + } + + TypePetiModel? tipePetiSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.tipe_peti_id != null) { + tipePetiSqfliteApi = tipePetiData?.firstWhere( + (tipePeti) => tipePeti.id == petiSqfliteApi?.tipe_peti_id, + orElse: () => TypePetiModel( + id: null, + type: 'null', + size_peti: 'null', + description: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + CustomerModel? customerSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.customer_id != null) { + customerSqfliteApi = customerData?.firstWhere( + (customer) => customer.id == petiSqfliteApi?.customer_id, + orElse: () => CustomerModel( + id: null, + name: 'null', + code_customer: 'null', + lot_no: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + ConditionPetiModel? conditionSqfliteApi; + if (item.kondisi_peti_id != null) { + conditionSqfliteApi = conditionData?.firstWhere( + (warehouse) => warehouse.id == item.kondisi_peti_id, + orElse: () => ConditionPetiModel( + id: null, + nama_kondisi: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + WarehouseModel? warehouseSqfliteApi; + if (item.enter_warehouse != null) { + warehouseSqfliteApi = warehouseData?.firstWhere( + (warehouse) => warehouse.id == item.enter_warehouse, + orElse: () => WarehouseModel( + id: null, + name: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + return DataRow(cells: [ + DataCell( + Text( + (index + 1).toString(), + ), + ), + DataCell( + GestureDetector( + onTap: () { + if (item.id != null) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailPengembalianBarangPage( + pengembalianId: item.id.toString(), + ), + ), + ); + + // print('asset id: ${item.id}'); + } + }, + child: Icon(Icons.article, + size: 40, + color: Colors.indigo[700]), // Ganti ikon sesuai kebutuhan + ), + ), + DataCell( + Text( + petiSqfliteApi != null && petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', + ), + ), + DataCell( + Text( + item.enter_at != null + ? DateFormat('dd-MM-yyyy').format(item.enter_at!) + : '-', + ), + ), + DataCell( + Text( + item.enter_pic.toString() != 'null' ? item.enter_pic.toString() : '-', + ), + ), + DataCell( + Text( + (item.enter_warehouse != null && item.enter_warehouse != 'null') + ? warehouseSqfliteApi != null && + warehouseSqfliteApi.id == item.enter_warehouse + ? warehouseSqfliteApi.name.toString() + : '-' + : '-', + ), + ), + DataCell( + Text( + conditionSqfliteApi != null && + conditionSqfliteApi.nama_kondisi != null + ? conditionSqfliteApi!.nama_kondisi.toString() + : '-', + ), + ), + ]); + } + + @override + bool get isRowCountApproximate => false; + + @override + int get rowCount => data.length; + + @override + int get selectedRowCount => 0; +} diff --git a/lib/pages/pengembalian_barang/pengembalian_index.dart b/lib/pages/pengembalian_barang/pengembalian_index.dart deleted file mode 100644 index cd2b237..0000000 --- a/lib/pages/pengembalian_barang/pengembalian_index.dart +++ /dev/null @@ -1,296 +0,0 @@ -import 'dart:convert'; -import 'dart:developer'; - -import 'package:flutter/material.dart'; -import 'package:data_table_2/data_table_2.dart'; -import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; -import 'package:shared_preferences/shared_preferences.dart'; -import 'package:siopas/models/asset_status_model.dart'; -import 'package:siopas/pages/pengembalian_barang/show.dart'; -import 'package:siopas/providers/asset_status_provider.dart'; -import 'package:http/http.dart' as http; - -import '../../connection/connection.dart'; -import '../peminjaman_barang/show.dart'; - -class PengembalianBarangPage extends StatefulWidget { - const PengembalianBarangPage({super.key}); - - @override - State createState() => PengembalianBarangPageState(); -} - -class PengembalianBarangPageState extends State { - String? token; - int _currentPage = 1; - int _pageSize = 10; - List _data = []; - bool _isLoading = false; - - @override - void initState() { - super.initState(); - _getUserToken(); - fetchData(); - } - - void _getUserToken() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - if (mounted) { - setState(() { - token = prefs.getString('token'); - }); - } - } - - Future fetchData() async { - if (mounted) { - setState(() { - _isLoading = true; - }); - - try { - final response = - await http.get(Uri.parse('$baseUrl/asset-status/pengembalian')); - - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['asset_status']; - - final List newData = (jsonData as List) - .map((item) => AssetStatusModel.fromJson(item)) - .toList(); - - if (mounted) { - setState(() { - _data.addAll(newData); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data'); - } - } catch (e) { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - print('Error fetching data: $e'); - } - } - } - - void _loadMoreData() { - if (mounted && !_isLoading) { - setState(() { - _currentPage++; - }); - fetchData(); - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Colors.indigo[700], - elevation: 0, - title: Text('Data Pengembalian Barang', - style: TextStyle( - fontSize: 16, - )), - leading: IconButton( - icon: Icon(Icons.arrow_back, color: Colors.white), - onPressed: () { - Navigator.pushNamed(context, '/home'); - }, - ), - ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) - : SingleChildScrollView( - child: SizedBox( - width: double.infinity, - child: PaginatedDataTable( - header: const Text('Pengembalian Barang'), - rowsPerPage: _pageSize, - availableRowsPerPage: const [10, 25, 50], - onRowsPerPageChanged: (value) { - setState(() { - _pageSize = value!; - }); - }, - columns: const [ - DataColumn(label: Text('No')), - DataColumn(label: Text('')), - DataColumn(label: Text('Kode Peti')), - DataColumn(label: Text('Tgl Peminjaman')), - DataColumn(label: Text('Estimasi Pengembalian')), - DataColumn(label: Text('PJ Peminjaman')), - DataColumn(label: Text('Asal WH Peminjaman')), - DataColumn(label: Text('Tgl Pengembalian')), - DataColumn(label: Text('PJ Pengembalian')), - DataColumn(label: Text('Tujuan WH Pengembalian')), - DataColumn(label: Text('Kondisi Peti')), - DataColumn(label: Text('Status')), - ], - source: _DataSource(data: _data, context: context), - ), - ), - ), - bottomNavigationBar: BottomAppBar( - color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang - child: Container( - height: 65.0, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - customBorder: CircleBorder(), - onTap: () { - // Aksi ketika ikon diklik - Navigator.pushNamed(context, '/pengembalian-barang/create'); - }, - child: Container( - width: 45, - height: 45, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.greenAccent[700], - ), - child: Icon( - Icons.add, - size: 30, - color: Colors.white, - ), - ), - ), - ], - ), - ), - ), - ); - } -} - -class _DataSource extends DataTableSource { - final List data; - final BuildContext context; - - _DataSource({required this.data, required this.context}); - @override - DataRow? getRow(int index) { - if (index >= data.length) { - return null; - } - - final item = data[index]; - - return DataRow(cells: [ - DataCell( - Text( - (index + 1).toString(), - ), - ), - DataCell( - GestureDetector( - onTap: () { - if (item.id != null) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => DetailPengembalianBarangPage( - pengembalianId: item.id!, - ), - ), - ); - - print('asset id: ${item.id}'); - } - }, - child: Icon( - Icons.article_outlined, - size: 30, - color: Colors.indigo[700], - ), - ), - ), - DataCell( - Text( - // item.asset.exit_at.toString(), - item.peti!.customer!.code_customer.toString() + - '-' + - item.peti!.tipe_peti!.type.toString(), - ), - ), - DataCell( - Text( - item.exit_at != null - ? DateFormat('dd-MM-yyyy').format(item.exit_at!) - : '-', - ), - ), - DataCell( - Text( - // item.asset.exit_at.toString(), - item.est_pengembalian != null - ? DateFormat('dd-MM-yyyy').format(item.est_pengembalian!) - : '-', - ), - ), - DataCell( - Text( - item.exit_pic.toString() != 'null' ? item.exit_pic.toString() : '-', - ), - ), - DataCell( - Text(item.warehouse!.name.toString() != 'null' - ? item.warehouse!.name.toString() - : '-'), - ), - DataCell( - Text( - item.enter_at != null - ? DateFormat('dd-MM-yyyy').format(item.enter_at!) - : '-', - ), - ), - DataCell( - Text( - item.enter_pic.toString() != 'null' ? item.enter_pic.toString() : '-', - ), - ), - DataCell( - Text( - item.warehouse_enter!.id == item.enter_warehouse - ? item.warehouse_enter!.name.toString() - : '-', - ), - ), - DataCell( - Text(item.kondisi_peti.toString() != 'null' - ? item.kondisi_peti.toString() - : '-'), - ), - DataCell( - Text(item.warehouse_enter!.name == 'null' ? '-' : 'Sudah Dikembalikan'), - ), - ]); - } - - @override - bool get isRowCountApproximate => false; - - @override - int get rowCount => data.length; - - @override - int get selectedRowCount => 0; -} diff --git a/lib/pages/pengembalian_barang/show.dart b/lib/pages/pengembalian_barang/show.dart index 9cb0a46..56703dc 100644 --- a/lib/pages/pengembalian_barang/show.dart +++ b/lib/pages/pengembalian_barang/show.dart @@ -1,12 +1,19 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; -import 'package:http/http.dart' as http; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/condition_peti_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/pages/pengembalian_barang/controller/pengembalian_controller.dart'; +import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; -import 'package:siopas/connection/connection.dart'; +import 'package:collection/collection.dart'; + +import '../../models/warehouse_mode.dart'; +import '../../services/controllerApi.dart'; class DetailPengembalianBarangPage extends StatefulWidget { - final int pengembalianId; + final String pengembalianId; + const DetailPengembalianBarangPage({Key? key, required this.pengembalianId}) : super(key: key); @@ -17,60 +24,134 @@ class DetailPengembalianBarangPage extends StatefulWidget { class _DetailPengembalianBarangPageState extends State { - Map? assetStatusData; + AssetStatusModel? pengembalianInfo; + WarehouseModel? warehouseInfo; - String _formatDate(String date) { - try { - DateTime parsedDate = DateTime.parse(date); - String formattedDate = - DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); - return formattedDate; - } catch (e) { - // Handle the case where the date string is not valid - return 'Invalid date format'; - } - } + List? petiData; + List? customerData; + List? warehouseData; + List? _valconditionPeti; + + bool loading = true; @override void initState() { super.initState(); - _fetchAssetStatusDataPengembalian(); + getPengembalianIdData(); + customerListAPI(); + petiListAPI(); + warehouseListAPI(); + kondisiPetiListAPI(); + initializeDateFormatting('id_ID', null); + } + + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerData = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + petiData = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future kondisiPetiListAPI() async { + if (mounted) { + await ControllerApi().fetchKondisiPetiDataAPI().then((value) { + setState(() { + _valconditionPeti = (value as List) + .map((item) => ConditionPetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } } - Future _fetchAssetStatusDataPengembalian() async { - try { - final response = await http.get( - Uri.parse( - '$baseUrl/asset-status/pengembalian/show/${widget.pengembalianId}'), - headers: { - 'Content-Type': 'application/json', - }, - ); - - if (response.statusCode == 200) { + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { setState(() { - assetStatusData = json.decode(response.body)['data']['asset_status']; + warehouseData = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; }); - } else { - throw Exception('Failed to load data'); - } - } catch (e) { - print('Error fetching data: $e'); + }); + } + } + + Future getPengembalianIdData() async { + List pengembalians = + await ControllerPengembalian().fetchPengembalianDataId(); + pengembalianInfo = pengembalians.firstWhereOrNull( + (pengembalian) => pengembalian.id.toString() == widget.pengembalianId, + ); + + setState(() {}); + } + + String _formatDate(String? date) { + if (date != null) { + DateTime parsedDate = DateTime.parse(date); + String formattedDate = + DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); + return formattedDate; + } else { + return ''; } } @override Widget build(BuildContext context) { + PetiAssetModel? petiSqfliteApi; + petiSqfliteApi = petiData?.firstWhereOrNull( + (peti) => peti.id == pengembalianInfo!.peti_id, + ); + + CustomerModel? customerSqfliteApi; + customerSqfliteApi = customerData?.firstWhereOrNull( + (customer) => customer.id == pengembalianInfo?.customer_id, + ); + + WarehouseModel? warehouseSqfliteApi; + warehouseSqfliteApi = warehouseData?.firstWhereOrNull( + (warehouse) => warehouse.id == pengembalianInfo!.enter_warehouse, + ); + + ConditionPetiModel? conditionPetiSqfliteApi; + conditionPetiSqfliteApi = _valconditionPeti?.firstWhereOrNull( + (conditionPeti) => conditionPeti.id == pengembalianInfo!.kondisi_peti_id, + ); + return Scaffold( backgroundColor: Colors.grey[200], appBar: AppBar( backgroundColor: Colors.indigo[700], elevation: 0, - title: Text('Detail Pengembalian Barang', - style: TextStyle( - color: Colors.white, - fontSize: 16, - )), + title: Text( + 'Detail Pengembalian Barang', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ), leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.white), onPressed: () { @@ -97,89 +178,76 @@ class _DetailPengembalianBarangPageState color: Colors.indigo[700], child: Padding( padding: const EdgeInsets.all(16.0), - child: Row( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Icon(Icons.article, - size: 40, - color: Colors.white), // Ganti ikon sesuai kebutuhan - SizedBox(width: 10), - Text( - 'ID: ${widget.pengembalianId}', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: Colors.white, - ), + Row( + children: [ + Icon(Icons.article, size: 30, color: Colors.white), + SizedBox(width: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'ID:', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + SizedBox(height: 5), + Text( + petiSqfliteApi != null && + petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ], + ), + ], ), ], ), ), ), SizedBox(height: 10), - if (assetStatusData != null) ...[ + if (pengembalianInfo != null) ...[ _buildDetailItem( 'Kode Peti', - assetStatusData!['peti']['customer']['code_customer'] + - ' - ' + - assetStatusData!['peti']['tipe_peti']['type'], + petiSqfliteApi != null && petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', ), + Divider(thickness: 1), - _buildDetailItem( - 'Nama Customer', - assetStatusData!['peti']['customer']['name'] != null - ? assetStatusData!['peti']['customer']['name'] - .toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Tgl Peminjaman', - _formatDate(assetStatusData!['exit_at'] != null - ? assetStatusData!['exit_at'] - : '-')), + _buildDetailItem('Tgl Pengembalian', + _formatDate(pengembalianInfo!.enter_at.toString())), Divider(thickness: 1), _buildDetailItem( - 'PJ Peminjaman', - assetStatusData!['exit_pic'] != null - ? assetStatusData!['exit_pic'].toString() - : '-'), + 'PJ Pengembalian', pengembalianInfo!.enter_pic.toString()), Divider(thickness: 1), _buildDetailItem( - 'Asal WH Peminjaman', - assetStatusData!['warehouse']['name'] != null - ? assetStatusData!['warehouse']['name'].toString() + 'Gudang', + warehouseSqfliteApi != null && + warehouseSqfliteApi.name != null + ? warehouseSqfliteApi!.name.toString() : '-'), Divider(thickness: 1), _buildDetailItem( - 'Tgl Pengembalian', - assetStatusData!['enter_at'] != null && - assetStatusData!['enter_at'] != '0000-00-00 00:00:00' - ? _formatDate(assetStatusData!['enter_at']) + 'Kondisi Peti', + conditionPetiSqfliteApi != null && + conditionPetiSqfliteApi.nama_kondisi != null + ? conditionPetiSqfliteApi!.nama_kondisi.toString() : '-', ), Divider(thickness: 1), - _buildDetailItem( - 'PJ Pengembalian', - assetStatusData!['enter_pic'] != null - ? assetStatusData!['enter_pic'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Tujuan WH Pengembalian', - assetStatusData!['warehouse_enter'] != null - ? assetStatusData!['warehouse_enter']['name'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Kondisi Peti', - assetStatusData!['kondisi_peti'] != null - ? assetStatusData!['kondisi_peti'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Status', - assetStatusData!['warehouse_enter'] != null - ? assetStatusData!['warehouse_enter']['name'].toString() - : '-'), + // ... tambahkan data lainnya sesuai kebutuhan ], ], ), @@ -196,7 +264,7 @@ class _DetailPengembalianBarangPageState children: [ Text( label, - style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold), + style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold), ), Text(value), ], diff --git a/lib/pages/sign_in_page.dart b/lib/pages/sign_in_page.dart index d08c708..36b535a 100644 --- a/lib/pages/sign_in_page.dart +++ b/lib/pages/sign_in_page.dart @@ -19,38 +19,69 @@ class _SignInPageState extends State { bool isLoading = false; bool _isPasswordVisible = false; + // Create controllers for IP Address and Port + TextEditingController ipAddressController = TextEditingController(); + TextEditingController portController = TextEditingController(); + @override Widget build(BuildContext context) { final bool isSmallScreen = MediaQuery.of(context).size.width < 600; AuthProvider authProvider = Provider.of(context); UserModel user = authProvider.user; + // Function to show the SettingsModal + void _showSettingsModal(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return SettingsModal(); + }, + ); + } + return Scaffold( - body: Center( - child: isSmallScreen - ? SingleChildScrollView( - reverse: true, - scrollDirection: Axis.vertical, // Tambahkan ini - child: Column( - mainAxisSize: MainAxisSize.min, - children: const [ - _Logo(), - _FormContent(), - ], - ), - ) - : Container( - padding: const EdgeInsets.all(30.0), - constraints: const BoxConstraints(maxWidth: 800), - child: Row( - children: const [ - Expanded(child: _Logo()), - Expanded( - child: Center(child: _FormContent()), - ), - ], + body: Center( + child: isSmallScreen + ? SingleChildScrollView( + reverse: true, + scrollDirection: Axis.vertical, // Tambahkan ini + child: Column( + mainAxisSize: MainAxisSize.min, + children: const [ + _Logo(), + _FormContent(), + ], + ), + ) + : Container( + padding: const EdgeInsets.all(30.0), + constraints: const BoxConstraints(maxWidth: 800), + child: Row( + children: [ + Expanded(child: _Logo()), + Expanded( + child: Center(child: _FormContent()), ), - ))); + ], + ), + ), + ), + bottomNavigationBar: BottomAppBar( + color: Colors.grey[50], + elevation: 0, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextButton( + onPressed: () { + _showSettingsModal(context); // Show the modal + }, + child: Text('Settings'), + ), + ], + ), + ), + ); } } @@ -122,6 +153,9 @@ class __FormContentState extends State<_FormContent> { // Simpan token pengguna ke SharedPreferences SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString('token', user.token!); // Pastikan user.token tidak null + // Role ID Operator + // final String roleId = 'A5C7B207-1A1C-43B8-89BF-222222222222'; + print('token dapat login: ${user.token}'); if (user.role_id == 2) { print('Berhasil login HALAMAN USER'); @@ -277,3 +311,95 @@ class __FormContentState extends State<_FormContent> { Widget _gap() => const SizedBox(height: 16); } + +class SettingsModal extends StatefulWidget { + const SettingsModal({Key? key}) : super(key: key); + + @override + State createState() => _SettingsModalState(); +} + +class _SettingsModalState extends State { + TextEditingController ipAddressController = TextEditingController(); + TextEditingController portController = TextEditingController(); + + @override + void initState() { + super.initState(); + // Load saved IP Address and Port when the modal is initialized + loadSettings(); + } + + void loadSettings() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + String ipAddress = prefs.getString('ipAddress') ?? ''; + String port = prefs.getString('port') ?? ''; + + setState(() { + ipAddressController.text = ipAddress; + portController.text = port; + }); + } + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Settings'), + GestureDetector( + onTap: () { + Navigator.of(context).pop(); // Close the modal + }, + child: Icon(Icons.close), + ), + ], + ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextFormField( + controller: ipAddressController, + keyboardType: TextInputType.number, // Set numeric keyboard + decoration: InputDecoration(labelText: 'IP Address'), + ), + SizedBox(height: 16), + TextFormField( + controller: portController, + keyboardType: TextInputType.number, // Set numeric keyboard + decoration: InputDecoration(labelText: 'Port'), + ), + ], + ), + actions: [ + ElevatedButton( + onPressed: () { + // Save IP Address and Port to SharedPreferences + saveSettings(ipAddressController.text, portController.text); + Navigator.of(context).pop(); // Close the modal + }, + child: Text('Save'), + ), + ], + ); + } + + void saveSettings(String ipAddress, String port) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + prefs.setString('ipAddress', ipAddress); + prefs.setString('port', port); + + // Print the saved data + print('IP Address saved: $ipAddress'); + print('Port saved: $port'); + } + + // Function to clear the IP Address and Port in SharedPreferences + void clearSettings() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + prefs.remove('ipAddress'); + prefs.remove('port'); + print('IP Address and Port cleared'); + } +} diff --git a/lib/pages/transfer_peti/conn/syncronize.dart b/lib/pages/transfer_peti/conn/syncronize.dart new file mode 100644 index 0000000..c9467d9 --- /dev/null +++ b/lib/pages/transfer_peti/conn/syncronize.dart @@ -0,0 +1,224 @@ +import 'dart:convert'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:intl/intl.dart'; +import '../../../connection/connection.dart'; +import '../../../migrations/databasehelper.dart'; +import '../../../models/asset_status_model.dart'; +import 'package:http/http.dart' as http; + +class SyncronizationTransferPetiData { + Future addData(TransferPetiModel transferPetiModel) async { + final dbClient = await conn.db; + late int result; + try { + result = await dbClient!.insert( + SqfliteDatabaseHelper.transferPetiTable, transferPetiModel.toJson()); + } catch (e) { + print('Error adding data to local SQLite: $e'); + result = 0; // Handle the error appropriately + } + return result; + } + + Future fetchData() async { + var dbclient = await conn.db; + List transferPetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.transferPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + transferPetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllInfoTransferPeti() async { + final dbClient = await conn.db; + List transferPetiList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.transferPetiTable); + for (var item in maps) { + transferPetiList.add(TransferPetiModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + Future deleteAllTransferPetiData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.transferPetiTable); + } + + Future saveTransferPetiServerWith( + List transferPetiLocalList) async { + for (var i = 0; i < transferPetiLocalList.length; i++) { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + // Format tanggal sesuai kebutuhan + String formattedCreatedAt = transferPetiLocalList[i].created_at != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(transferPetiLocalList[i].created_at!) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": transferPetiLocalList[i].mobile_id.toString(), // "id": "1 + "peti_id": transferPetiLocalList[i].peti_id.toString(), + "name_customer": transferPetiLocalList[i].name_customer.toString(), + "source_warehouse": + transferPetiLocalList[i].source_warehouse.toString(), + "destination_warehouse": + transferPetiLocalList[i].destination_warehouse.toString(), + "date": transferPetiLocalList[i].date.toString(), + "created_by": transferPetiLocalList[i].created_by.toString(), + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/m-transfer-peti/store'), + body: data, + ); + + if (response.statusCode == 200) { + // print("Data uploaded successfully for index $i:"); + // print("Response body: ${response.body}"); + print("Saving Data saveToTransferPetiWith"); + } else { + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + print("Response body: ${response.body}"); + } + } + + return true; // Pengunggahan berhasil + } + + Future fetchAllPetiTransferInfo() async { + final dbClient = await conn.db; + List transferPetiList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.transferPetiTable); + for (var item in maps) { + transferPetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + Future saveToMysql(List transferPetiLocalList) async { + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } + + try { + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } + + for (var i = 0; i < transferPetiLocalList.length; i++) { +// Format tanggal sesuai kebutuhan + String formattedCreatedAt = transferPetiLocalList[i]['created_at'] != null + ? DateFormat('yyyy-MM-dd HH:mm:ss.SSS') + .format(transferPetiLocalList[i]['created_at']) + : DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(DateTime.now()); + + Map data = { + "mobile_id": + transferPetiLocalList[i]['mobile_id'].toString(), // "id": "1 + "peti_id": transferPetiLocalList[i]['peti_id'].toString(), + "name_customer": transferPetiLocalList[i]['name_customer'].toString(), + "source_warehouse": + transferPetiLocalList[i]['source_warehouse'].toString(), + "destination_warehouse": + transferPetiLocalList[i]['destination_warehouse'].toString(), + "date": transferPetiLocalList[i]['date'].toString(), + "created_by": + transferPetiLocalList[i]['created_by'].toString(), // "id": "1 + "created_at": formattedCreatedAt, + }; + + final response = await http.post( + Uri.parse(await getBaseUrl() + '/m-transfer-peti/store'), + body: data); + if (response.statusCode == 200) { + print(response.body); + print("Saving Data Transfer Peti"); + } else { + print(response.statusCode); + print( + "Failed to upload data for index $i. Status code: ${response.statusCode}"); + } + } + } + + Future> fetchTransferPetiFromApi() async { + final response = await http.get( + Uri.parse(await getBaseUrl() + '/m-transfer-peti'), + ); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['transfer_peti']; + List transferPetiDBList = data + .map((item) => + TransferPetiModel.fromJson(item as Map)) + .toList(); + + return transferPetiDBList; + } else { + throw Exception('Failed to fetch data from API Transfer Peti'); + } + } +} diff --git a/lib/pages/transfer_peti/controller/transfer_peti_controller.dart b/lib/pages/transfer_peti/controller/transfer_peti_controller.dart new file mode 100644 index 0000000..59c8fbf --- /dev/null +++ b/lib/pages/transfer_peti/controller/transfer_peti_controller.dart @@ -0,0 +1,191 @@ +import 'dart:async'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +// import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +// import 'package:http/http.dart' as http; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:sqflite/sqflite.dart'; + +import '../../../migrations/databasehelper.dart'; + +class ControllerTransferPeti { + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAllInfo() async { + final dbClient = await conn.db; + List transferPetiList = []; + try { + final maps = + await dbClient!.query(SqfliteDatabaseHelper.transferPetiTable); + for (var item in maps) { + transferPetiList.add(TransferPetiModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + static Future isInternet() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + + Future addData(TransferPetiModel transferPetiAddModel) async { + var dbclient = await conn.db; + int result = 0; // Provide an initial value + try { + result = await dbclient!.insert(SqfliteDatabaseHelper.transferPetiTable, + transferPetiAddModel.toJson()); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future updateData(TransferPetiModel transferPetiAddModel) async { + var dbclient = await conn.db; + late int result; + try { + result = await dbclient!.update( + SqfliteDatabaseHelper.transferPetiTable, + transferPetiAddModel.toJson(), + where: 'id=?', + whereArgs: [transferPetiAddModel.id], + ); + } catch (e) { + print(e.toString()); + } + return result; + } + + Future fetchTransferPetiLocalController() async { + var dbclient = await conn.db; + List transferPetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.transferPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + transferPetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + Future> fetchDataId() async { + var dbclient = await conn.db; + List transferPetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.transferPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + transferPetiList.add(TransferPetiModel.fromJson(item)); + } + } catch (e) { + print(e.toString()); + } + return transferPetiList; + } + + Future deleteAllData() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.transferPetiTable); + } + + Future addAllData(List transferPetiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var transferPeti in transferPetiList) { + batch.insert( + SqfliteDatabaseHelper.transferPetiTable, + transferPeti.toJson(), + ); + } + + await batch.commit(); + } + + Future fetchPetiData() async { + var dbclient = await conn.db; + List petiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.petiTable, orderBy: 'id DESC'); + for (var item in maps) { + petiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return petiList; + } + + Future fetchTipePetiData() async { + var dbclient = await conn.db; + List tipePetiList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.typePetiTable, orderBy: 'id DESC'); + for (var item in maps) { + tipePetiList.add(item); + } + } catch (e) { + print(e.toString()); + } + return tipePetiList; + } + + Future fetchCustomerData() async { + var dbclient = await conn.db; + List customerList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.customerTable, orderBy: 'id DESC'); + for (var item in maps) { + customerList.add(item); + } + } catch (e) { + print(e.toString()); + } + return customerList; + } + + Future fetchWarehouseData() async { + var dbclient = await conn.db; + List warehouseList = []; + try { + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.warehouseTable, orderBy: 'id DESC'); + for (var item in maps) { + warehouseList.add(item); + } + } catch (e) { + print(e.toString()); + } + return warehouseList; + } +} diff --git a/lib/pages/transfer_peti/edit.dart b/lib/pages/transfer_peti/edit.dart index 14a33c7..9936897 100644 --- a/lib/pages/transfer_peti/edit.dart +++ b/lib/pages/transfer_peti/edit.dart @@ -1,38 +1,71 @@ import 'dart:convert'; +import 'dart:core'; import 'package:flutter/material.dart'; -import 'package:flutter_form_builder/flutter_form_builder.dart'; -import 'package:intl/date_symbol_data_local.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/condition_peti_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/pages/peminjaman_barang/conn/syncronize.dart'; +import 'package:siopas/pages/pengembalian_barang/conn/syncronize.dart'; +import 'package:siopas/pages/transfer_peti/controller/transfer_peti_controller.dart'; +import 'package:siopas/services/controllerApi.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:siopas/connection/connection.dart'; -import 'package:http/http.dart' as http; -import 'package:siopas/models/asset_status_model.dart'; import 'package:siopas/models/m_asset_status_model.dart'; -// import 'package:siopas/models/m_asset_status_model.dart'; -import 'package:siopas/models/user_model.dart'; import 'package:siopas/models/warehouse_mode.dart'; -import 'package:siopas/providers/auth_provider.dart'; +import 'package:flutter_form_builder/flutter_form_builder.dart'; +import 'package:intl/date_symbol_data_local.dart'; // Import package intl +import 'package:uuid/uuid.dart'; + +import '../../models/user_model.dart'; +import '../../providers/auth_provider.dart'; +import 'package:collection/collection.dart'; + +// import 'conn/syncronizeAPI.dart'; +// import 'controller/peminjaman_controller.dart'; class EditTransferPetiPage extends StatefulWidget { - const EditTransferPetiPage({super.key}); + const EditTransferPetiPage({Key? key}) : super(key: key); @override - State createState() => EditTransferPetiPageState(); + State createState() => _EditTransferPetiPageState(); } -class EditTransferPetiPageState extends State { - List _dataAsset = []; - List _dataWarehouse = []; - bool _isLoading = false; +class _EditTransferPetiPageState extends State { + List? _data; + String? token; - PetiAssetModel? _valAsset; - WarehouseModel? _valWarehouse_asal_gudang; - WarehouseModel? _valWarehouse_tujuan_gudang; - // TextEditingController _exit_atController = TextEditingController(); - // TextEditingController _est_pengembalianController = TextEditingController(); + List? typePetiSqfliteApi; + // List? customerSqfliteApi; + // List? warehouseTujuanSqfliteApi; + + PetiAssetModel? petiSqfliteApi; + ConditionPetiModel? conditionPetiSqfliteApi; + WarehouseModel? warehouseSqfliteApi; + WarehouseModel? warehouseTujuanSqfliteApi; + CustomerModel? customerItemSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valWarehouse_tujuan_gudang; + List? _valconditionPeti; + List? _valcustomer; + + CustomerModel? customerSqfliteApi; + + List _unrestrictedPetiList = []; + List _filteredPetiList = []; + bool isQRCodeScanned = false; + + bool loading = true; + TextEditingController _dateController = TextEditingController(); + // TextEditingController _enterPicController = TextEditingController(); + // TextEditingController _kondisiPetiController = TextEditingController(); // TextEditingController _penanggungJawabController = TextEditingController(); final _formKey = GlobalKey(); @@ -44,9 +77,15 @@ class EditTransferPetiPageState extends State { void initState() { super.initState(); _getUserToken(); - fetchDataWarehouse(); - fetchDataAsset(); - initializeDateFormatting('id_ID'); + warehouseListAPI(); + + datatablesTransferPetiList(); + // typePetiListAPI(); + customerListAPI(); + petiListAPI(); + kondisiPetiListAPI(); + + initializeDateFormatting('id_ID', null); } void _getUserToken() async { @@ -54,74 +93,85 @@ class EditTransferPetiPageState extends State { if (mounted) { setState(() { token = prefs.getString('token'); + loading = false; }); } } - Future fetchDataAsset() async { - setState(() { - _isLoading = true; - }); - - final response = await http.get(Uri.parse('$baseUrl/peti-asset')); - + Future warehouseListAPI() async { if (mounted) { - // Periksa apakah widget masih "mounted" - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['petis']; - - final List newDataAsset = (jsonData as List) - .map((item) => PetiAssetModel.fromJson(item)) - .toList(); + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - if (mounted) { - // Periksa lagi sebelum memanggil setState - setState(() { - _dataAsset.addAll(newDataAsset); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Asset Status'); - } + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + _valcustomer = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); } } - Future fetchDataWarehouse() async { - setState(() { - _isLoading = true; + Future datatablesTransferPetiList() async { + await ControllerTransferPeti() + .fetchTransferPetiLocalController() + .then((value) { + setState(() { + _data = (value as List) + .map((e) => TransferPetiModel.fromJson(e)) + .toList(); + loading = false; + }); }); + } - final response = await http.get(Uri.parse('$baseUrl/m-warehouse')); - + Future petiListAPI() async { if (mounted) { - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['warehouse']; + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - final List newDataWarehouse = (jsonData as List) - .map((item) => WarehouseModel.fromJson(item)) - .toList(); + Future kondisiPetiListAPI() async { + if (mounted) { + await ControllerApi().fetchKondisiPetiDataAPI().then((value) { + setState(() { + _valconditionPeti = (value as List) + .map((item) => ConditionPetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } - if (mounted) { - setState(() { - _dataWarehouse.addAll(newDataWarehouse); - _isLoading = false; - }); - } + Future isInteret() async { + await SyncronizationPengembalianData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data Warehouse'); + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); } - } + }); } Future _onQRViewCreated(QRViewController controller) async { @@ -133,93 +183,164 @@ class EditTransferPetiPageState extends State { await Future.delayed(const Duration(milliseconds: 400)); controller.flipCamera(); - controller.scannedDataStream.listen((scanData) { - if (!scanned) { - try { - setState(() { - result = scanData; + controller.scannedDataStream.listen( + (scanData) { + if (!scanned) { + try { + setState(() { + result = scanData; + List lines = result!.code!.split('\n'); + String idPeti = ''; + String idWarehouse = ''; + + for (String line in lines) { + if (line.contains(';')) { + List values = line.split(';'); + if (values.length >= 3) { + idPeti = values[1]; + idWarehouse = values[2]; + break; + } + } + } - List lines = result!.code!.split('\n'); + int? petiId = int.tryParse(idPeti); + int? warehouseId = int.tryParse(idWarehouse); + // AuthProvider authProvider = Provider.of(context, listen: false); + // UserModel user = authProvider.user; + + // Dalam fungsi yang menangani pemindaian QR code + // Dalam fungsi yang menangani pemindaian QR code + if (petiId != null && warehouseId != null) { + // Check apakah peti dengan warehouse_id yang sesuai ada dalam daftar yang diizinkan + PetiAssetModel? allowedPeti = _valpeti?.firstWhereOrNull( + (peti) => + peti.id == petiId && + peti.deleted_at != true && + peti.status == 'AKTIF', + ); + + if (allowedPeti != null) { + setState(() { + isQRCodeScanned = true; + // Mengisi _filteredPetiList untuk dropdown hasil QR Code + _filteredPetiList = [ + _valpeti!.firstWhere((peti) => peti.id == allowedPeti.id) + ]; + + petiSqfliteApi = allowedPeti; + + warehouseSqfliteApi = _valwarehouse?.firstWhereOrNull( + (warehouse) => warehouse.id == allowedPeti.warehouse_id, + ); + + customerItemSqfliteApi = _valcustomer?.firstWhereOrNull( + (customer) => customer.id == allowedPeti.customer_id, + ); + }); + } else { + // Tampilkan pesan error jika data tidak sesuai dengan hak akses + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Data Peti tidak ditemukan atau tidak sesuai dengan hak akses.', + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + backgroundColor: Colors.red[700], + action: SnackBarAction( + label: 'Tutup', + onPressed: () { + ScaffoldMessenger.of(context).hideCurrentSnackBar(); + }, + ), + ), + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } + } else { + // Tampilkan pesan error jika nilai yang dipindai tidak sesuai + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.warning, + color: Colors.black, + ), + SizedBox(width: 8), + Text( + 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + style: TextStyle( + color: Colors.black, + fontSize: 12, + ), + ), + ], + ), + backgroundColor: Colors.yellow[700], + ), + ); + setState(() { + isQRCodeScanned = false; + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + } - String idPeti = ''; - String idWarehouse = ''; + scanned = true; + }); - for (String line in lines) { - if (line.contains(';')) { - List values = line.split(';'); - if (values.length >= 3) { - idPeti = values[1]; - idWarehouse = values[2]; - break; - } + controller.stopCamera(); + + Future.delayed(Duration(milliseconds: 500), () { + if (mounted) { + Navigator.of(context).pop(); } - } - - int? petiId = int.tryParse(idPeti); - int? warehouseId = int.tryParse(idWarehouse); - - if (petiId != null && warehouseId != null) { - _valAsset = _dataAsset.firstWhere( - (peti) => peti.id == petiId, - orElse: () => _valAsset!, - ); - - _valWarehouse_asal_gudang = _dataWarehouse.firstWhere( - (warehouse) => warehouse.id == warehouseId, - orElse: () => _valWarehouse_asal_gudang!, - ); - } else { - // Jika nilai yang dipindai tidak sesuai, tampilkan pesan kesalahan - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Row( - children: [ - Icon( - Icons.warning, - color: Colors.black, // Warna ikon - ), - SizedBox(width: 8), // Jarak antara ikon dan teks - Text( - 'Nilai QR Code tidak sesuai dengan yang diharapkan.', + }); + } catch (e) { + controller.stopCamera(); + + // Reset nilai dropdown Peti dan Warehouse + setState(() { + petiSqfliteApi = null; + warehouseSqfliteApi = null; + }); + print('Error scanning QR Code: $e'); + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + Icon( + Icons.error, + color: Colors.red[400], + ), + SizedBox(width: 8), + Flexible( + child: Text( + e.toString(), style: TextStyle( - color: Colors.black, + color: Colors.white, fontSize: 12, - ), // Warna teks + ), ), - ], - ), - backgroundColor: - Colors.yellow[700], // Warna latar belakang SnackBar + ), + ], ), - ); - } - - scanned = true; - }); - - controller.stopCamera(); - - Future.delayed(Duration(milliseconds: 500), () { - if (mounted) { - Navigator.of(context).pop(); - } - }); - } catch (e) { - print('Error scanning QR Code: $e'); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('Error scanning QR Code: $e'), - ), - ); + backgroundColor: Colors.red[700], + ), + ); + } } - } - }); - } - - @override - void dispose() { - super.dispose(); - controller?.dispose(); + }, + ); } @override @@ -227,117 +348,73 @@ class EditTransferPetiPageState extends State { AuthProvider authProvider = Provider.of(context, listen: false); UserModel user = authProvider.user; - var scanArea = (MediaQuery.of(context).size.width < 400 || - MediaQuery.of(context).size.height < 400) - ? 150.0 - : 300.0; - - // var now = DateTime.now(); - // var dt = DateTime(DateTime.now().year, DateTime.now().month, - // DateTime.now().day, DateTime.now().hour, DateTime.now().minute); - // // _exit_atController.text = DateFormat('yyyy-MM-dd HH:mm:ss').format(dt); - // _exit_atController.text = DateFormat('dd-MM-yyyy').format(dt); + var uuid = Uuid(); - Future _updateTransferPeti() async { - setState(() { - _isLoading = true; - }); + DateTime? parseDateTime(String? dateTimeString) { + if (dateTimeString == null || dateTimeString.isEmpty) { + return null; + } try { - final response = await http.put( - Uri.parse('$baseUrl/peti-asset/update/${_valAsset!.id}'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': token!, - }, - body: jsonEncode({ - 'warehouse_id': _valWarehouse_tujuan_gudang!.id, - 'updated_by': user.fullname, - }), - ); - - print(response.body); - - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['petis']; + return DateTime.parse(dateTimeString); + } catch (e) { + print('Error parsing DateTime: $e'); + return null; + } + } - print('Berhasil memperbarui data: $jsonData'); + Future saveAssetData() async { + DateTime now = DateTime.now().toLocal(); + String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(now); + + if (_dateController.text.isNotEmpty) { + TransferPetiModel transferPetiAddModel = TransferPetiModel( + id: null, + mobile_id: uuid.v4(), + peti_id: petiSqfliteApi!.id, + name_customer: customerItemSqfliteApi!.id, + source_warehouse: warehouseSqfliteApi!.id, + destination_warehouse: warehouseTujuanSqfliteApi!.id, + date: parseDateTime(_dateController.text), + created_by: user.fullname, + created_at: parseDateTime(formattedDate), + ); - // Tampilkan snackbar - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.greenAccent[700], - content: Row( - children: [ - Icon( - Icons.check_circle_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Data berhasil ditransferkan'), - ], - ), - duration: Duration(seconds: 3), // Durasi tampilan snackbar - ), - ); - - // Reset form input - _valAsset = null; - _valWarehouse_asal_gudang = null; - _valWarehouse_tujuan_gudang = null; - // _enterAtController.text = ''; - // _enterPicController.text = ''; - // _kondisiPetiController.text = ''; - // _valWarehouse = null; + // Call addData function + int result = + await ControllerTransferPeti().addData(transferPetiAddModel); + if (result > 0) { + print("Success Tambah data"); + // print(result); + Navigator.pushNamed(context, '/transfer-peti'); + EasyLoading.showSuccess("Data Berhasil Disimpan Transfer Peti"); } else { - _valAsset = null; - _valWarehouse_asal_gudang = null; - _valWarehouse_tujuan_gudang = null; - throw Exception('Gagal memperbarui data Asset Status'); - } - } catch (e) { - print('Error updating data: $e'); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.redAccent[700], - content: Row( - children: [ - Icon( - Icons.error_outline, - color: Colors.white, - ), - SizedBox(width: 5), - Text('Gagal memperbarui data'), - ], - ), - duration: Duration(seconds: 2), // Durasi tampilan snackbar - ), - ); - } finally { - if (mounted) { - setState(() { - _isLoading = false; - }); + print("Failed"); } } } + var scanArea = (MediaQuery.of(context).size.width < 400 || + MediaQuery.of(context).size.height < 400) + ? 250.0 + : 300.0; + return Scaffold( appBar: AppBar( automaticallyImplyLeading: false, backgroundColor: Colors.indigo[700], elevation: 0, - title: Text('Buat Peminjaman Barang', + title: Text('Buat Transfer Peti', style: TextStyle( fontSize: 16, )), ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) + body: loading + ? Center(child: CircularProgressIndicator()) : SingleChildScrollView( child: Padding( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.all(8.0), child: Form( key: _formKey, child: Column( @@ -361,25 +438,46 @@ class EditTransferPetiPageState extends State { border: OutlineInputBorder(), ), hint: Text("Pilih Peti"), - value: _valAsset, - items: _dataAsset.map((PetiAssetModel item) { + value: petiSqfliteApi, + items: (isQRCodeScanned + ? _filteredPetiList + : (_valpeti ?? []).where((peti) => + peti.deleted_at != true && + (peti.warehouse_id == + user.warehouse_id) && + (peti.status == 'AKTIF'))) + .map((PetiAssetModel peti) { return DropdownMenuItem( - child: Text('${item.fix_lot}'), - value: item, + child: Text( + '${peti.fix_lot}', + style: TextStyle( + fontSize: 12, + ), + ), + value: peti, ); }).toList(), onChanged: (PetiAssetModel? value) { setState(() { - _valAsset = value; + petiSqfliteApi = value; if (value != null) { - // Set _valWarehouse berdasarkan warehouse_id dari PetiAssetModel - _valWarehouse_asal_gudang = - _dataWarehouse.firstWhere( + warehouseSqfliteApi = + _valwarehouse?.firstWhere( (warehouse) => warehouse.id == - int.parse(value.warehouse_id - .toString()), + value.warehouse_id, + ); + customerItemSqfliteApi = + _valcustomer?.firstWhereOrNull( + (customer) => + customer.id == value.customer_id, ); + + // Perbarui _unrestrictedPetiList sesuai pemilihan manual + _unrestrictedPetiList = [ + _valpeti!.firstWhere( + (peti) => peti.id == value.id) + ]; } }); }, @@ -467,7 +565,50 @@ class EditTransferPetiPageState extends State { elevation: 2, child: Padding( padding: const EdgeInsets.all(8), - child: DropdownButtonFormField( + child: FormBuilderDateTimePicker( + validator: (value) { + if (_dateController.text.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: Colors.redAccent[700], + content: Row( + children: [ + Icon( + Icons.error_outline, + color: Colors.white, + ), + SizedBox(width: 5), + Text( + 'Tanggal Transfer Peti harus diisi'), + ], + ), + duration: Duration(seconds: 2), + ), + ); + return null; // Return null jika ada kesalahan + } + return null; // Return null jika tidak ada kesalahan + }, + controller: _dateController, + name: 'tanggal', + inputType: InputType.date, + // format: DateFormat('yyyy-MM-dd HH:mm:ss.SSS'), + format: DateFormat('yyyy-MM-dd', 'id_ID'), + // format: DateFormat('yyyy-MM-dd'), + + decoration: InputDecoration( + labelText: 'Tanggal Transfer Peti', + border: OutlineInputBorder(), + suffixIcon: Icon(Icons.calendar_today), + ), + ), + ), + ), + SizedBox(height: 13), + Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: DropdownButtonFormField( validator: (value) { if (value == null) { return 'Harus diisi'; @@ -475,32 +616,33 @@ class EditTransferPetiPageState extends State { return null; }, decoration: InputDecoration( - labelText: 'Asal Gudang', + labelText: 'Pilih Customer', border: OutlineInputBorder(), ), - hint: Text("Asal Gudang"), - value: _valWarehouse_asal_gudang, - items: - _dataWarehouse.map((WarehouseModel warehouse) { - return DropdownMenuItem( - child: Text('${warehouse.name}'), - value: warehouse, - ); - }).toList(), - onChanged: null, - // (WarehouseModel? value) { - // setState(() { - // _valWarehouse_asal_gudang = value; - // }); - // }, + hint: Text("Pilih Customer"), + value: customerItemSqfliteApi, + items: (_valcustomer ?? []) + .where((customer) => + customer.deleted_at != true) + .map((CustomerModel customer) { + return DropdownMenuItem( + child: Text('${customer.name}'), + value: customer, + ); + }).toList() ?? + [], + onChanged: (CustomerModel? value) { + setState(() { + customerItemSqfliteApi = value; + }); + }, ), ), ), - SizedBox(height: 16), + SizedBox(height: 13), Card( - elevation: 2, child: Padding( - padding: const EdgeInsets.all(8), + padding: const EdgeInsets.all(8.0), child: DropdownButtonFormField( validator: (value) { if (value == null) { @@ -509,56 +651,102 @@ class EditTransferPetiPageState extends State { return null; }, decoration: InputDecoration( - labelText: 'Tujuan Gudang', + labelText: 'Pilih Asal Gudang', border: OutlineInputBorder(), ), - hint: Text("Tujuan Gudang"), - value: _valWarehouse_tujuan_gudang, - items: - _dataWarehouse.map((WarehouseModel warehouse) { - return DropdownMenuItem( - child: Text('${warehouse.name}'), - value: warehouse, - ); - }).toList(), + hint: Text("Pilih Asal Gudang"), + value: warehouseSqfliteApi, + items: (_valwarehouse ?? []) + .where((warehouse) => + warehouse.deleted_at != true) + .map((WarehouseModel warehouse) { + return DropdownMenuItem( + child: Text('${warehouse.name}'), + value: warehouse, + ); + }).toList() ?? + [], onChanged: (WarehouseModel? value) { setState(() { - _valWarehouse_tujuan_gudang = value; + warehouseSqfliteApi = value; }); }, ), ), ), - Visibility( - visible: false, - child: FractionallySizedBox( - widthFactor: 1.0, - child: Card( - elevation: 1, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - children: [ - Text( - 'Data dari QR Code:', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 8), - Text( - result != null && result!.code != null - ? result!.code! - : 'Belum ada data QR Code terpindai', - style: TextStyle(fontSize: 14), - ), - ], - ), + + SizedBox(height: 13), + Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: DropdownButtonFormField( + validator: (value) { + if (value == null) { + return 'Harus diisi'; + } + return null; + }, + decoration: InputDecoration( + labelText: 'Pilih Tujuan Gudang', + border: OutlineInputBorder(), ), + hint: Text("Pilih Tujuan Gudang"), + value: warehouseTujuanSqfliteApi, + items: (_valwarehouse ?? []) + .where((warehouseTujuan) => + warehouseTujuan.deleted_at != true) + .map((WarehouseModel warehouseTujuan) { + return DropdownMenuItem( + child: Text('${warehouseTujuan.name}'), + value: warehouseTujuan, + ); + }).toList() ?? + [], + onChanged: (WarehouseModel? value) { + setState(() { + warehouseTujuanSqfliteApi = value; + }); + }, ), ), ), + // SizedBox(height: 16), + // Card( + // elevation: 2, + // child: Padding( + // padding: const EdgeInsets.all(8), + // child: DropdownButtonFormField( + // validator: (value) { + // if (value == null) { + // return 'Harus diisi'; + // } + // return null; + // }, + // decoration: InputDecoration( + // labelText: 'Pilih Tujuan Gudang', + // border: OutlineInputBorder(), + // ), + // hint: Text("Pilih Tujuan Gudang"), + // value: warehouseTujuanSqfliteApi, + // items: (_valWarehouse_tujuan_gudang ?? []) + // .where( + // (warehouse) => warehouse.deleted_at != true) + // .map((WarehouseModel warehouse) + // // _valWarehouse_tujuan_gudang?.map((warehouse) + // { + // return DropdownMenuItem( + // child: Text('${warehouse.name}'), + // value: warehouse, + // ); + // }).toList(), + // onChanged: (WarehouseModel? value) { + // setState(() { + // warehouseTujuanSqfliteApi = value; + // }); + // }, + // ), + // ), + // ), ], ), ), @@ -606,10 +794,14 @@ class EditTransferPetiPageState extends State { color: Colors.green, // Warna hijau untuk save ), child: IconButton( - onPressed: () { + onPressed: () async { if (_formKey.currentState!.validate()) { try { - _updateTransferPeti(); + if (_dateController.text.isNotEmpty && + petiSqfliteApi != null && + warehouseSqfliteApi != null) { + await saveAssetData(); + } } catch (e) { print('Error storing data: $e'); } diff --git a/lib/pages/transfer_peti/index.dart b/lib/pages/transfer_peti/index.dart new file mode 100644 index 0000000..60c69a3 --- /dev/null +++ b/lib/pages/transfer_peti/index.dart @@ -0,0 +1,751 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:data_table_2/data_table_2.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/disposal_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/models/warehouse_mode.dart'; +import 'package:siopas/pages/peminjaman_barang/conn/syncronize.dart'; +import 'package:siopas/pages/transfer_peti/conn/syncronize.dart'; +import 'package:siopas/pages/transfer_peti/controller/transfer_peti_controller.dart'; +import 'package:siopas/services/syncronizeAPI.dart'; +import 'package:siopas/services/controllerApi.dart'; +import 'package:siopas/pages/peminjaman_barang/controller/peminjaman_controller.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/providers/asset_status_provider.dart'; +import 'package:http/http.dart' as http; + +import '../../connection/connection.dart'; +import '../../models/condition_peti_model.dart'; + +class TransferPetiPage extends StatefulWidget { + const TransferPetiPage({super.key}); + + @override + State createState() => TransferPetiPageState(); +} + +class TransferPetiPageState extends State { + String? token; + bool loading = true; + + // Reinit atau Upload Only + WarehouseModel? warehouseSqfliteApi; + List? typePetiSqfliteApi; + List? customerSqfliteApi; + PetiAssetModel? petiSqfliteApi; + DisposalPetiModel? disposalSqfliteApi; + + List? _valpeti; // Change this line + List? _valwarehouse; + List? _valdisposal; + + // Datatable + int _currentPage = 1; + int _pageSize = 10; + List? _data; + List? _petiData; + List? _tipePetiData; + List? _customerData; + List? _warehouseData; + bool _isLoading = false; + Timer? _timer; + + @override + void initState() { + super.initState(); + _getUserToken(); + + warehouseListAPI(); + typePetiListAPI(); + customerListAPI(); + petiListAPI(); + // disposalListAPI(); + + // Tampil data Datatables + // datatablesAssetStatusList(); + datatablesTransferPetiList(); + datatablesPetiList(); + datatablesTipePetiList(); + datatablesCustomerList(); + datatablesWarehouseList(); + _data = []; + } + + void _getUserToken() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + if (mounted) { + setState(() { + token = prefs.getString('token'); + }); + } + } + + // Reinit atau Upload Only ------------------------------------------------------------------------ + Future warehouseListAPI() async { + if (mounted) { + await ControllerApi().fetchWarehouseDataAPI().then((value) { + setState(() { + _valwarehouse = (value as List) + .map((item) => WarehouseModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + // Future disposalListAPI() async { + // if (mounted) { + // await ControllerApi().fetchDisposalDataAPI().then((value) { + // setState(() { + // _valdisposal = (value as List) + // .map((item) => DisposalPetiModel.fromJson(item)) + // .toList(); + // loading = false; + // }); + // }); + // } + // } + + Future typePetiListAPI() async { + if (mounted) { + await ControllerApi().fetchTipePetiDataAPI().then((value) { + setState(() { + typePetiSqfliteApi = (value as List) + .map((item) => TypePetiModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future customerListAPI() async { + if (mounted) { + await ControllerApi().fetchCustomerDataAPI().then((value) { + setState(() { + customerSqfliteApi = (value as List) + .map((item) => CustomerModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + Future petiListAPI() async { + if (mounted) { + await ControllerApi().fetchPetiDataAPI().then((value) { + setState(() { + _valpeti = (value as List) + .map((item) => PetiAssetModel.fromJson(item)) + .toList(); + loading = false; + }); + }); + } + } + + // Future reinitAssetStatusApi() async { + // List assetStatusApiData = + // await SyncronizationDataAPI().fetchAssetStatusFromApi(); + // await ControllerApi() + // .deleteAllAssetStatusDataAPI(); // Clear existing data in SQLite + // await ControllerApi() + // .addAllAssetStatusDataAPI(assetStatusApiData); // Add new data to SQLite + // } + + Future reinitWarehouseApi() async { + EasyLoading.show(status: 'Mengambil data Warehouse...'); + List warehouseApiData = + await SyncronizationDataAPI().fetchWarehouseFromApi(); + await ControllerApi() + .deleteAllWarehouseDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllWarehouseDataAPI(warehouseApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitPetiApi() async { + EasyLoading.show(status: 'Mengambil data Peti...'); + List petiApiData = + await SyncronizationDataAPI().fetchPetiFromApi(); + await ControllerApi() + .deleteAllPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllPetiDataAPI(petiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitCustomerApi() async { + EasyLoading.show(status: 'Mengambil data Customer...'); + List customerApiData = + await SyncronizationDataAPI().fetchCustomerFromApi(); + await ControllerApi() + .deleteAllCustomerDataAPI(); // Clear existing data in SQLite + await ControllerApi() + .addAllCustomerDataAPI(customerApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + + Future reinitConditionPetiApi() async { + EasyLoading.show(status: 'Mengambil data Condition Peti...'); + List conditionPetiApiData = + await SyncronizationDataAPI().fetchKondisiPetiFromApi(); + await ControllerApi() + .deleteAllKondisiPetiDataAPI(); // Clear existing data in SQLite + await ControllerApi().addAllKondisiPetiDataAPI( + conditionPetiApiData); // Add new data to SQLite + EasyLoading.dismiss(); + } + // Future reinitDisposalApi() async { + // List disposalApiData = + // await SyncronizationDataAPI().fetchDisposalFromApi(); + // await ControllerApi() + // .deleteAllDisposalDataAPI(); // Clear existing data in SQLite + // await ControllerApi() + // .addAllDisposalDataAPI(disposalApiData); // Add new data to SQLite + // } + + Future fetchDataFromApiAndSync() async { + EasyLoading.show(status: 'Mengambil data dari Server...'); + try { + await syncToMysql(); + + // await reinitAssetStatusApi(); + await reinitWarehouseApi(); + await reinitPetiApi(); + await reinitCustomerApi(); + // await reinitTypePetiApi(); + await reinitConditionPetiApi(); + // await reinitDisposalApi(); + + // await datatablesAssetStatusList(); + await datatablesTransferPetiList(); + EasyLoading.showSuccess('Data berhasil diperbarui'); + } catch (e) { + EasyLoading.showError('Gagal memperbarui data: $e'); + } finally { + EasyLoading.dismiss(); + } + } + + Future syncToMysql() async { + await SyncronizationTransferPetiData() + .fetchAllInfoTransferPeti() + .then((transferPetiList) async { + EasyLoading.show( + status: 'Jangan tutup aplikasi. Kami sedang menyinkronkan...'); + await Future.delayed(Duration(seconds: 3)); + + // Tambahkan penanganan pengunggahan + bool uploadSuccess = await SyncronizationTransferPetiData() + .saveTransferPetiServerWith(transferPetiList); + + // Jika pengunggahan berhasil, hapus data lokal + if (uploadSuccess) { + await SyncronizationTransferPetiData().deleteAllTransferPetiData(); + // Setelah selesai, tampilkan pesan sukses + EasyLoading.showSuccess('Berhasil disinkronkan dengan Server'); + // await datatablesAssetStatusList(); + await datatablesTransferPetiList(); + } else { + // Tampilkan pesan gagal jika pengunggahan tidak berhasil + EasyLoading.showError('Gagal disinkronkan dengan Server'); + } + }); + } + + // Future syncToMysql() async { + // await SyncronizationData().fetchAllInfo().then((assetList) async { + // EasyLoading.show(status: 'Don\'t close app. We are syncing...'); + // await SyncronizationData().saveToMysqlWith(assetList); + // await SyncronizationData().deleteAllAssetStatusData(); + // // EasyLoading.showSuccess('Successfully saved to MySQL'); + // }); + // } + + Future isInteret() async { + await SyncronizationPeminjamanData.isInternet().then((connection) { + if (connection) { + print("Internet connection available"); + } else { + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text("No Internet"))); + } + }); + } + + // Datatables ------------------------------------------------------------------------ + Future datatablesTransferPetiList() async { + await ControllerTransferPeti() + .fetchTransferPetiLocalController() + .then((value) { + setState(() { + _data = (value as List) + .map((e) => TransferPetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesPetiList() async { + await Controller().fetchPetiData().then((value) { + setState(() { + _petiData = (value as List) + .map((e) => PetiAssetModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesTipePetiList() async { + await Controller().fetchTipePetiData().then((value) { + setState(() { + _tipePetiData = (value as List) + .map((e) => TypePetiModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesCustomerList() async { + await Controller().fetchCustomerData().then((value) { + setState(() { + _customerData = (value as List) + .map((e) => CustomerModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + Future datatablesWarehouseList() async { + await Controller().fetchWarehouseData().then((value) { + setState(() { + _warehouseData = (value as List) + .map((e) => WarehouseModel.fromJson(e)) + .toList(); + loading = false; + }); + }); + } + + void _loadMoreData() { + if (mounted && !_isLoading) { + setState(() { + _currentPage++; + }); + // datatablesAssetStatusList(); + datatablesTransferPetiList(); + } + } + + @override + Widget build(BuildContext context) { + // Add this function outside the build method + void showSyncDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + // Dialog shape and style + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + backgroundColor: Colors.grey[100], + elevation: 0, + + // Dialog content + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Dialog title with close button + Container( + width: double.infinity, + color: Colors.indigo[700], // Indigo background + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + "Sync Server Transfer Peti", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16.0, + ), + ), + ), + IconButton( + icon: Icon( + Icons.close, + color: Colors.white, + ), + onPressed: () { + Navigator.pop(context); // Close dialog + }, + ), + ], + ), + ), + + // Divider + Divider( + height: 1, + thickness: 1, + color: Colors.black, // Black divider + ), + + // Re-init Button + Container( + width: double.infinity, + child: TextButton( + onPressed: () { + Navigator.pop(context); // Close dialog + fetchDataFromApiAndSync(); + }, + child: Text( + "Upload + Download", + style: TextStyle( + color: Colors.black, + fontSize: 16.0, + fontFamily: 'Poppins', + ), + ), + ), + ), + + // Divider + // Divider( + // height: 1, + // thickness: 1, + // color: Colors.black, // Black divider + // ), + + // Upload Only Button + // Container( + // width: double.infinity, + // child: TextButton( + // onPressed: () { + // Navigator.pop(context); // Close dialog + // syncToMysql(); + // }, + // child: Text( + // "Upload Only", + // style: TextStyle( + // color: Colors.black, + // fontSize: 16.0, + // fontFamily: 'Poppins', + // ), + // ), + // ), + // ), + ], + ), + ); + }, + ); + } + + return DefaultTabController( + length: 1, + child: Scaffold( + appBar: AppBar( + backgroundColor: Colors.indigo[700], + elevation: 0, + title: Text('Data Transfer Peti', + style: TextStyle( + fontSize: 16, + )), + actions: [ + IconButton( + icon: Icon(Icons.backup), + onPressed: () async { + if (await SyncronizationPeminjamanData.isInternet()) { + // Display custom dialog when the IconButton is pressed + showSyncDialog(context); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text("No internet connection")), + ); + } + }, + ), + ], + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Colors.white), + onPressed: () { + Navigator.pushNamed(context, '/home'); + }, + ), + bottom: TabBar( + indicator: BoxDecoration(color: Color.fromARGB(255, 50, 39, 122)), + tabs: [ + Tab(text: 'Transfer Peti Hari ini'), + ], + ), + ), + body: _isLoading + ? const Center(child: CircularProgressIndicator()) + : TabBarView( + children: [ + SingleChildScrollView( + child: Column( + children: [ + SizedBox( + width: double.infinity, + child: PaginatedDataTable( + // header: Text('Searching'), // Removed const + rowsPerPage: _pageSize, + availableRowsPerPage: [10, 25, 50], // Removed const + onRowsPerPageChanged: (value) { + setState(() { + _pageSize = value!; + }); + }, + columns: [ + DataColumn(label: Text('No')), + DataColumn(label: Text('Kode Peti')), + DataColumn(label: Text('Customer')), + DataColumn(label: Text('Tgl Transfer')), + DataColumn(label: Text('Asal Gudang')), + DataColumn(label: Text('Tujuan Gudang')), + ], + source: _DataSourceLokal( + // data: _data!, + data: _data != null ? _data! : [], + context: context, + petiData: _petiData != null ? _petiData : [], + tipePetiData: + _tipePetiData != null ? _tipePetiData : [], + customerData: + _customerData != null ? _customerData : [], + warehouseData: + _warehouseData != null ? _warehouseData : [], + ), + ), + ), + ], + ), + ), + ], + ), + bottomNavigationBar: BottomAppBar( + color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang + child: Container( + height: 65.0, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + customBorder: CircleBorder(), + onTap: () { + // Aksi ketika ikon diklik + Navigator.pushNamed(context, '/transfer-peti/edit'); + }, + child: Container( + width: 45, + height: 45, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.greenAccent[700], + ), + child: Icon( + Icons.add, + size: 30, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class _DataSourceLokal extends DataTableSource { + final List data; + List? petiData; + List? tipePetiData; + List? customerData; + List? warehouseData; + final BuildContext context; + + _DataSourceLokal({ + required this.data, + required this.petiData, + required this.tipePetiData, + required this.customerData, + required this.warehouseData, + required this.context, + }); + @override + DataRow? getRow(int index) { + if (index >= data.length) { + return null; + } + + data.sort((a, b) { + if (a.created_at == null && b.created_at == null) { + return 0; // Both dates are null, consider them equal + } else if (a.created_at == null) { + return 1; // Null is considered greater than non-null + } else if (b.created_at == null) { + return -1; // Non-null is considered smaller than null + } else { + return b.created_at!.compareTo(a.created_at!); // Compare non-null dates + } + }); + + final item = data[index]; + + // Menemukan data peti yang sesuai dengan asset + PetiAssetModel? petiSqfliteApi; + if (item.peti_id != null) { + petiSqfliteApi = petiData!.firstWhere( + (peti) => peti.id == item.peti_id, + orElse: () => PetiAssetModel( + id: null, + tipe_peti_id: null, + warna: 'null', + packing_no: null, + customer_id: null, + warehouse_id: null, + kondisipeti_id: null, + jumlah: null, + date_pembuatan: DateTime.now(), + created_by: 'null', + updated_by: 'null', + fix_lot: '', + ), + ); + } + + TypePetiModel? tipePetiSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.tipe_peti_id != null) { + tipePetiSqfliteApi = tipePetiData?.firstWhere( + (tipePeti) => tipePeti.id == petiSqfliteApi?.tipe_peti_id, + orElse: () => TypePetiModel( + id: null, + type: 'null', + size_peti: 'null', + description: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + CustomerModel? customerSqfliteApi; + if (petiSqfliteApi != null && petiSqfliteApi.customer_id != null) { + customerSqfliteApi = customerData?.firstWhere( + (customer) => customer.id == petiSqfliteApi?.customer_id, + orElse: () => CustomerModel( + id: null, + name: 'null', + code_customer: 'null', + lot_no: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + WarehouseModel? warehouseAsalGudangSqfliteApi; + if (item.source_warehouse != null) { + warehouseAsalGudangSqfliteApi = warehouseData?.firstWhere( + (warehouse) => warehouse.id == item.source_warehouse, + orElse: () => WarehouseModel( + id: null, + name: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + WarehouseModel? warehouseTujuanGudangSqfliteApi; + if (item.destination_warehouse != null) { + warehouseTujuanGudangSqfliteApi = warehouseData?.firstWhere( + (warehouse) => warehouse.id == item.destination_warehouse, + orElse: () => WarehouseModel( + id: null, + name: 'null', + created_by: 'null', + updated_by: 'null', + ), + ); + } + + return DataRow(cells: [ + DataCell( + Text( + (index + 1).toString(), + ), + ), + DataCell( + Text( + petiSqfliteApi != null && petiSqfliteApi.fix_lot != null + ? petiSqfliteApi!.fix_lot.toString() + : '-', + ), + ), + DataCell( + Text( + customerSqfliteApi != null && customerSqfliteApi.name != null + ? customerSqfliteApi!.name.toString() + : '-', + ), + ), + DataCell( + Text( + item.date != null ? DateFormat('dd-MM-yyyy').format(item.date!) : '-', + ), + ), + DataCell( + Text( + warehouseAsalGudangSqfliteApi != null && + warehouseAsalGudangSqfliteApi.name != null + ? warehouseAsalGudangSqfliteApi!.name.toString() + : '-', + ), + ), + DataCell( + Text( + warehouseTujuanGudangSqfliteApi != null && + warehouseTujuanGudangSqfliteApi.name != null + ? warehouseTujuanGudangSqfliteApi!.name.toString() + : '-', + ), + ), + ]); + } + + @override + bool get isRowCountApproximate => false; + + @override + int get rowCount => data.length; + + @override + int get selectedRowCount => 0; +} diff --git a/lib/pages/transfer_peti/show.dart b/lib/pages/transfer_peti/show.dart deleted file mode 100644 index 08b4e12..0000000 --- a/lib/pages/transfer_peti/show.dart +++ /dev/null @@ -1,175 +0,0 @@ -import 'dart:convert'; - -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart'; -import 'package:siopas/connection/connection.dart'; -import 'package:http/http.dart' as http; - -class DetailTransferPetiPage extends StatefulWidget { - final int petiId; - const DetailTransferPetiPage({Key? key, required this.petiId}) - : super(key: key); - - @override - State createState() => _DetailTransferPetiPageState(); -} - -class _DetailTransferPetiPageState extends State { - Map? petiStatusData; - String _formatDate(String date) { - DateTime parsedDate = DateTime.parse(date); - String formattedDate = - DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); - return formattedDate; - } - - @override - void initState() { - super.initState(); - _fetchAssetStatusDataPengembalian(); - } - - Future _fetchAssetStatusDataPengembalian() async { - try { - final response = await http.get( - Uri.parse('$baseUrl/peti-asset/show/${widget.petiId}'), - headers: { - 'Content-Type': 'application/json', - }, - ); - - if (response.statusCode == 200) { - setState(() { - petiStatusData = json.decode(response.body)['data']['peti']; - }); - } else { - throw Exception('Failed to load data'); - } - } catch (e) { - print('Error fetching data: $e'); - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: Colors.grey[200], - appBar: AppBar( - backgroundColor: Colors.indigo[700], - elevation: 0, - title: Text('Detail Peti', - style: TextStyle( - color: Colors.white, - fontSize: 16, - )), - leading: IconButton( - icon: Icon(Icons.arrow_back, color: Colors.white), - onPressed: () { - Navigator.pushNamed(context, '/transfer-peti'); - }, - ), - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: Card( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15.0), - ), - elevation: 5, - child: Column( - children: [ - Card( - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.vertical(top: Radius.circular(15.0)), - ), - elevation: 0, - margin: EdgeInsets.all(0), - color: Colors.indigo[700], - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Row( - children: [ - Icon(Icons.article, - size: 40, - color: Colors.white), // Ganti ikon sesuai kebutuhan - SizedBox(width: 10), - Text( - 'ID: ${widget.petiId}', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: Colors.white, - ), - ), - ], - ), - ), - ), - SizedBox(height: 10), - if (petiStatusData != null) ...[ - _buildDetailItem( - 'Tipe Peti', - petiStatusData!['tipe_peti']['type'], - ), - Divider(thickness: 1), - _buildDetailItem( - 'Warna Peti', - petiStatusData!['warna'] != null - ? petiStatusData!['warna'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Customer', - petiStatusData!['customer']['name'] != null - ? petiStatusData!['customer']['name'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Warehouse', - petiStatusData!['warehouse']['name'] != null - ? petiStatusData!['warehouse']['name'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Status Peti', - petiStatusData!['status_disposal'] != null - ? petiStatusData!['status_disposal'].toString() - : '-'), - Divider(thickness: 1), - _buildDetailItem( - 'Jumlah Peti', - petiStatusData!['jumlah'] != null - ? petiStatusData!['jumlah'].toString() - : '-', - ), - Divider(thickness: 1), - _buildDetailItem( - 'Tgl Pembuatan Peti', - petiStatusData!['created_at'] != null - ? _formatDate(petiStatusData!['created_at']) - : '-'), - ], - ], - ), - ), - ), - ); - } - - Widget _buildDetailItem(String label, String value) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - label, - style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold), - ), - Text(value), - ], - ), - ); - } -} diff --git a/lib/pages/transfer_peti/transfer_peti_index.dart b/lib/pages/transfer_peti/transfer_peti_index.dart deleted file mode 100644 index f083edf..0000000 --- a/lib/pages/transfer_peti/transfer_peti_index.dart +++ /dev/null @@ -1,287 +0,0 @@ -import 'dart:convert'; -import 'dart:developer'; - -import 'package:flutter/material.dart'; -import 'package:data_table_2/data_table_2.dart'; -import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; -import 'package:shared_preferences/shared_preferences.dart'; -import 'package:siopas/models/asset_status_model.dart'; -import 'package:siopas/models/m_asset_status_model.dart'; -import 'package:siopas/pages/pengembalian_barang/show.dart'; -import 'package:siopas/pages/transfer_peti/show.dart'; -import 'package:siopas/providers/asset_status_provider.dart'; -import 'package:http/http.dart' as http; - -import '../../connection/connection.dart'; -import '../peminjaman_barang/show.dart'; - -class TransferPetiPage extends StatefulWidget { - const TransferPetiPage({super.key}); - - @override - State createState() => TransferPetiPageState(); -} - -class TransferPetiPageState extends State { - String? token; - int _currentPage = 1; - int _pageSize = 10; - List _data = []; - bool _isLoading = false; - - @override - void initState() { - super.initState(); - _getUserToken(); - fetchData(); - } - - void _getUserToken() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - if (mounted) { - setState(() { - token = prefs.getString('token'); - }); - } - } - - Future fetchData() async { - if (mounted) { - setState(() { - _isLoading = true; - }); - - try { - final response = await http.get(Uri.parse('$baseUrl/peti-asset')); - - if (response.statusCode == 200) { - final jsonData = json.decode(response.body)['data']['petis']; - - final List newData = (jsonData as List) - .map((item) => PetiAssetModel.fromJson(item)) - .toList(); - - if (mounted) { - setState(() { - _data.addAll(newData); - _isLoading = false; - }); - } - } else { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - throw Exception('Failed to fetch data'); - } - } catch (e) { - if (mounted) { - setState(() { - _isLoading = false; - }); - } - print('Error fetching data: $e'); - } - } - } - - void _loadMoreData() { - if (mounted && !_isLoading) { - setState(() { - _currentPage++; - }); - fetchData(); - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Colors.indigo[700], - elevation: 0, - title: Text('Data Peti (Transfer Peti)', - style: TextStyle( - fontSize: 16, - )), - leading: IconButton( - icon: Icon(Icons.arrow_back, color: Colors.white), - onPressed: () { - Navigator.pushNamed(context, '/home'); - }, - ), - ), - body: _isLoading - ? const Center(child: CircularProgressIndicator()) - : SingleChildScrollView( - child: SizedBox( - width: double.infinity, - child: PaginatedDataTable( - header: const Text('Menu Peti'), - rowsPerPage: _pageSize, - availableRowsPerPage: const [10, 25, 50], - onRowsPerPageChanged: (value) { - setState(() { - _pageSize = value!; - }); - }, - columns: const [ - DataColumn(label: Text('No')), - DataColumn(label: Text('')), - DataColumn(label: Text('Customer')), - DataColumn(label: Text('Gudang')), - DataColumn(label: Text('Fix Lot')), - DataColumn(label: Text('Tipe Peti')), - DataColumn(label: Text('Ukuran Peti')), - DataColumn(label: Text('Lot No')), - DataColumn(label: Text('Status Peti')), - DataColumn(label: Text('Packing No')), - ], - source: _DataSource(data: _data, context: context), - ), - ), - ), - bottomNavigationBar: BottomAppBar( - color: Color.fromARGB(255, 5, 28, 158), // Warna latar belakang - child: Container( - height: 65.0, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - customBorder: CircleBorder(), - onTap: () { - // Aksi ketika ikon diklik - Navigator.pushNamed(context, '/transfer-peti/edit'); - }, - child: Container( - width: 45, - height: 45, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.yellow[800], - ), - child: Icon( - Icons.local_shipping, - size: 30, - color: Colors.white, - ), - ), - ), - ], - ), - ), - ), - ); - } -} - -class _DataSource extends DataTableSource { - final List data; - final BuildContext context; - - _DataSource({required this.data, required this.context}); - @override - DataRow? getRow(int index) { - if (index >= data.length) { - return null; - } - - final item = data[index]; - - return DataRow(cells: [ - DataCell( - Text( - (index + 1).toString(), - ), - ), - DataCell( - GestureDetector( - onTap: () { - if (item.id != null) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => DetailTransferPetiPage( - petiId: item.id!, - ), - ), - ); - - print('asset id: ${item.id}'); - } - }, - child: Icon( - Icons.article_outlined, - size: 30, - color: Colors.indigo[700], - ), - ), - ), - DataCell( - Text( - item.customer!.name!.toString() != 'null' - ? item.customer!.name.toString() - : '-', - ), - ), - DataCell( - Text( - item.warehouse!.name!.toString() != 'null' - ? item.warehouse!.name.toString() - : '-', - ), - ), - DataCell( - Text( - item.fix_lot.toString() != 'null' ? item.fix_lot.toString() : '-', - ), - ), - DataCell( - Text( - item.tipe_peti!.type.toString() != 'null' - ? item.tipe_peti!.type.toString() - : '-', - ), - ), - DataCell( - Text(item.tipe_peti!.size_peti.toString() != 'null' - ? item.tipe_peti!.size_peti.toString() - : '-'), - ), - DataCell( - Text( - item.customer!.lot_no.toString() != 'null' - ? item.customer!.lot_no.toString() - : '-', - ), - ), - DataCell( - Text( - item.status_disposal.toString() != 'null' - ? item.status_disposal.toString() - : '-', - ), - ), - DataCell( - Text( - item.packing_no.toString() != 'null' - ? item.packing_no.toString() - : '-', - ), - ), - ]); - } - - @override - bool get isRowCountApproximate => false; - - @override - int get rowCount => data.length; - - @override - int get selectedRowCount => 0; -} diff --git a/lib/services/asset_status_service.dart b/lib/services/asset_status_service.dart index 3096ce7..e83be4a 100644 --- a/lib/services/asset_status_service.dart +++ b/lib/services/asset_status_service.dart @@ -12,7 +12,7 @@ import '../models/asset_status_model.dart'; class AssetStatusService { Future> getAssetStatus() async { // var url = Uri.parse('$baseUrl/products'); - var url = Uri.parse("$baseUrl/asset-status"); + var url = Uri.parse(await getBaseUrl() + "/asset-status"); var headers = {'Content-Type': 'application/json'}; var response = await http.get(url, headers: headers); @@ -43,7 +43,7 @@ class AssetStatusService { // int? exit_warehouse, String? token, }) async { - var url = Uri.parse('$baseUrl/asset-status/store'); + var url = Uri.parse(await getBaseUrl() + 'asset-status/store'); var headers = { 'Content-Type': 'application/json', 'Authorization': token!, diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index 3c5b6d2..78044c3 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -1,6 +1,5 @@ import 'dart:convert'; import 'dart:async'; -import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; import '../connection/connection.dart'; @@ -8,7 +7,7 @@ import '../models/user_model.dart'; class AuthService { Future getUserInfoFromServer(String token) async { - var url = Uri.parse('$baseUrl/user'); + var url = Uri.parse(await getBaseUrl() + '/user'); var headers = { 'Content-Type': 'application/json', 'Authorization': token, @@ -30,7 +29,7 @@ class AuthService { String? email, String? password, }) async { - var url = Uri.parse('$baseUrl/register'); + var url = Uri.parse(await getBaseUrl() + '/register'); var headers = {'Content-Type': 'application/json'}; var body = jsonEncode({ 'name': name, @@ -59,7 +58,7 @@ class AuthService { String? email, String? password, }) async { - var url = Uri.parse('$baseUrl/login'); + var url = Uri.parse(await getBaseUrl() + '/login'); var headers = {'Content-Type': 'application/json'}; var body = jsonEncode({ 'email': email, @@ -85,7 +84,7 @@ class AuthService { return user; } else { - throw Exception('Gagal Login'); + throw Exception('Failed to login'); } } @@ -96,7 +95,7 @@ class AuthService { FutureOr logout(String token) async { try { - var url = Uri.parse('$baseUrl/logout'); + var url = Uri.parse(await getBaseUrl() + '/logout'); var headers = { 'Content-Type': 'application/json', 'Authorization': token, @@ -130,7 +129,7 @@ class AuthService { String? token, }) async { try { - var url = Uri.parse('$baseUrl/user'); + var url = Uri.parse(await getBaseUrl() + '/user'); var headers = { 'Content-Type': 'application/json', 'Authorization': token!, diff --git a/lib/services/controllerApi.dart b/lib/services/controllerApi.dart new file mode 100644 index 0000000..8dea81e --- /dev/null +++ b/lib/services/controllerApi.dart @@ -0,0 +1,372 @@ +import 'dart:async'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/disposal_model.dart'; +import 'package:siopas/models/m_asset_status_model.dart'; +import 'package:siopas/models/warehouse_mode.dart'; +import 'package:http/http.dart' as http; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import 'package:sqflite/sqflite.dart'; + +import '../migrations/databasehelper.dart'; +import '../models/condition_peti_model.dart'; +import '../models/type_peti_model.dart'; + +class ControllerApi { + final conn = SqfliteDatabaseHelper.instance; + + static Future isInternetApi() async { + var connectivityResult = await (Connectivity().checkConnectivity()); + if (connectivityResult == ConnectivityResult.mobile) { + if (await InternetConnectionChecker().hasConnection) { + print("Mobile data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else if (connectivityResult == ConnectivityResult.wifi) { + if (await InternetConnectionChecker().hasConnection) { + print("wifi data detected & internet connection confirmed."); + return true; + } else { + print('No internet :( Reason:'); + return false; + } + } else { + print( + "Neither mobile data or WIFI detected, not internet connection found."); + return false; + } + } + +// Asset Status ------------------------------------------------------------------------------------------------------------------ + + Future fetchAssetStatusLocalControllerApi() async { + var dbclient = await conn.db; + List assetStatusApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.asset_statusesTable, orderBy: 'id DESC'); + for (var item in maps) { + assetStatusApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return assetStatusApiList; + } + + Future deleteAllAssetStatusDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.asset_statusesTable); + } + + Future addAllAssetStatusDataAPI( + List assetStatusListApi) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var assetStatus in assetStatusListApi) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.asset_statusesTable, + assetStatus.toJson(), + ); + } + + await batch.commit(); + } +// End Asset Status ------------------------------------------------------------------------------------------------------------------ + +// Peti ------------------------------------------------------------------------------------------------------------------ + Future fetchPetiDataAPI() async { + var dbclient = await conn.db; + List petiApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.petiTable, orderBy: 'id DESC'); + for (var item in maps) { + petiApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return petiApiList; + } + + Future deleteAllPetiDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.petiTable); + } + + Future addAllPetiDataAPI(List petiListApi) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var peti in petiListApi) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.petiTable, + peti.toJson(), + ); + } + + await batch.commit(); + } + // End Peti ------------------------------------------------------------------------------------------------------------------ + +// Warehouse ------------------------------------------------------------------------------------------------------------------ + Future fetchWarehouseDataAPI() async { + var dbclient = await conn.db; + List warehouseApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.warehouseTable, orderBy: 'id DESC'); + for (var item in maps) { + warehouseApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return warehouseApiList; + } + + Future deleteAllWarehouseDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.warehouseTable); + } + + Future addAllWarehouseDataAPI( + List warehouseListApi) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var warehouse in warehouseListApi) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.warehouseTable, + warehouse.toJson(), + ); + } + + await batch.commit(); + } +// End Warehouse ------------------------------------------------------------------------------------------------------------------ + +// Customer ------------------------------------------------------------------------------------------------------------------ + Future fetchCustomerDataAPI() async { + var dbclient = await conn.db; + List customerApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.customerTable, orderBy: 'id DESC'); + for (var item in maps) { + customerApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return customerApiList; + } + + Future deleteAllCustomerDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.customerTable); + } + + Future addAllCustomerDataAPI( + List customerApiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var customer in customerApiList) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.customerTable, + customer.toJson(), + ); + } + + await batch.commit(); + } +// End Customer ------------------------------------------------------------------------------------------------------------------ + +// Tipe Peti ------------------------------------------------------------------------------------------------------------------ + Future fetchTipePetiDataAPI() async { + var dbclient = await conn.db; + List tipePetiApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.typePetiTable, orderBy: 'id DESC'); + for (var item in maps) { + tipePetiApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return tipePetiApiList; + } + + Future deleteAllTipePetiDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.typePetiTable); + } + + Future addAllTipePetiDataAPI( + List tipePetiApiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var tipePeti in tipePetiApiList) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.typePetiTable, + tipePeti.toJson(), + ); + } + + await batch.commit(); + } +// End Tipe Peti ------------------------------------------------------------------------------------------------------------------ + +// Tipe Kondisi ------------------------------------------------------------------------------------------------------------------ + // Future fetchKondisiPetiDataAPI() async { + // var dbclient = await conn.db; + // List kondisiPetiApiList = []; + // try { + // // Ensure that the table name is correct + // List> maps = await dbclient! + // .query(SqfliteDatabaseHelper.conditionPetiTable, orderBy: 'id DESC'); + // for (var item in maps) { + // kondisiPetiApiList.add(item); + // } + // } catch (e) { + // print('Error fetching data from SQLite: $e'); + // } + // return kondisiPetiApiList; + // } + + Future fetchKondisiPetiDataAPI() async { + var dbclient = await conn.db; + List conditionApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.conditionPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + conditionApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return conditionApiList; + } + + Future deleteAllKondisiPetiDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.conditionPetiTable); + } + + Future addAllKondisiPetiDataAPI( + List kondisiPetiApiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var kondisiPeti in kondisiPetiApiList) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.conditionPetiTable, + kondisiPeti.toJson(), + ); + } + + await batch.commit(); + } +// End Kondisi Peti ------------------------------------------------------------------------------------------------------------------ + +// Transfer Kondisi ------------------------------------------------------------------------------------------------------------------ + Future fetchTransferPetiDataAPI() async { + var dbclient = await conn.db; + List transferPetiApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.transferPetiTable, orderBy: 'id DESC'); + for (var item in maps) { + transferPetiApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return transferPetiApiList; + } + + Future deleteAllTransferPetiDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.transferPetiTable); + } + + Future addAllTransferPetiDataAPI( + List transferPetiApiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var transferPeti in transferPetiApiList) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.transferPetiTable, + transferPeti.toJson(), + ); + } + + await batch.commit(); + } +// End Transfer Peti ------------------------------------------------------------------------------------------------------------------ + +// Disposal ------------------------------------------------------------------------------------------------------------------ + Future fetchDisposalDataAPI() async { + var dbclient = await conn.db; + List disposalApiList = []; + try { + // Ensure that the table name is correct + List> maps = await dbclient! + .query(SqfliteDatabaseHelper.disposalTable, orderBy: 'id DESC'); + for (var item in maps) { + disposalApiList.add(item); + } + } catch (e) { + print('Error fetching data from SQLite: $e'); + } + return disposalApiList; + } + + Future deleteAllDisposalDataAPI() async { + var dbClient = await conn.db; + await dbClient!.delete(SqfliteDatabaseHelper.disposalTable); + } + + Future addAllDisposalDataAPI( + List disposalApiList) async { + var dbclient = await conn.db; + Batch batch = dbclient!.batch(); + + for (var disposal in disposalApiList) { + // Ensure that toJson() correctly converts the model to a map + batch.insert( + SqfliteDatabaseHelper.disposalTable, + disposal.toJson(), + ); + } + + await batch.commit(); + } +// End Disposal ------------------------------------------------------------------------------------------------------------------ +} diff --git a/lib/services/m_status_service.dart b/lib/services/m_status_service.dart index eb45143..117edc8 100644 --- a/lib/services/m_status_service.dart +++ b/lib/services/m_status_service.dart @@ -8,7 +8,7 @@ import 'dart:async'; class M_assetStatusService { Future> getAssetStatus() async { - var url = Uri.parse("$baseUrl/m-status"); + var url = Uri.parse("${await getBaseUrl()}/m-status"); var headers = {'Content-Type': 'application/json'}; var response = await http.get(url, headers: headers); diff --git a/lib/services/syncronizeAPI.dart b/lib/services/syncronizeAPI.dart new file mode 100644 index 0000000..89ae02f --- /dev/null +++ b/lib/services/syncronizeAPI.dart @@ -0,0 +1,224 @@ +import 'dart:convert'; +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:siopas/connection/connection.dart'; +import 'package:siopas/models/asset_status_model.dart'; +import 'package:siopas/models/condition_peti_model.dart'; +import 'package:siopas/models/customer_model.dart'; +import 'package:siopas/models/transfer_peti_model.dart'; +import 'package:siopas/models/type_peti_model.dart'; +import 'package:siopas/models/warehouse_mode.dart'; +import 'package:internet_connection_checker/internet_connection_checker.dart'; +import '../migrations/databasehelper.dart'; +import 'package:http/http.dart' as http; + +import '../models/disposal_model.dart'; +import '../models/m_asset_status_model.dart'; + +class SyncronizationDataAPI { + final conn = SqfliteDatabaseHelper.instance; + + Future> fetchAssetStatusFromApi() async { + final apiURL = '${await getBaseUrl()}/asset-status'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['asset_status']; + print('Success Fetch Data API Asset Status'); + List assetStatusApiList = data + .map( + (item) => AssetStatusModel.fromJson(item as Map)) + .toList(); + + return assetStatusApiList; + } else { + throw Exception('Failed to fetch data from API Peti'); + } + } + + Future> fetchPetiFromApi() async { + final apiURL = '${await getBaseUrl()}/peti-asset'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['petis']; + print('Success Fetch Data Peti'); + List petiDBList = data + .map((item) => PetiAssetModel.fromJson(item as Map)) + .toList(); + + return petiDBList; + } else { + throw Exception('Failed to fetch data from API Peti'); + } + } + + // Future> fetchPetiFromApi() async { + // final apiURL = 'http://192.168.0.18:8000/api/v1/peti-asset'; + + // final response = await http.get(Uri.parse(apiURL)); + + // if (response.statusCode == 200) { + // List data = json.decode(response.body)['data']['petis']; + // print('Success Fetch Data Peti'); + + // List petiList = data.map((item) { + // // Extracting and transforming data from JSON + // String id = item['id'].toString(); + // String tipePetiId = item['tipe_peti_id'].toString(); + // String warna = item['warna'].toString(); + // int? packingNo = item['packing_no'] != null + // ? int.parse(item['packing_no'].toString()) + // : null; + // String customerID = item['customer_id'].toString(); + // String warehouseID = item['warehouse_id'].toString(); + // String kondisiPetiID = item['kondisipeti_id'].toString(); + // int? jumlah = item['jumlah'] != null + // ? int.parse(item['jumlah'].toString()) + // : null; + // DateTime datePembuatan = DateTime.parse(item['date_pembuatan']); + + // // Creating an instance of PetiAssetModel + // PetiAssetModel peti = PetiAssetModel( + // id: id, + // tipe_peti_id: tipePetiId, + // warna: warna, + // packing_no: packingNo, + // customer_id: customerID, + // warehouse_id: warehouseID, + // kondisipeti_id: kondisiPetiID, + // jumlah: jumlah, + // date_pembuatan: datePembuatan, + // created_by: + // item['created_by'] != null ? item['created_by'].toString() : null, + // updated_by: + // item['updated_by'] != null ? item['updated_by'].toString() : null, + // ); + + // return peti; + // }).toList(); + + // return petiList; + // } else { + // throw Exception('Failed to fetch data from API Peti'); + // } + // } + + Future> fetchWarehouseFromApi() async { + final apiURL = '${await getBaseUrl()}/m-warehouse'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['warehouse']; + print('Success Fetch Data Warehouse'); + + List warehouseDBList = data + .map((item) => WarehouseModel.fromJson(item as Map)) + .toList(); + + return warehouseDBList; + } else { + throw Exception('Failed to fetch data from API Warehouse'); + } + } + + Future> fetchCustomerFromApi() async { + final apiURL = '${await getBaseUrl()}/m-customer'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['customers']; + print('Success Fetch Data Customer'); + + List customerDBList = data + .map((item) => CustomerModel.fromJson(item as Map)) + .toList(); + + return customerDBList; + } else { + throw Exception('Failed to fetch data from API Customer'); + } + } + + Future> fetchTipePetiFromApi() async { + final apiURL = '${await getBaseUrl()}/m-type-peti'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['tipe_peti']; + print('Success Fetch Data Tipe Peti'); + + List tipePetiDBList = data + .map((item) => TypePetiModel.fromJson(item as Map)) + .toList(); + + return tipePetiDBList; + } else { + throw Exception('Failed to fetch data from API Tipe Peti'); + } + } + + Future> fetchKondisiPetiFromApi() async { + final apiURL = '${await getBaseUrl()}/m-kondisi-peti'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['kondisi_peti']; + print('Success Fetch Data Master Kondisi Peti'); + + List kondisiPetiDBList = data + .map((item) => + ConditionPetiModel.fromJson(item as Map)) + .toList(); + + return kondisiPetiDBList; + } else { + throw Exception('Failed to fetch data from API Master Kondisi Peti'); + } + } + + Future> fetchTransferPetiFromApi() async { + final apiURL = '${await getBaseUrl()}/m-transfer-peti'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['transfer_peti']; + print('Success Fetch Data Transfer Peti'); + + List transferPetiDBList = data + .map((item) => + TransferPetiModel.fromJson(item as Map)) + .toList(); + + return transferPetiDBList; + } else { + throw Exception('Failed to fetch data from API Transfer Peti'); + } + } + + Future> fetchDisposalFromApi() async { + final apiURL = '${await getBaseUrl()}/m-disposal-peti'; + + final response = await http.get(Uri.parse(apiURL)); + + if (response.statusCode == 200) { + List data = json.decode(response.body)['data']['disposals']; + print('Success Fetch Data Disposal Peti'); + + List disposalPetiDBList = data + .map((item) => + DisposalPetiModel.fromJson(item as Map)) + .toList(); + + return disposalPetiDBList; + } else { + throw Exception('Failed to fetch data from API Disposal Peti'); + } + } +} diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index eefcc6d..4008a7f 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import connectivity_plus import path_provider_foundation import shared_preferences_foundation import sqflite func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) diff --git a/pubspec.lock b/pubspec.lock index 676a4d5..c268714 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,22 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" + url: "https://pub.dev" + source: hosted + version: "3.4.9" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" async: dependency: transitive description: @@ -49,6 +65,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + url: "https://pub.dev" + source: hosted + version: "0.4.0" clock: dependency: transitive description: @@ -65,6 +97,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.17.2" + connectivity_plus: + dependency: "direct main" + description: + name: connectivity_plus + sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + url: "https://pub.dev" + source: hosted + version: "1.2.4" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" crypto: dependency: transitive description: @@ -89,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.5.8" + dbus: + dependency: transitive + description: + name: dbus + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.dev" + source: hosted + version: "0.7.10" fake_async: dependency: transitive description: @@ -126,6 +190,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.1" + flutter_easyloading: + dependency: "direct main" + description: + name: flutter_easyloading + sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c + url: "https://pub.dev" + source: hosted + version: "3.0.5" flutter_form_builder: dependency: "direct main" description: @@ -134,14 +206,22 @@ packages: url: "https://pub.dev" source: hosted version: "9.1.1" - flutter_lints: - dependency: "direct dev" + flutter_launcher_icons: + dependency: "direct main" description: - name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "0.13.1" + flutter_spinkit: + dependency: transitive + description: + name: flutter_spinkit + sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e + url: "https://pub.dev" + source: hosted + version: "5.2.0" flutter_test: dependency: "direct dev" description: flutter @@ -176,6 +256,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + url: "https://pub.dev" + source: hosted + version: "4.1.3" + internet_connection_checker: + dependency: "direct main" + description: + name: internet_connection_checker + sha256: "1c683e63e89c9ac66a40748b1b20889fd9804980da732bf2b58d6d5456c8e876" + url: "https://pub.dev" + source: hosted + version: "1.0.0+1" intl: dependency: "direct main" description: @@ -192,14 +288,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" - lints: + json_annotation: dependency: transitive description: - name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "4.8.1" matcher: dependency: transitive description: @@ -232,6 +328,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" + source: hosted + version: "0.5.0" octo_image: dependency: transitive description: @@ -249,7 +353,7 @@ packages: source: hosted version: "1.8.3" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa @@ -296,6 +400,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" + source: hosted + version: "5.4.0" platform: dependency: transitive description: @@ -312,6 +424,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.6" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" provider: dependency: "direct main" description: @@ -430,7 +550,7 @@ packages: source: hosted version: "7.0.0" sqflite: - dependency: transitive + dependency: "direct main" description: name: sqflite sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" @@ -502,13 +622,13 @@ packages: source: hosted version: "1.3.2" uuid: - dependency: transitive + dependency: "direct main" description: name: uuid - sha256: b715b8d3858b6fa9f68f87d20d98830283628014750c2b09b6f516c1da4af2a7 + sha256: df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921 url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.2.1" vector_math: dependency: transitive description: @@ -541,6 +661,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.3" + xml: + dependency: transitive + description: + name: xml + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" sdks: dart: ">=3.1.3 <4.0.0" flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 59747a1..407448f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: siopas -description: A new Flutter project. +description: Apps Siopas ISTW. # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev @@ -45,13 +45,27 @@ dependencies: qr_code_scanner: ^1.0.1 data_table_2: ^2.5.8 flutter_form_builder: ^9.1.1 - # dropdown_button2: ^2.3.9 + uuid: ^4.2.1 + path_provider: ^2.1.1 + connectivity_plus: ^5.0.1 + internet_connection_checker: ^1.0.0+1 + flutter_easyloading: ^3.0.5 + sqflite: ^2.3.0 + flutter_launcher_icons: ^0.13.1 dev_dependencies: flutter_test: sdk: flutter +flutter_launcher_icons: + android: true + ios: true + image_path: "assets/img/siopas_apps.png" + adaptive_icon_background: "#ffffff" + adaptive_icon_foreground: "assets/img/siopas_apps.png" + adaptive_icon_mask: "assets/img/siopas_apps.png" + # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..8777c93 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..cc1361d 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + connectivity_plus ) list(APPEND FLUTTER_FFI_PLUGIN_LIST