From 4d4ea42c6ae8765dce9fb99638e14bbc9ad7f1eb Mon Sep 17 00:00:00 2001 From: "Serik.Uvaissov" Date: Thu, 25 Jun 2020 13:48:18 +0600 Subject: [PATCH] release 1.0.2 --- .../main/res/drawable/launch_background.xml | 10 ++-- .../app/src/main/res/mipmap-hdpi/splash.png | Bin 0 -> 7728 bytes .../app/src/main/res/mipmap-mdpi/splash.png | Bin 0 -> 7728 bytes .../app/src/main/res/mipmap-xhdpi/splash.png | Bin 0 -> 7728 bytes .../app/src/main/res/mipmap-xxhdpi/splash.png | Bin 0 -> 7728 bytes .../src/main/res/mipmap-xxxhdpi/splash.png | Bin 0 -> 7728 bytes lib/core/models/money.dart | 4 ++ lib/core/services/DataService.dart | 15 ++++++ lib/redux/actions/user_actions.dart | 16 +++++++ lib/redux/reducers/user_reducer.dart | 4 ++ lib/redux/state/user_state.dart | 8 +++- lib/views/home/components/popup_menu.dart | 6 +-- lib/views/home/home_view.dart | 1 + lib/views/home/tabs/AdditionalTab.dart | 44 +++++++++++------- lib/views/payment/payment_view.dart | 13 +++--- 15 files changed, 89 insertions(+), 32 deletions(-) create mode 100644 android/app/src/main/res/mipmap-hdpi/splash.png create mode 100644 android/app/src/main/res/mipmap-mdpi/splash.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/splash.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/splash.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/splash.png create mode 100644 lib/core/models/money.dart diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 304732f..9a30f5a 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -4,9 +4,9 @@ - + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/splash.png b/android/app/src/main/res/mipmap-hdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f4164e5bcf6006879135bbae3028b0dd5a5b66 GIT binary patch literal 7728 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 S?gE>*Ad|Zmcgk-)eD#0V4~j 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 S?gE>*Ad|Zmcgk-)eD#0V4~j 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 S?gE>*Ad|Zmcgk-)eD#0V4~j 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 S?gE>*Ad|Zmcgk-)eD#0V4~j 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 S?gE>*Ad|Zmcgk-)eD#0V4~j checkDbFill(User user) async { + int serviceCount = await _db.queryRowCount(Service_tableName); + if( serviceCount ==0) { + int goodCount = await _db.queryRowCount(Goog_tableName); + if(goodCount == 0){ + await getDataFromServer(user); + } else { + log.i('$Goog_tableName is Fill'); + } + } else { + log.i('$Service_tableName is Fill'); + } + } + Future getDataFromServer(User user) async { + log.i('Get Data from server'); try { String token = user.token; Response goods = await _api.getGoodsFromServer(token); diff --git a/lib/redux/actions/user_actions.dart b/lib/redux/actions/user_actions.dart index af8fb01..e6414f2 100644 --- a/lib/redux/actions/user_actions.dart +++ b/lib/redux/actions/user_actions.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/models/message.dart'; import 'package:aman_kassa_flutter/core/models/auth_response.dart'; +import 'package:aman_kassa_flutter/core/models/money.dart'; import 'package:aman_kassa_flutter/core/models/response.dart'; import 'package:aman_kassa_flutter/core/models/smena.dart'; import 'package:aman_kassa_flutter/core/models/user.dart'; @@ -77,6 +78,19 @@ Future logoutAction(Store store) async { } } +Future> checkMoney(Store store) async { + try { + Response result = await _api.money(store.state.userState.user.token); + if (result.operation) { + store.dispatch(SetUserStateAction( + UserState(money: Money(total: double.parse(result.body['money']))))); + } + return result; + } catch (error) { + return null; + } +} + ThunkAction authenticateToken(String token) { return (Store store) async { store.dispatch(SetUserStateAction(UserState(isLoading: true))); @@ -139,6 +153,7 @@ Future closeSmena(Store store) async { String token = store.state.userState.user.token; Response result = await _api.closeSmena(token); store.dispatch(SetUserStateAction(UserState(smena: result.body))); + store.dispatch(checkMoney); } Future openSmena(Store store) async { @@ -147,5 +162,6 @@ Future openSmena(Store store) async { store.dispatch(SetUserStateAction(UserState(smena: result.body))); if(result.operation){ store.dispatch(checkSmena); + store.dispatch(checkMoney); } } diff --git a/lib/redux/reducers/user_reducer.dart b/lib/redux/reducers/user_reducer.dart index 46120bf..080c133 100644 --- a/lib/redux/reducers/user_reducer.dart +++ b/lib/redux/reducers/user_reducer.dart @@ -11,5 +11,9 @@ userReducer(UserState prevState, SetUserStateAction action) { isAuthenticated: payload.isAuthenticated, loginFormMessage: payload.loginFormMessage, smena: payload.smena, + money: payload.money, + password: payload.password, + login: payload.login, + authenticateType: payload.authenticateType, ); } \ No newline at end of file diff --git a/lib/redux/state/user_state.dart b/lib/redux/state/user_state.dart index 19401eb..7d4a8e4 100644 --- a/lib/redux/state/user_state.dart +++ b/lib/redux/state/user_state.dart @@ -1,3 +1,4 @@ +import 'package:aman_kassa_flutter/core/models/money.dart'; import 'package:aman_kassa_flutter/core/models/smena.dart'; import 'package:aman_kassa_flutter/core/models/user.dart'; import 'package:meta/meta.dart'; @@ -13,6 +14,7 @@ class UserState { final LoginFormMessage loginFormMessage; final User user; final Smena smena; + final Money money; UserState( {this.isError, @@ -23,7 +25,8 @@ class UserState { this.password, this.user, this.loginFormMessage, - this.smena}); + this.smena, + this.money}); factory UserState.initial(UserState payload) => UserState( isLoading: false, @@ -35,6 +38,7 @@ class UserState { authenticateType: payload?.authenticateType ?? null, login: payload?.login ?? null, password: payload?.password ?? null, + money: Money(), ); UserState copyWith( @@ -47,6 +51,7 @@ class UserState { @required String authenticateType, @required String login, @required String password, + @required Money money, }) { return UserState( isError: isError ?? this.isError, @@ -58,6 +63,7 @@ class UserState { authenticateType: authenticateType ?? this.authenticateType, login: login ?? this.login, password: password ?? this.password, + money: money ?? this.money, ); } diff --git a/lib/views/home/components/popup_menu.dart b/lib/views/home/components/popup_menu.dart index 27b0eec..ab903db 100644 --- a/lib/views/home/components/popup_menu.dart +++ b/lib/views/home/components/popup_menu.dart @@ -4,9 +4,9 @@ import 'package:flutter/material.dart'; const List choices = const [ const Choice(title: 'Обновить номенклатуру', icon: Icons.update, command: 'update'), - const Choice(title: 'Помощь', icon: Icons.help, command: 'help'), - const Choice(title: 'О Программе', icon: Icons.info_outline, command: 'info'), - const Choice(title: 'Язык', icon: Icons.language, command: 'language'), + //const Choice(title: 'Помощь', icon: Icons.help, command: 'help'), + //const Choice(title: 'О Программе', icon: Icons.info_outline, command: 'info'), + //const Choice(title: 'Язык', icon: Icons.language, command: 'language'), const Choice(title: 'Выйти', icon: Icons.exit_to_app, command: 'exit') ]; diff --git a/lib/views/home/home_view.dart b/lib/views/home/home_view.dart index e8411ad..fdae2af 100644 --- a/lib/views/home/home_view.dart +++ b/lib/views/home/home_view.dart @@ -55,6 +55,7 @@ class _HomeViewState extends State { selectedTabIndex = 0; pageController = new PageController(initialPage: selectedTabIndex); Redux.store.dispatch(checkSmena); + _dataService.checkDbFill(Redux.store.state.userState.user); } @override diff --git a/lib/views/home/tabs/AdditionalTab.dart b/lib/views/home/tabs/AdditionalTab.dart index 0863b2f..6d75989 100644 --- a/lib/views/home/tabs/AdditionalTab.dart +++ b/lib/views/home/tabs/AdditionalTab.dart @@ -1,5 +1,6 @@ import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/models/message.dart'; +import 'package:aman_kassa_flutter/core/models/money.dart'; import 'package:aman_kassa_flutter/core/models/response.dart'; import 'package:aman_kassa_flutter/core/models/dialog_models.dart'; import 'package:aman_kassa_flutter/core/models/smena.dart'; @@ -104,9 +105,10 @@ class _AdditionalTabState extends State { if (response.confirmed) { Response result = await _api.deposit( Redux.store.state.userState.user.token, response.responseText); - //if(result.operation) { _dialog.showDialog(description: result.body['message']); - //} + if(result.operation) { + await Redux.store.dispatch(checkMoney); + } } } catch (e) { print(e); @@ -130,9 +132,10 @@ class _AdditionalTabState extends State { if (response.confirmed) { Response result = await _api.withdrawal( Redux.store.state.userState.user.token, response.responseText); - //if(result.operation) { _dialog.showDialog(description: result.body['message']); - //} + if(result.operation) { + await Redux.store.dispatch(checkMoney); + } } } catch (e) { print(e); @@ -148,16 +151,18 @@ class _AdditionalTabState extends State { isMoneyCheckBusy = true; }); try { - Response result = - await _api.money(Redux.store.state.userState.user.token); + Response result = await Redux.store.dispatch(checkMoney); + //await _api.money(.state.userState.user.token); setState(() { isMoneyCheckBusy = false; }); - if (result.operation) { - _dialog.showDialog( - description: 'Денег в кассе: ${result.body['money']}'); - } else { - _dialog.showDialog(description: '${result.body['message']}'); + if(result != null) { + if (result.operation) { + _dialog.showDialog( + description: 'Денег в кассе: ${result.body['money']}'); + } else { + _dialog.showDialog(description: '${result.body['message']}'); + } } } catch (e) { print(e); @@ -220,12 +225,17 @@ class _AdditionalTabState extends State { 'Денег в кассе:', style: TextStyle(color: primaryColor, fontSize: 15), ), - Text( - '250 024.38 тенге', - style: TextStyle( - color: primaryColor, - fontSize: 25, - fontWeight: FontWeight.bold), + StoreConnector( + converter: (store) => store.state.userState.money, + builder: (_, vm) { + return Text( + vm.total !=null ? '${vm.total} тенге' : 'нет информации', + style: TextStyle( + color: vm.total !=null ? primaryColor : Colors.grey.withOpacity(0.5), + fontSize: 25, + fontWeight: FontWeight.bold), + ); + } ), ], )), diff --git a/lib/views/payment/payment_view.dart b/lib/views/payment/payment_view.dart index 18a994a..069df6b 100644 --- a/lib/views/payment/payment_view.dart +++ b/lib/views/payment/payment_view.dart @@ -8,6 +8,7 @@ import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; import 'package:aman_kassa_flutter/redux/actions/calc_actions.dart'; import 'package:aman_kassa_flutter/redux/actions/kassa_actions.dart'; +import 'package:aman_kassa_flutter/redux/actions/user_actions.dart'; import 'package:aman_kassa_flutter/redux/constants/operation_const.dart'; import 'package:aman_kassa_flutter/redux/constants/setting_const.dart'; import 'package:aman_kassa_flutter/redux/state/calc_state.dart'; @@ -141,12 +142,12 @@ class _PaymentViewState extends State { if(response.operation){ String message = response.body['message']; String check = response.body['check']; - -// if(_mode == SettingModeCalc){ -// Redux.store.dispatch(cleanCalcItems); -// } else if(_mode == SettingModeKassa) { -// Redux.store.dispatch(cleanKassaItems); -// } + if(_mode == SettingModeCalc){ + Redux.store.dispatch(cleanCalcItems); + } else if(_mode == SettingModeKassa) { + Redux.store.dispatch(cleanKassaItems); + } + Redux.store.dispatch(checkMoney); _navigatorService.pop(); _navigatorService.push(ImageShowRoute, arguments: ImageShowModel(check, message)); } else if(!response.operation && response.status !=500) {