summaryrefslogtreecommitdiff
path: root/driver/src/components/RideDialog.tsx
blob: da7767bc1ee6b6b429e7ba97ac25b9d3bb9f0bb4 (plain)
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;