From 70e2583103b43db132a09f5a5d7889718d508281 Mon Sep 17 00:00:00 2001 From: Ashish Bailkeri Date: Sun, 26 Feb 2023 13:25:13 -0500 Subject: [PATCH] adding sellers --- lib/auth_gate.dart | 8 ++---- lib/meetings.dart | 18 +++++++++++++- lib/sell.dart | 61 ++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 72 insertions(+), 15 deletions(-) diff --git a/lib/auth_gate.dart b/lib/auth_gate.dart index 30eef3c..1897ce5 100644 --- a/lib/auth_gate.dart +++ b/lib/auth_gate.dart @@ -11,11 +11,7 @@ Future addUser(String? name, String uid) async { final CollectionReference users = FirebaseFirestore.instance.collection('users'); return await users - .add({ - 'name': name, - 'uid': uid, - 'swipes': 0, - }) + .add({'name': name, 'uid': uid, 'swipes': 0, 'seller-id': ""}) .then((value) => print("")) .catchError((error) => print("ERROR ADDING DATA: $error")); } @@ -76,7 +72,7 @@ class AuthGate extends StatelessWidget { final name = user.displayName; final uid = user.uid; - addUser(name, uid); + addUser("TOAA", uid); } } diff --git a/lib/meetings.dart b/lib/meetings.dart index 81c6dd4..f72cc44 100644 --- a/lib/meetings.dart +++ b/lib/meetings.dart @@ -21,7 +21,7 @@ class Seller implements Comparable { String uid = ""; List location; TimeRange availableTime; - int price; + double price; Seller(this.name, this.uid, this.location, this.availableTime, this.price); @@ -56,6 +56,22 @@ List fetchNSellers(int n) { return sellers; } +void addSeller(Seller seller) async { + final CollectionReference sellers = + FirebaseFirestore.instance.collection('sellers'); + return await sellers + .add({ + 'name': seller.name, + 'uid': seller.uid, + 'price': seller.price, + 'start-time': seller.availableTime.startTime, + 'end-time': seller.availableTime.endTime, + 'location': seller.location, + }) + .then((value) => print("")) + .catchError((error) => print("ERROR ADDING DATA: $error")); +} + Future> getSellers(Filter filter) async { CollectionReference users = FirebaseFirestore.instance.collection('sellers'); List sellers = List.empty(growable: true); diff --git a/lib/sell.dart b/lib/sell.dart index 0a37a67..060842e 100644 --- a/lib/sell.dart +++ b/lib/sell.dart @@ -1,8 +1,12 @@ // ignore_for_file: prefer_const_constructors +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:currency_text_input_formatter/currency_text_input_formatter.dart'; +import 'package:ruswipeshare/auth_gate.dart'; import 'package:ruswipeshare/meetings.dart'; +import 'package:cloud_firestore/cloud_firestore.dart'; class SellScreen extends StatefulWidget { const SellScreen({Key? key}) : super(key: key); @@ -30,6 +34,8 @@ class _SellScreenState extends State { String endTime = 'End Time'; DateTime endTimeTime = DateTime.now(); bool? is24HoursFormat; + double price = 0; + final priceController = TextEditingController(); @override Widget build(BuildContext context) { bool is24HoursFormat = MediaQuery.of(context).alwaysUse24HourFormat; @@ -98,10 +104,19 @@ class _SellScreenState extends State { context: context, initialTime: TimeOfDay.fromDateTime(startTimeTime), ); - if (picked != null && picked != TimeOfDay.fromDateTime(startTimeTime)) { + if (picked != null && + picked != TimeOfDay.fromDateTime(startTimeTime)) { setState(() { - startTimeTime = DateTime.fromMicrosecondsSinceEpoch(picked.hour * 60 * 60 * 1000000 + picked.minute * 60 * 1000000, isUtc: true); - startTime = startTimeTime.hour.toString() + ":" + startTimeTime.minute.toString() + ((is24HoursFormat) ? "" : ((startTimeTime.hour > 12) ? "PM" : "AM")); + startTimeTime = DateTime.fromMicrosecondsSinceEpoch( + picked.hour * 60 * 60 * 1000000 + + picked.minute * 60 * 1000000, + isUtc: true); + startTime = startTimeTime.hour.toString() + + ":" + + startTimeTime.minute.toString() + + ((is24HoursFormat) + ? "" + : ((startTimeTime.hour > 12) ? "PM" : "AM")); }); } }, @@ -113,10 +128,19 @@ class _SellScreenState extends State { context: context, initialTime: TimeOfDay.fromDateTime(endTimeTime), ); - if (picked != null && picked != TimeOfDay.fromDateTime(endTimeTime)) { + if (picked != null && + picked != TimeOfDay.fromDateTime(endTimeTime)) { setState(() { - endTimeTime = DateTime.fromMicrosecondsSinceEpoch(picked.hour * 60 * 60 * 1000000 + picked.minute * 60 * 1000000, isUtc: true); - endTime = endTimeTime.hour.toString() + ":" + endTimeTime.minute.toString() + ((is24HoursFormat) ? "" : ((endTimeTime.hour > 12) ? "PM" : "AM")); + endTimeTime = DateTime.fromMicrosecondsSinceEpoch( + picked.hour * 60 * 60 * 1000000 + + picked.minute * 60 * 1000000, + isUtc: true); + endTime = endTimeTime.hour.toString() + + ":" + + endTimeTime.minute.toString() + + ((is24HoursFormat) + ? "" + : ((endTimeTime.hour > 12) ? "PM" : "AM")); }); } }, @@ -137,6 +161,7 @@ class _SellScreenState extends State { keyboardType: TextInputType.number, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontSize: 30), + controller: priceController, decoration: InputDecoration( border: OutlineInputBorder(), hintText: 'Price', @@ -145,9 +170,29 @@ class _SellScreenState extends State { ), ), ElevatedButton( - onPressed: () {}, + onPressed: () { + List locations = []; + User? user = auth.currentUser; + values.forEach((key, value) { + if (value == true) locations.add(key); + }); + if (user != null) { + Seller seller = Seller( + "", + user.uid, + locations, + TimeRange(Timestamp.fromDate(startTimeTime), + Timestamp.fromDate(endTimeTime)), + double.parse(priceController.text)); + + print("SIFSIFISFHJIS"); + print(seller); + addSeller(seller); + } + }, style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((states) => Colors.blue), + backgroundColor: + MaterialStateColor.resolveWith((states) => Colors.blue), ), child: const Text('Submit Sell Request'), ),