import { FastifyReply, FastifyRequest } from "fastify"; import { CreatePermitInput, UpdatePermitInput } from "./permit.schema"; import { createPermit, deletePermit, getPermit, listPermits, searchPermit, updatePermit, } from "./permit.service"; import { PageQueryParams } from "../pagination"; export async function createPermitHandler( req: FastifyRequest, res: FastifyReply ) { const input = req.body as CreatePermitInput; try { const permit = await createPermit(input, req.user); return res.code(201).send(permit); } catch (err) { return err; } } export async function getPermitHandler(req: FastifyRequest, res: FastifyReply) { const { permitId } = req.params as { permitId: string }; try { const permit = await getPermit(permitId, req.user.tenantId); if (permit === null) return res.code(404).send({ error: "resource not found" }); return res.code(200).send(permit); } catch (err) { return err; } } export async function listPermitsHandler( req: FastifyRequest, res: FastifyReply ) { const queryParams = req.query as PageQueryParams; try { const authUser = req.user; const orgList = await listPermits(queryParams, authUser); return res.code(200).send(orgList); } catch (err) { return err; } } export async function updatePermitHandler( req: FastifyRequest, res: FastifyReply ) { const input = req.body as UpdatePermitInput; const { permitId } = req.params as { permitId: string }; try { const updatedPermit = await updatePermit(input, permitId, req.user); if (!updatedPermit) return res.code(404).send({ error: "resource not found" }); return res.code(200).send(updatedPermit); } catch (err) { return err; } } export async function deletePermitHandler( req: FastifyRequest, res: FastifyReply ) { const { permitId } = req.params as { permitId: string }; try { const deleteResult = await deletePermit(permitId, req.user.tenantId); if (deleteResult.deletedCount === 0) return res.code(404).send({ error: "resource not found" }); return res.code(204).send(); } catch (err) { return err; } } export async function searchPermitHandler( req: FastifyRequest, res: FastifyReply ) { const queryParams = req.query as PageQueryParams; try { const authUser = req.user; const permitList = await searchPermit(queryParams, authUser); return res.code(200).send(permitList); } catch (err) { return err; } }