This repository has been archived on 2024-07-21. You can view files and clone it, but cannot push or open issues or pull requests.
opencanteen/lib/okna/burza.dart

146 lines
5.2 KiB
Dart
Raw Normal View History

2022-04-05 19:48:14 +02:00
import 'package:canteenlib/canteenlib.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
2022-04-05 19:48:14 +02:00
import 'package:opencanteen/util.dart';
2022-05-15 16:59:55 +02:00
import '../lang/lang.dart';
2022-04-05 19:48:14 +02:00
import '../main.dart';
class BurzaPage extends StatefulWidget {
const BurzaPage({Key? key, required this.canteen, required this.n})
: super(key: key);
2022-04-05 19:48:14 +02:00
final Canteen canteen;
final FlutterLocalNotificationsPlugin n;
2022-04-05 19:48:14 +02:00
@override
State<BurzaPage> createState() => _BurzaPageState();
}
class _BurzaPageState extends State<BurzaPage> {
List<Widget> obsah = [];
double kredit = 0.0;
2022-05-15 16:59:55 +02:00
Future<void> nactiBurzu(BuildContext context) async {
2022-04-05 19:48:14 +02:00
obsah = [const CircularProgressIndicator()];
widget.canteen.ziskejUzivatele().then((kr) {
kredit = kr.kredit;
widget.canteen.ziskatBurzu().then((burza) {
setState(() {
obsah = [];
if (burza.isEmpty) {
obsah = [
2022-05-15 16:59:55 +02:00
Text(
Languages.of(context)!.noExchange,
style: const TextStyle(fontSize: 20),
2022-04-05 19:48:14 +02:00
),
2022-05-15 16:59:55 +02:00
Text(Languages.of(context)!.pullToReload)
2022-04-05 19:48:14 +02:00
];
} else {
for (var b in burza) {
obsah.add(
Padding(
padding: const EdgeInsets.only(top: 15),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("${b.den.day}. ${b.den.month}."),
const SizedBox(width: 10),
Flexible(
child: Text(
b.nazev,
),
),
Text("${b.pocet}x"),
TextButton(
onPressed: () {
2022-04-09 17:54:08 +02:00
widget.canteen.objednatZBurzy(b).then((a) {
2022-04-12 21:20:22 +02:00
if (a) {
showDialog(
context: context,
builder: (context) => AlertDialog(
2022-05-15 16:59:55 +02:00
title: Text(Languages.of(context)!.ordered),
content: Text(
Languages.of(context)!.orderSuccess),
2022-04-12 21:20:22 +02:00
actions: [
TextButton(
2022-05-15 16:59:55 +02:00
child: Text(Languages.of(context)!.ok),
2022-04-12 21:20:22 +02:00
onPressed: () =>
Navigator.of(context).pop(),
)
],
),
);
} else {
showDialog(
context: context,
builder: (context) => AlertDialog(
2022-05-15 16:59:55 +02:00
title: Text(
Languages.of(context)!.cannotOrder),
content: Text(
Languages.of(context)!.errorOrdering),
2022-04-12 21:20:22 +02:00
actions: [
TextButton(
2022-05-15 16:59:55 +02:00
child: Text(Languages.of(context)!.ok),
2022-04-12 21:20:22 +02:00
onPressed: () =>
Navigator.of(context).pop(),
)
],
),
);
}
2022-05-15 16:59:55 +02:00
nactiBurzu(context);
2022-04-05 19:48:14 +02:00
});
},
2022-05-15 16:59:55 +02:00
child: Text(Languages.of(context)!.order)),
2022-04-05 19:48:14 +02:00
],
),
),
);
}
}
});
});
}).catchError((o) {
if (!widget.canteen.prihlasen) {
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (c) => const LoginPage()));
}
});
}
@override
void initState() {
super.initState();
2022-05-15 16:59:55 +02:00
nactiBurzu(context);
2022-04-05 19:48:14 +02:00
}
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: drawerGenerator(context, widget.canteen, 3, widget.n),
2022-04-05 19:48:14 +02:00
appBar: AppBar(
2022-05-15 16:59:55 +02:00
title: Text(Languages.of(context)!.exchange),
2022-04-05 19:48:14 +02:00
),
body: RefreshIndicator(
child: Center(
child: SizedBox(
width: MediaQuery.of(context).size.width - 50,
child: Column(
children: [
const SizedBox(height: 10),
Text("${Languages.of(context)!.balance}$kredit"),
const SizedBox(height: 10),
SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: SizedBox(
height: MediaQuery.of(context).size.height / 1.3,
child: Column(children: obsah),
),
)
],
),
2022-04-05 19:48:14 +02:00
),
),
2022-05-15 16:59:55 +02:00
onRefresh: () => nactiBurzu(context)),
2022-04-05 19:48:14 +02:00
);
}
}