diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-12-22 18:59:16 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-12-22 18:59:16 +0200 |
| commit | e97dbb11b30d0fe51b2ca1660e9f0d27a99a73e3 (patch) | |
| tree | e99961a2ff29d7e8522697f67c9276713c657569 /driver/src/components/RideDialog.tsx | |
| parent | 7b379914e44583b9b097ed286b669ad244b176a1 (diff) | |
| download | carpool-e97dbb11b30d0fe51b2ca1660e9f0d27a99a73e3.tar.xz carpool-e97dbb11b30d0fe51b2ca1660e9f0d27a99a73e3.zip | |
Added most of the logic on the driver side
Diffstat (limited to 'driver/src/components/RideDialog.tsx')
| -rw-r--r-- | driver/src/components/RideDialog.tsx | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/driver/src/components/RideDialog.tsx b/driver/src/components/RideDialog.tsx new file mode 100644 index 0000000..da7767b --- /dev/null +++ b/driver/src/components/RideDialog.tsx @@ -0,0 +1,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; |
