Files
nirvana/services/officeRoomService.tsx
T

89 lines
2.4 KiB
TypeScript

import {
addDoc,
collection,
doc,
FieldValue,
Firestore,
getFirestore,
serverTimestamp,
setDoc,
writeBatch,
} from "firebase/firestore";
import OfficeRoom from "../models/officeRoom";
import { Collections } from "./collections";
export default class OfficeRoomService {
private db: Firestore = getFirestore();
private batch = writeBatch(this.db);
async createInitialOfficeRooms(createdByUserId: string, teamId: string) {
const entrance = new OfficeRoom("Entrance", teamId, createdByUserId);
const kitchen = new OfficeRoom("Kitchen", teamId, createdByUserId);
const hallway = new OfficeRoom("Hallway", teamId, createdByUserId);
const corner = new OfficeRoom("Corner", teamId, createdByUserId);
const main = new OfficeRoom("Team Hub", teamId, createdByUserId);
const handsOnDeck = new OfficeRoom(
"All Hand On Deck",
teamId,
createdByUserId
);
const initialORs: OfficeRoom[] = [
entrance,
kitchen,
hallway,
corner,
main,
handsOnDeck,
];
initialORs.forEach((oR) => {
const oRRef = doc(this.db, Collections.officeRooms, oR.id);
this.batch.set(oRRef, { ...oR, createdDate: serverTimestamp() });
});
await this.batch.commit();
}
// async createOrUpdateRoom(room: Room) {
// if (room.id) {
// //update
// await this.updateRoom(room);
// } else {
// //create
// const roomDocRef = await addDoc(collection(this.db, Collections.rooms), {
// ...room,
// createdDate: serverTimestamp(),
// });
// }
// }
// async updateMembersInRoom(roomId: string, newMembersInRoom: string[]) {
// // if the room is going to be empty, then change status accordingly
// var status: RoomStatus = RoomStatus.live;
// if (newMembersInRoom.length == 0) {
// status = RoomStatus.empty;
// }
// const docRef = doc(this.db, Collections.rooms, roomId);
// await setDoc(
// docRef,
// {
// status,
// membersInRoom: newMembersInRoom,
// lastUpdatedDate: serverTimestamp(),
// },
// { merge: true }
// );
// }
// async updateRoom(room: Room) {
// const docRef = doc(this.db, Collections.rooms, room.id);
// await setDoc(
// docRef,
// { ...room, lastUpdatedDate: serverTimestamp() },
// { merge: true }
// );
// }
}