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 { await connectDB(); const docs = await SummitRequest.find() .sort({ submittedAt: -1, updatedAt: -1 }) .lean(); return docs.map(docToRow); } export async function createSummitRequest(row: AdminRequestRow): Promise { 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 { await connectDB(); const updated = await SummitRequest.findOneAndUpdate({ publicId }, { $set: { status } }, { new: true }); if (!updated) { throw new Error(`Request not found: ${publicId}`); } }