home.dart 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:telnow_mobile_new/src/api/api_auth_provider.dart';
  3. import 'package:telnow_mobile_new/src/api/jwt_token.dart';
  4. import 'package:telnow_mobile_new/src/injector/injector.dart';
  5. import 'package:telnow_mobile_new/src/layouts/components/template.dart';
  6. import 'package:telnow_mobile_new/src/storage/sharedpreferences/shared_preferences_manager.dart';
  7. import 'package:provider/provider.dart';
  8. import 'package:telnow_mobile_new/src/utils/C.dart';
  9. import 'package:telnow_mobile_new/src/utils/U.dart';
  10. import 'package:telnow_mobile_new/src/utils/cache_manager.dart';
  11. import 'package:telnow_mobile_new/src/utils/provider.dart';
  12. import 'package:telnow_mobile_new/src/utils/ui_service.dart';
  13. class HomeFunction{
  14. final SharedPreferencesManager sharedPreferencesManager = locator<SharedPreferencesManager>();
  15. final ApiAuthProvider apiAuthProvider = ApiAuthProvider();
  16. final JwtToken token = JwtToken();
  17. final BuildContext context = UIService.context!;
  18. late final ServiceModule serviceModule = Provider.of<ServiceModule>(context, listen: false);
  19. late final UserModule userModule = Provider.of<UserModule>(context, listen: false);
  20. getProfileData(BuildContext context)async{
  21. if (!serviceModule.initialized()) {
  22. serviceModule.setInitialized(true);
  23. try{
  24. var license = await U.getLicense(showErr: false);
  25. userModule.setHouseKeeping(license['houseKeepingFunction']);
  26. }catch(e){
  27. debugPrint(e.toString());
  28. }
  29. try{
  30. var res = await token.getUserData();
  31. if(res != null){
  32. userModule.setList(res);
  33. userModule.setProfile(res['_profile']['data']);
  34. userModule.setDndStatus(res['dnd']);
  35. getOptions(context);
  36. } else {
  37. serviceModule.setInitialized(false);
  38. userModule.setResetData(true);
  39. }
  40. }catch(e){
  41. showError(context, e.toString());
  42. serviceModule.setInitialized(false);
  43. userModule.setResetData(true);
  44. }
  45. }
  46. }
  47. getOptions(BuildContext context) async {
  48. try {
  49. String url = '/api/systemSettings/search/scope/system/label';
  50. var val = await CacheMan.readData(url);
  51. if (val != null) {
  52. serviceModule.setScoope(val['data']);
  53. }
  54. var res = await apiAuthProvider.getData(url, null);
  55. if (res != null) {
  56. CacheMan.writeData(url, res);
  57. serviceModule.setScoope(res);
  58. }
  59. if(serviceModule.scoope().isNotEmpty){
  60. //dev-note: cek 1-1, mekanisme load nya. ada yg bikin berat tidak?
  61. for (int i = 0; i < serviceModule.scoope().length; i++) {
  62. if (sharedPreferencesManager.isKeyExists(SharedPreferencesManager.keyScoope)! && sharedPreferencesManager.getString(SharedPreferencesManager.keyScoope) == serviceModule.scoope()[i]['key']) {
  63. serviceModule.setScoopeValue(serviceModule.scoope()[i]['key']);
  64. serviceModule.setScoopeName(serviceModule.scoope()[i]['value']);
  65. }
  66. }
  67. var profile = userModule.profile();
  68. if(profile['topMenu']['show'] != null && profile['topMenu']['show'] == true) {
  69. getTopMenuNew();
  70. }
  71. if(profile['specialOffer'] != null && profile['specialOffer']['show'] == true) getSpecialOffer(context);
  72. if(profile['frequentlyRequested'] != null && profile['frequentlyRequested']['show'] == true) getFrequentlyRequested();
  73. if(profile['banner'] != null && profile['banner']['show'] == true) getBanner(context);
  74. if(profile['quickAction'] != null && profile['quickAction']['show'] == true) getQuickAction(context);
  75. getUnreadMessages(context);
  76. }
  77. serviceModule.setInitialized(false);
  78. } catch (e) {
  79. serviceModule.setInitialized(false);
  80. print(e.toString());
  81. }
  82. }
  83. getSpecialOffer(BuildContext context) async {
  84. try {
  85. String url = '/api/informants/search/request/specialOffer/'+serviceModule.scoopeValue();
  86. var val = await CacheMan.readData(url);
  87. if (val != null) {
  88. serviceModule.setSpecialOffer(val['data']);
  89. }
  90. var res = await apiAuthProvider.getData(url, null);
  91. if (res != null) {
  92. if (res.length > 0) {
  93. CacheMan.writeData(url, res);
  94. serviceModule.setSpecialOffer(res);
  95. } else {
  96. serviceModule.setSpecialOffer([]);
  97. }
  98. }
  99. } catch (e) {
  100. print(e.toString());
  101. serviceModule.setSpecialOffer([]);
  102. }
  103. }
  104. getTopMenuNew() async {
  105. try {
  106. var url = '/api/requestGroups/search/dashboard/topMenu/'+serviceModule.scoopeValue();
  107. var val = await CacheMan.readData('$url?responseServantGroup=${U.servantDisplay()}');
  108. if (val != null) {
  109. serviceModule.setTopMenu(val['data']['topMenu']);
  110. serviceModule.setReqGroup(val['data']['excludeTopMenu']);
  111. }
  112. var res = await apiAuthProvider.getData(url, {'responseServantGroup': U.servantDisplay().toString()});
  113. if (res != null) {
  114. CacheMan.writeData('$url?responseServantGroup=${U.servantDisplay()}', res);
  115. serviceModule.setTopMenu(res['topMenu']);
  116. serviceModule.setReqGroup(res['excludeTopMenu']);
  117. }
  118. } catch (e) {
  119. print(e.toString());
  120. serviceModule.setTopMenu([]);
  121. serviceModule.setReqGroup([]);
  122. }
  123. }
  124. getTopMenu() async {
  125. try {
  126. var url = '/api/requestGroups/search/topMenu/'+serviceModule.scoopeValue();
  127. var val = await CacheMan.readData('$url?responseServantGroup=${U.servantDisplay()}');
  128. if (val != null) {
  129. serviceModule.setTopMenu(val['data']);
  130. }
  131. var res = await apiAuthProvider.getData(url, {'responseServantGroup': U.servantDisplay().toString()});
  132. if (res != null) {
  133. List tempData = [];
  134. tempData.addAll(res);
  135. if (tempData.length > 0) {
  136. CacheMan.writeData('$url?responseServantGroup=${U.servantDisplay()}', res);
  137. serviceModule.setTopMenu(tempData);
  138. } else {
  139. CacheMan.writeData('$url?responseServantGroup=${U.servantDisplay()}', []);
  140. serviceModule.setTopMenu([]);
  141. }
  142. }
  143. else{
  144. serviceModule.setTopMenu([]);
  145. }
  146. } catch (e) {
  147. print(e.toString());
  148. serviceModule.setTopMenu([]);
  149. }
  150. }
  151. getReqGroup() async {
  152. try {
  153. var url = '/api/requestGroups/search/excludeTopMenu/'+serviceModule.scoopeValue();
  154. var val = await CacheMan.readData('$url?responseServantGroup=${U.servantDisplay()}');
  155. if (val != null) {
  156. serviceModule.setReqGroup(val['data']);
  157. }
  158. var res = await apiAuthProvider.getData(url, {'responseServantGroup': U.servantDisplay().toString()});
  159. if (res != null) {
  160. List tempData = [];
  161. tempData.addAll(res);
  162. if (tempData.length > 0) {
  163. CacheMan.writeData('$url?responseServantGroup=${U.servantDisplay()}', res);
  164. serviceModule.setReqGroup(tempData);
  165. } else {
  166. CacheMan.writeData('$url?responseServantGroup=${U.servantDisplay()}', []);
  167. serviceModule.setReqGroup([]);
  168. }
  169. }
  170. } catch (e) {
  171. print(e.toString());
  172. serviceModule.setReqGroup([]);
  173. }
  174. }
  175. getFrequentlyRequested() async {
  176. try {
  177. var url = '/api/requestHistories/search/frequently/request/' + serviceModule.scoopeValue();
  178. var val = await CacheMan.readData(url);
  179. if (val != null) {
  180. serviceModule.setData(val['data']);
  181. }
  182. var res = await apiAuthProvider.getData(url, null);
  183. if (res != null) {
  184. if (res.length > 0) {
  185. CacheMan.writeData(url, res);
  186. serviceModule.setData(res);
  187. } else {
  188. serviceModule.setData([]);
  189. }
  190. }
  191. } catch (e) {
  192. debugPrint(e.toString());
  193. serviceModule.setData([]);
  194. }
  195. }
  196. getBanner(BuildContext context) async {
  197. try {
  198. var url = '/api/informants/search/banner';
  199. var val = await CacheMan.readData(url);
  200. if (val != null) {
  201. serviceModule.setBanner(val['data']);
  202. }
  203. var res = await apiAuthProvider.getData(url, {'size': '20'});
  204. if (res != null) {
  205. if (res.length > 0) {
  206. CacheMan.writeData(url, res);
  207. serviceModule.setBanner(res);
  208. } else {
  209. serviceModule.setBanner([]);
  210. }
  211. }
  212. } catch (e) {
  213. print(e.toString());
  214. serviceModule.setBanner([]);
  215. }
  216. }
  217. getQuickAction(BuildContext context) async {
  218. try {
  219. String url = '/api/informants/search/request/quickAction/'+serviceModule.scoopeValue();
  220. var val = await CacheMan.readData(url);
  221. if (val != null) {
  222. serviceModule.setQuickAct(val['data']);
  223. }
  224. var res = await apiAuthProvider.getData(url, null);
  225. if (res != null) {
  226. if (res.length > 0) {
  227. CacheMan.writeData(url, res);
  228. serviceModule.setQuickAct(res);
  229. } else {
  230. serviceModule.setQuickAct([]);
  231. }
  232. }
  233. } catch (e) {
  234. print(e.toString());
  235. serviceModule.setQuickAct([]);
  236. }
  237. }
  238. getContactCenter(BuildContext context) async {
  239. try{
  240. var url = "/api/contactCenter/whatsapp" ;
  241. var res = await apiAuthProvider.getData(url, null);
  242. if (res != null) {
  243. serviceModule.setContactCenter(res);
  244. }
  245. }catch(e){
  246. serviceModule.setContactCenter('');
  247. }
  248. }
  249. getUnreadMessages(BuildContext context) async {
  250. try {
  251. var res = await apiAuthProvider.getData('/api/messages/search/myMessages', null);
  252. if (res != null) {
  253. List tempData = [];
  254. serviceModule.setUnreadMessage(false);
  255. if(res.containsKey('_embedded')){
  256. for (int i = 0; i < res['_embedded']['myMessages'].length; i++) {
  257. if(res['_embedded']['myMessages'][i]['lastReadStatus'] == 'UNREAD' && res['_embedded']['myMessages'][i]['userId'] != userModule.user()['userId']){
  258. serviceModule.setUnreadMessage(true);
  259. }
  260. tempData.add(res['_embedded']['myMessages'][i]);
  261. }
  262. }
  263. serviceModule.setMessage([]);
  264. if (tempData.isNotEmpty) {
  265. serviceModule.setMessage(tempData);
  266. }
  267. }
  268. } catch (e) {
  269. print(e.toString());
  270. }
  271. try{
  272. String url = '/api/messages/search/myForum';
  273. var res = await apiAuthProvider.getData(url, null);
  274. if (res != null) {
  275. for (int i = 0; i < res.length; i++) {
  276. if (res[i]['readStatus'] == 'UNREAD' && res[i]['userId'] != userModule.user()['userId']){
  277. serviceModule.setUnreadMessage(true);
  278. }
  279. }
  280. }
  281. }catch(e){}
  282. }
  283. onRefresh(BuildContext context){
  284. var profile = userModule.profile();
  285. if(profile['topMenu']['show'] != null && profile['topMenu']['show'] == true) {
  286. getTopMenuNew();
  287. }
  288. if(profile['specialOffer'] != null && profile['specialOffer']['show'] == true) getSpecialOffer(context);
  289. if(profile['frequentlyRequested'] != null && profile['frequentlyRequested']['show'] == true) getFrequentlyRequested();
  290. if(profile['banner'] != null && profile['banner']['show'] == true) getBanner(context);
  291. if(profile['quickAction'] != null && profile['quickAction']['show'] == true) getQuickAction(context);
  292. getUnreadMessages(context);
  293. }
  294. }