89 lines
2.4 KiB
TypeScript
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 }
|
|
// );
|
|
// }
|
|
}
|