fix: ultra-fake orders
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||
import 'package:gymlink_module_web/components/app_bar.dart';
|
||||
@@ -69,6 +71,57 @@ class _OrderConfirmationPageState extends State<OrderConfirmationPage> {
|
||||
final _addressController = TextEditingController();
|
||||
final _nameController = TextEditingController();
|
||||
|
||||
Future<void> _addOrderToHistory() async {
|
||||
String name = _nameController.text;
|
||||
String email = _emailController.text;
|
||||
String address = _addressController.text;
|
||||
|
||||
Set<String> supplierIdsSet = {};
|
||||
for (final item in cartItems) {
|
||||
supplierIdsSet.add(item.supplierId);
|
||||
}
|
||||
List<GymHistoryItemDetailProvider> providers = [];
|
||||
for (final supplierId in supplierIdsSet) {
|
||||
List<GymItem> items =
|
||||
cartItems.where((e) => e.supplierId == supplierId).toList();
|
||||
List<GymHistoryItemDetailItem> detailItems = [];
|
||||
for (final item in items) {
|
||||
detailItems.add(GymHistoryItemDetailItem(
|
||||
id: item.id,
|
||||
photo: item.images[0].url,
|
||||
count: item.localCount,
|
||||
price: item.price.toString(),
|
||||
name: item.title,
|
||||
));
|
||||
}
|
||||
GymHistoryItemDetailProvider provider = GymHistoryItemDetailProvider(
|
||||
id: supplierId,
|
||||
name: items.first.supplierName,
|
||||
items: detailItems,
|
||||
// status: 'Не оплачен'
|
||||
status: Random().nextBool()
|
||||
? 'Не оплачен'
|
||||
: Random().nextBool()
|
||||
? 'Не оплачен'
|
||||
: Random().nextBool()
|
||||
? 'Сборка'
|
||||
: 'Доставляется',
|
||||
);
|
||||
providers.add(provider);
|
||||
}
|
||||
|
||||
final order = GymHistoryItemDetail(
|
||||
id: Random().nextInt(1000000).toString(),
|
||||
receiver: name,
|
||||
email: email,
|
||||
address: address,
|
||||
sum: totalPrice.toString(),
|
||||
date: '',
|
||||
providers: providers,
|
||||
);
|
||||
await addToHistory(order);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -248,12 +301,7 @@ class _OrderConfirmationPageState extends State<OrderConfirmationPage> {
|
||||
if (!_checkInputs()) return;
|
||||
_goToPage();
|
||||
await clearCart();
|
||||
await addToHistory(GymHistoryItem(
|
||||
id: '123',
|
||||
date: '01.01.1970',
|
||||
sum: '123',
|
||||
photo: 'product.png',
|
||||
));
|
||||
await _addOrderToHistory();
|
||||
Provider.of<CartProvider>(context, listen: false)
|
||||
.updateCartLength();
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
|
||||
@@ -153,10 +153,22 @@ class _HistoryPageState extends State<HistoryPage> {
|
||||
id: item.id,
|
||||
cost: item.sum,
|
||||
date: item.date,
|
||||
image: Image(
|
||||
image: AssetImage(
|
||||
'assets/${item.photo}'),
|
||||
width: 50,
|
||||
image: FutureBuilder(
|
||||
future: precacheImage(
|
||||
NetworkImage(item.photo),
|
||||
context),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState ==
|
||||
ConnectionState.done) {
|
||||
return Image(
|
||||
image: NetworkImage(
|
||||
item.photo),
|
||||
width: 50,
|
||||
);
|
||||
} else {
|
||||
return const CircularProgressIndicator();
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:gymlink_module_web/components/heading.dart';
|
||||
import 'package:gymlink_module_web/components/order_detail_item_card.dart';
|
||||
import 'package:gymlink_module_web/interfaces/items.dart';
|
||||
import 'package:gymlink_module_web/tools/history.dart';
|
||||
import 'package:gymlink_module_web/tools/text.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
final GymHistoryItemDetail item = GymHistoryItemDetail.fromJson({
|
||||
@@ -77,8 +78,7 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
|
||||
Future<void> _goToPage() async {
|
||||
if (detail?.payUrl != null) {
|
||||
final Uri url = Uri.parse(detail?.payUrl ?? 'example.org');
|
||||
detail!.payUrl = null;
|
||||
final Uri url = Uri.parse(detail?.payUrl ?? 'https://example.org');
|
||||
if (!await launchUrl(url, webOnlyWindowName: '_blank')) {
|
||||
throw 'Could not launch $url';
|
||||
}
|
||||
@@ -160,14 +160,12 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
OrderDetailCardItemCard(
|
||||
image: FutureBuilder(
|
||||
future: precacheImage(
|
||||
const AssetImage('assets/product.png'),
|
||||
context),
|
||||
NetworkImage(item.photo), context),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState ==
|
||||
ConnectionState.done) {
|
||||
return const Image(
|
||||
image:
|
||||
AssetImage('assets/product.png'),
|
||||
return Image(
|
||||
image: NetworkImage(item.photo),
|
||||
width: 50,
|
||||
);
|
||||
} else {
|
||||
@@ -175,7 +173,7 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
}
|
||||
},
|
||||
),
|
||||
name: 'Протеин',
|
||||
name: shortString(item.name),
|
||||
count: item.count,
|
||||
price: double.parse(item.price),
|
||||
),
|
||||
@@ -207,13 +205,15 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
MarkdownBody(
|
||||
data: '## Итого: ${detail!.sum} руб.'),
|
||||
MarkdownBody(
|
||||
data:
|
||||
"### Адрес получателя: __${detail!.address}__"),
|
||||
MarkdownBody(
|
||||
data: '### Почта: __${detail!.email}__'),
|
||||
MarkdownBody(
|
||||
data: '### ФИО: _${detail!.receiver}_'),
|
||||
data: '### ФИО: __${detail!.receiver}__'),
|
||||
],
|
||||
),
|
||||
detail?.payUrl == null
|
||||
@@ -222,7 +222,7 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
child: ElevatedButton(
|
||||
onPressed: () async {
|
||||
await _goToPage();
|
||||
debugPrint('clicked');
|
||||
await payOrder(detail!.id);
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor:
|
||||
@@ -261,102 +261,4 @@ class _OrderInfoPageState extends State<OrderInfoPage> {
|
||||
: _buildContent(),
|
||||
);
|
||||
}
|
||||
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Scaffold(
|
||||
// appBar: const GymLinkAppBar(),
|
||||
// body: detail == null
|
||||
// ? const Center(child: CircularProgressIndicator())
|
||||
// : Column(
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// children: [
|
||||
// GymLinkHeader(title: "Заказ #${detail?.id} от ${detail?.date}"),
|
||||
// Expanded(
|
||||
// child: RefreshIndicator(
|
||||
// onRefresh: () => _onRefresh(),
|
||||
// edgeOffset: 55,
|
||||
// child: Scrollbar(
|
||||
// controller: _scrollController,
|
||||
// child: ListView(
|
||||
// shrinkWrap: true,
|
||||
// controller: _scrollController,
|
||||
// children: [
|
||||
// detail != null
|
||||
// ? ListView.builder(
|
||||
// itemCount: (detail!.providers.length + 1),
|
||||
// shrinkWrap: true,
|
||||
// physics: const NeverScrollableScrollPhysics(),
|
||||
// itemBuilder: (context, index) {
|
||||
// final provider = detail!.providers[0];
|
||||
// return Card(
|
||||
// elevation: 3,
|
||||
// child: Column(
|
||||
// children: [
|
||||
// MarkdownBody(
|
||||
// data: '# ${provider.name}'),
|
||||
// MarkdownBody(
|
||||
// data:
|
||||
// '## Статус: ${provider.status}'),
|
||||
// const MarkdownBody(
|
||||
// data: '### Состав:'),
|
||||
// for (final item in provider.items)
|
||||
// OrderDetailCardItemCard(
|
||||
// image: FutureBuilder(
|
||||
// future: precacheImage(
|
||||
// const AssetImage(
|
||||
// 'assets/product.png'),
|
||||
// context),
|
||||
// builder: (context, snapshot) {
|
||||
// if (snapshot
|
||||
// .connectionState ==
|
||||
// ConnectionState.done) {
|
||||
// return const Image(
|
||||
// image: AssetImage(
|
||||
// 'assets/product.png'),
|
||||
// width: 50,
|
||||
// );
|
||||
// } else {
|
||||
// return const CircularProgressIndicator();
|
||||
// }
|
||||
// },
|
||||
// ),
|
||||
// name: 'Протеин',
|
||||
// count: item.count,
|
||||
// price: double.parse(item.price),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// );
|
||||
// },
|
||||
// )
|
||||
// : const SizedBox.shrink(),
|
||||
// Card(
|
||||
// elevation: 4,
|
||||
// child: Padding(
|
||||
// padding: const EdgeInsetsDirectional.symmetric(
|
||||
// horizontal: 10, vertical: 20),
|
||||
// child: Column(
|
||||
// mainAxisSize: MainAxisSize.min,
|
||||
// children: [
|
||||
// MarkdownBody(
|
||||
// data:
|
||||
// "### Адрес получателя: _${detail!.address}_"),
|
||||
// Markdown(
|
||||
// data: '### Почта: _${detail!.email}_'),
|
||||
// // Markdown(
|
||||
// // data: '### ФИО: _${detail!.receiver}_'),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user