1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
import { addDoc, collection, doc, getDoc } from "firebase/firestore"
import { db } from "../firebase/firebase_config"
import { auth } from "../firebase/firebase_config"
import { Button } from "@/components/ui/button"
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { useState } from "react"
interface RideOrder {
driverName: string
carBrand: string
carModel: string
carColor: string
plateNumber: string
status: string
orderTime: Date
pickUpLocation: string
dropOffLocation: string
}
function RideDialog({ name, brand, model, color, plateNumber }: any) {
const [status, _setStatus] = useState<string>('Pending')
const [orderTime, _setOrderTime] = useState<Date>(new Date())
const [pickUpLocation, setPickUpLocation] = useState<string>()
const [dropOffLocation, setDropOffLocation] = useState<string>()
const addRideOrderToFirestore = async () => {
try {
// Get a reference to the 'rideOrders' collection
const rideOrdersCollection = collection(db, 'Rides');
// Add a new document to the 'rideOrders' collection with the data from the RideOrder object
const newRideOrderRef = await addDoc(rideOrdersCollection, {
driverName: name,
carModel: model,
carBrand: brand,
carColor: color,
plateNumber: plateNumber,
status: status,
orderTime: orderTime,
fromLocation: pickUpLocation,
toLocation: dropOffLocation,
});
console.log('Ride order added with ID:', newRideOrderRef.id);
// 'newRideOrderRef.id' will give you the document ID of the added ride order
} catch (error) {
console.error('Error adding ride order:', error);
}
};
return (
<div>
<Dialog>
<DialogTrigger asChild>
<Button className="bg-green-600 text-black text-xl">Add Ride</Button>
</DialogTrigger>
<DialogContent className="sm:max-w-[425px]">
<DialogHeader>
<DialogTitle>Ride details</DialogTitle>
<DialogDescription>
Please enter details about your ride and click submit for the ride to appear to other students!
</DialogDescription>
</DialogHeader>
<div className="grid gap-4 py-4">
<div className="grid grid-cols-4 items-center gap-4">
<Label htmlFor="To Location" className="text-right">
Pickup
</Label>
<Input
id="To Location"
defaultValue=""
className="col-span-3"
onChange={(e) => setDropOffLocation(e.target.value)}
/>
</div>
<div className="grid grid-cols-4 items-center gap-4">
<Label htmlFor="From location" className="text-right">
Drop off
</Label>
<Input
id="From location"
defaultValue=""
className="col-span-3"
onChange={(e) => setPickUpLocation(e.target.value)}
/>
</div>
</div>
<DialogFooter>
<Button className="bg-green-500 text-black" type="submit" onClick={addRideOrderToFirestore}>Submit</Button>
</DialogFooter>
</DialogContent>
</Dialog>
</div>
)
}
export default RideDialog;
|