diff --git a/src/App.vue b/src/App.vue
index ea4a4fa..855fff1 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -5,6 +5,8 @@
diff --git a/src/components/BoatReservationComponent.vue b/src/components/BoatReservationComponent.vue
new file mode 100644
index 0000000..db27e48
--- /dev/null
+++ b/src/components/BoatReservationComponent.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+ {{ reservation?.value ? 'Modify Booking' : 'New Booking' }}
+
+ for: {{ bookingName }}
+
+
+
+
+
+
+
+
+ {{ boat.name }}
+
+
+ {{ boat.class }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatDate(bookingForm.interval?.start) }}
+
+
+
+
+
+
+
+ {{ formatDate(bookingForm.interval?.end) }}
+
+
+
+
+
+
+ {{ bookingDuration.hours }} hours
+
+
+ {{ bookingDuration.minutes }} mins
+
+
+
+
+
+ Tap to Select a Boat / Time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/scheduling/ReservationCardComponent.vue b/src/components/scheduling/ReservationCardComponent.vue
index ee3270e..b3ad01d 100644
--- a/src/components/scheduling/ReservationCardComponent.vue
+++ b/src/components/scheduling/ReservationCardComponent.vue
@@ -14,6 +14,8 @@
Start: {{ formatDate(reservation.start) }}
End: {{ formatDate(reservation.end) }}
+
+ Type: {{ reservation.reason }}
@@ -50,7 +52,7 @@
+ :to="{ name: 'edit-reservation', params: { id: reservation.$id } }">
Modify
({ required: true });
const cancelReservation = () => {
cancelDialog.value = true;
};
-
-const modifyReservation = () => {
- return;
-};
diff --git a/src/pages/schedule/BoatReservationPage.vue b/src/pages/schedule/BoatReservationPage.vue
index 095cd25..201b52c 100644
--- a/src/pages/schedule/BoatReservationPage.vue
+++ b/src/pages/schedule/BoatReservationPage.vue
@@ -1,217 +1,11 @@
-
-
-
- New Booking
- for: {{ bookingForm.name }}
-
-
-
-
-
-
-
-
-
-
- {{ bookingForm.boat?.name }}
-
-
- {{ bookingForm.boat?.class }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ formatDate(bookingForm.startDate) }}
-
-
-
-
-
-
-
- {{ formatDate(bookingForm.endDate) }}
-
-
-
-
-
-
- {{ bookingDuration.hours }} hours
-
-
- {{ bookingDuration.minutes }} mins
-
-
-
-
-
- Tap to Select a Boat / Time
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/pages/schedule/ListBookingsPage.vue b/src/pages/schedule/ListReservationsPage.vue
similarity index 91%
rename from src/pages/schedule/ListBookingsPage.vue
rename to src/pages/schedule/ListReservationsPage.vue
index 23ecec7..353d077 100644
--- a/src/pages/schedule/ListBookingsPage.vue
+++ b/src/pages/schedule/ListReservationsPage.vue
@@ -59,13 +59,11 @@
diff --git a/src/pages/schedule/ModifyBoatReservation.vue b/src/pages/schedule/ModifyBoatReservation.vue
new file mode 100644
index 0000000..fc5ab3d
--- /dev/null
+++ b/src/pages/schedule/ModifyBoatReservation.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/src/router/routes.ts b/src/router/routes.ts
index ad0e90d..9f6382b 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -42,8 +42,15 @@ const routes: RouteRecordRaw[] = [
},
{
path: 'list',
- component: () => import('src/pages/schedule/ListBookingsPage.vue'),
- name: 'list-bookings',
+ component: () =>
+ import('src/pages/schedule/ListReservationsPage.vue'),
+ name: 'list-reservations',
+ },
+ {
+ path: 'edit/:id',
+ component: () =>
+ import('src/pages/schedule/ModifyBoatReservation.vue'),
+ name: 'edit-reservation',
},
{
path: 'manage',
diff --git a/src/stores/auth.ts b/src/stores/auth.ts
index 79ef05a..808800c 100644
--- a/src/stores/auth.ts
+++ b/src/stores/auth.ts
@@ -50,7 +50,8 @@ export const useAuthStore = defineStore('auth', () => {
currentUser.value = await account.get();
}
- function getUserNameById(id: string) {
+ function getUserNameById(id: string | undefined | null): string {
+ if (!id) return 'No User';
try {
if (!userNames.value[id]) {
userNames.value[id] = '';
diff --git a/src/stores/reservation.ts b/src/stores/reservation.ts
index 43da87d..a6c5b8b 100644
--- a/src/stores/reservation.ts
+++ b/src/stores/reservation.ts
@@ -47,6 +47,19 @@ export const useReservationStore = defineStore('reservation', () => {
setDateLoaded(startDate, endDate, 'error');
}
};
+ const getReservationById = async (id: string) => {
+ try {
+ const response = await databases.getDocument(
+ AppwriteIds.databaseId,
+ AppwriteIds.collection.reservation,
+ id
+ );
+ return response as Reservation;
+ } catch (error) {
+ console.error('Failed to fetch reservation: ', error);
+ }
+ };
+
const createReservation = async (reservation: Reservation) => {
try {
const response = await databases.createDocument(
@@ -75,7 +88,6 @@ export const useReservationStore = defineStore('reservation', () => {
return false;
}
- console.log(id);
try {
await databases.deleteDocument(
AppwriteIds.databaseId,
@@ -203,6 +215,7 @@ export const useReservationStore = defineStore('reservation', () => {
return {
getReservationsByDate,
+ getReservationById,
createReservation,
deleteReservation,
fetchReservationsForDateRange,
diff --git a/src/stores/schedule.types.ts b/src/stores/schedule.types.ts
index f0c0a24..9591264 100644
--- a/src/stores/schedule.types.ts
+++ b/src/stores/schedule.types.ts
@@ -10,6 +10,8 @@ export type Reservation = Partial & {
status?: StatusTypes;
reason: string;
comment: string;
+ members?: string[];
+ guests?: string[];
};
// 24 hrs in advance only 2 weekday, and 1 weekend slot