54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { app } from "@/firebase";
|
|
import { CorporateUser, StudentUser, TeacherUser } from "@/interfaces/user";
|
|
import { doc, getDoc, getFirestore, setDoc } from "firebase/firestore";
|
|
import moment from "moment";
|
|
|
|
const db = getFirestore(app);
|
|
|
|
export const updateExpiryDateOnGroup = async (
|
|
participantID: string,
|
|
corporateID: string,
|
|
) => {
|
|
const corporateRef = await getDoc(doc(db, "users", corporateID));
|
|
const participantRef = await getDoc(doc(db, "users", participantID));
|
|
|
|
if (!corporateRef.exists() || !participantRef.exists()) return;
|
|
|
|
const corporate = {
|
|
...corporateRef.data(),
|
|
id: corporateRef.id,
|
|
} as CorporateUser;
|
|
const participant = { ...participantRef.data(), id: participantRef.id } as
|
|
| StudentUser
|
|
| TeacherUser;
|
|
|
|
if (
|
|
corporate.type !== "corporate" ||
|
|
(participant.type !== "student" && participant.type !== "teacher")
|
|
)
|
|
return;
|
|
|
|
if (
|
|
!corporate.subscriptionExpirationDate ||
|
|
!participant.subscriptionExpirationDate
|
|
) {
|
|
return await setDoc(
|
|
doc(db, "users", participant.id),
|
|
{ subscriptionExpirationDate: null },
|
|
{ merge: true },
|
|
);
|
|
}
|
|
|
|
const corporateDate = moment(corporate.subscriptionExpirationDate);
|
|
const participantDate = moment(participant.subscriptionExpirationDate);
|
|
|
|
if (corporateDate.isAfter(participantDate))
|
|
return await setDoc(
|
|
doc(db, "users", participant.id),
|
|
{ subscriptionExpirationDate: corporateDate.toISOString() },
|
|
{ merge: true },
|
|
);
|
|
|
|
return;
|
|
};
|