1
+ import 'package:cloud_firestore/cloud_firestore.dart' ;
2
+ import 'package:emart/consts/consts.dart' ;
3
+ import 'package:emart/controllers/home_controller.dart' ;
1
4
import 'package:get/get.dart' ;
2
5
3
6
class CartCotroller extends GetxController {
4
7
var totalPrice = 0. obs;
5
8
9
+ // text editing controller
10
+ TextEditingController addressController = TextEditingController ();
11
+ TextEditingController cityController = TextEditingController ();
12
+ TextEditingController stateController = TextEditingController ();
13
+ TextEditingController postalCodeController = TextEditingController ();
14
+ TextEditingController phoneController = TextEditingController ();
15
+
16
+ // payment index
17
+ var paymentIndex = 0. obs;
18
+
19
+ late dynamic productSnapshot;
20
+ var products = [];
21
+
6
22
// calculate total price of item present in cart
7
23
calculateTotalPrice (data) {
8
24
totalPrice.value = 0 ;
@@ -11,4 +27,48 @@ class CartCotroller extends GetxController {
11
27
totalPrice.value + int .parse (data[price]['total_price' ].toString ());
12
28
}
13
29
}
30
+
31
+ // change payment index
32
+ changePaymentIndex (index) {
33
+ paymentIndex.value = index;
34
+ }
35
+
36
+ // order placing
37
+ placeMyOrder ({required orderPaymentMethod, required totalAmount}) async {
38
+ await getProductDetails ();
39
+
40
+ await firestore.collection (ordersCollection).doc ().set ({
41
+ 'order_code' : "223322" ,
42
+ 'order_date' : FieldValue .serverTimestamp (),
43
+ 'order_by' : currentUser! .uid,
44
+ 'order_by_name' : Get .find <HomeController >().userName,
45
+ 'order_by_email' : currentUser! .email,
46
+ 'order_by_address' : addressController.text,
47
+ 'order_by_city' : cityController.text,
48
+ 'order_by_state' : stateController.text,
49
+ 'order_by_phone' : phoneController.text,
50
+ 'order_by_postal_code' : postalCodeController.text,
51
+ 'shipping_method' : "Home Delivery" ,
52
+ 'payment_method' : orderPaymentMethod,
53
+ 'order_placed' : true ,
54
+ 'order_confirmed' : false ,
55
+ 'order_delivered' : false ,
56
+ 'order_on_delivery' : false ,
57
+ 'total_amount' : totalAmount,
58
+ 'orders' : FieldValue .arrayUnion (products),
59
+ });
60
+ }
61
+
62
+ // product details
63
+ getProductDetails () {
64
+ products.clear ();
65
+ for (var i = 0 ; i < productSnapshot.length; i++ ) {
66
+ products.add ({
67
+ 'color' : productSnapshot[i]['color' ],
68
+ 'image' : productSnapshot[i]['image' ],
69
+ 'quantity' : productSnapshot[i]['quantity' ],
70
+ 'title' : productSnapshot[i]['title' ],
71
+ });
72
+ }
73
+ }
14
74
}
0 commit comments