/**
 * HTTP layer for /admin/enquiries/* (PLANNING.md §4b). Thin — all rules live in
 * enquiry.admin.service.ts.
 */
import type { Request, Response } from 'express';
import { parseBody, parseQuery } from '../../lib/parseRequest';
import { listQuerySchema, replySchema, statusPatchSchema } from './enquiry.schema';
import * as enquiries from './enquiry.admin.service';

export async function list(req: Request, res: Response): Promise<void> {
  const query = parseQuery(listQuerySchema, req.query);
  res.json(await enquiries.list(query));
}

export async function detail(req: Request, res: Response): Promise<void> {
  res.json({ enquiry: await enquiries.getById(req.params.id) });
}

export async function patchStatus(req: Request, res: Response): Promise<void> {
  const { status } = parseBody(statusPatchSchema, req.body);
  res.json({ enquiry: await enquiries.setStatus(req.params.id, status) });
}

export async function createReply(req: Request, res: Response): Promise<void> {
  const { body } = parseBody(replySchema, req.body);
  const enquiry = await enquiries.reply(req.params.id, req.admin!.id, body);
  res.status(201).json({ enquiry });
}
