Files
ipv6-sims/lib/summit-requests.ts
T

55 lines
1.6 KiB
TypeScript

import type { AdminRequestRow, SubmissionStatus } from "@/types/admin-submission";
import connectDB from "@/lib/mongodb";
import SummitRequest, { type ISummitRequest } from "@/models/SummitRequest";
function docToRow(doc: ISummitRequest): AdminRequestRow {
return {
id: doc.publicId,
submittedAt: doc.submittedAt,
displayDate: doc.displayDate,
fullName: doc.fullName,
jobTitle: doc.jobTitle,
company: doc.company,
segment: doc.segment,
email: doc.email,
phone: doc.phone,
status: doc.status,
notes: doc.notes,
source: doc.source,
};
}
export async function listRequestsSorted(): Promise<AdminRequestRow[]> {
await connectDB();
const docs = await SummitRequest.find()
.sort({ submittedAt: -1, updatedAt: -1 })
.lean<ISummitRequest[]>();
return docs.map(docToRow);
}
export async function createSummitRequest(row: AdminRequestRow): Promise<void> {
await connectDB();
await SummitRequest.create({
publicId: row.id,
submittedAt: row.submittedAt,
displayDate: row.displayDate,
fullName: row.fullName,
jobTitle: row.jobTitle,
company: row.company,
segment: row.segment,
email: row.email,
phone: row.phone,
status: row.status,
notes: row.notes,
source: row.source,
});
}
export async function updateSummitRequestStatus(publicId: string, status: SubmissionStatus): Promise<void> {
await connectDB();
const updated = await SummitRequest.findOneAndUpdate({ publicId }, { $set: { status } }, { new: true });
if (!updated) {
throw new Error(`Request not found: ${publicId}`);
}
}