Updated Master Statistical
This commit is contained in:
@@ -1,19 +1,58 @@
|
||||
import {app} from "@/firebase";
|
||||
import {Assignment} from "@/interfaces/results";
|
||||
import {collection, getDocs, getFirestore, query, where} from "firebase/firestore";
|
||||
import { app } from "@/firebase";
|
||||
import { Assignment } from "@/interfaces/results";
|
||||
import {
|
||||
collection,
|
||||
getDocs,
|
||||
getFirestore,
|
||||
query,
|
||||
where,
|
||||
} from "firebase/firestore";
|
||||
|
||||
const db = getFirestore(app);
|
||||
|
||||
export const getAssignmentsByAssigner = async (id: string) => {
|
||||
const {docs} = await getDocs(query(collection(db, "assignments"), where("assigner", "==", id)));
|
||||
return docs.map((x) => ({...x.data(), id: x.id})) as Assignment[];
|
||||
export const getAssignmentsByAssigner = async (
|
||||
id: string,
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
) => {
|
||||
const { docs } = await getDocs(
|
||||
query(
|
||||
collection(db, "assignments"),
|
||||
...[
|
||||
where("assigner", "==", id),
|
||||
...(startDate ? [where("startDate", ">=", startDate.toISOString())] : []),
|
||||
// firebase doesnt accept compound queries so we have to filter on the server
|
||||
// ...endDate ? [where("endDate", "<=", endDate)] : [],
|
||||
]
|
||||
)
|
||||
);
|
||||
if (endDate) {
|
||||
return docs
|
||||
.map((x) => ({ ...(x.data() as Assignment), id: x.id }))
|
||||
.filter((x) => new Date(x.endDate) <= endDate) as Assignment[];
|
||||
}
|
||||
return docs.map((x) => ({ ...x.data(), id: x.id })) as Assignment[];
|
||||
};
|
||||
|
||||
export const getAssignmentsByAssignerBetweenDates = async (id: string, startDate: Date, endDate: Date) => {
|
||||
const {docs} = await getDocs(query(collection(db, "assignments"), where("assigner", "==", id), ));
|
||||
return docs.map((x) => ({...x.data(), id: x.id})) as Assignment[];
|
||||
export const getAssignmentsByAssignerBetweenDates = async (
|
||||
id: string,
|
||||
startDate: Date,
|
||||
endDate: Date
|
||||
) => {
|
||||
const { docs } = await getDocs(
|
||||
query(collection(db, "assignments"), where("assigner", "==", id))
|
||||
);
|
||||
return docs.map((x) => ({ ...x.data(), id: x.id })) as Assignment[];
|
||||
};
|
||||
|
||||
export const getAssignmentsByAssigners = async (ids: string[]) => {
|
||||
return (await Promise.all(ids.map(getAssignmentsByAssigner))).flat();
|
||||
export const getAssignmentsByAssigners = async (
|
||||
ids: string[],
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
) => {
|
||||
return (
|
||||
await Promise.all(
|
||||
ids.map((id) => getAssignmentsByAssigner(id, startDate, endDate))
|
||||
)
|
||||
).flat();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user