fix return item with consumed points

This commit is contained in:
nikitateplyakov
2019-04-09 22:38:03 +08:00
parent 845cae829d
commit f330a3dcd3

View File

@@ -134,14 +134,28 @@ class _ReturnScreenState<T> extends BaseState<ReturnScreen> {
} }
} }
num extractReturnPoints(Map purchase) {
final returnPoints = purchase['sum_bonus'];
if(returnPoints is num) {
return returnPoints;
} else if(returnPoints is String) {
final RegExp returnPattern = RegExp(r"(\d+)");
final List<Match> digits = returnPattern.allMatches(returnPoints).toList();
return int.parse(digits[0].group(0)) - int.parse(digits[1].group(1));
} else {
return 0;
}
}
void _confirmReturnPurchase(Map purchase, String formattedDate) { void _confirmReturnPurchase(Map purchase, String formattedDate) {
final num totalReturn = extractReturnPoints(purchase);
showDialog( showDialog(
context: context, context: context,
builder: (context) => builder: (context) =>
AlertDialog( AlertDialog(
title: Text(StringsLocalization.confirmation()), title: Text(StringsLocalization.confirmation()),
content: Text(StringsLocalization.returnConfirmation( content: Text(StringsLocalization.returnConfirmation(
purchase['sum_total'], formattedDate, _bonus - purchase['sum_bonus'])), purchase['sum_total'], formattedDate, _bonus - totalReturn)),
actions: <Widget>[ actions: <Widget>[
FlatButton( FlatButton(
child: Text(StringsLocalization.no()), child: Text(StringsLocalization.no()),
@@ -151,7 +165,7 @@ class _ReturnScreenState<T> extends BaseState<ReturnScreen> {
child: Text(StringsLocalization.yes()), child: Text(StringsLocalization.yes()),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
_returnPurchase(purchase, formattedDate); _returnPurchase(purchase, formattedDate, totalReturn);
} }
) )
], ],
@@ -159,11 +173,11 @@ class _ReturnScreenState<T> extends BaseState<ReturnScreen> {
); );
} }
void _returnPurchase(Map purchase, String formattedDate) async { void _returnPurchase(Map purchase, String formattedDate, num totalReturn) async {
String token = await helper.getToken(); String token = await helper.getToken();
final Response response = await returnPurchase(token, widget.userId, purchase['id']); final Response response = await returnPurchase(token, widget.userId, purchase['id']);
if(response.statusCode == 204) { if(response.statusCode == 204) {
_bonus += purchase['sum_bonus']; _bonus += totalReturn;
setState(() { setState(() {
_purchases.removeWhere((p) => p['id'] == purchase['id']); _purchases.removeWhere((p) => p['id'] == purchase['id']);
}); });