import type { FastifyRequest, FastifyReply } from 'fastify';
import * as orderApprovalService from '../services/orderApproval.service.js';

export async function submitHandler(request: FastifyRequest, _reply: FastifyReply) {
  const payload = request.body as Record<string, unknown>;
  return orderApprovalService.submitForApproval(payload, request.user.id);
}

export async function listPendingHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { employeeId, dateFrom, dateTo } = request.query as { employeeId?: string; dateFrom?: string; dateTo?: string };
  return orderApprovalService.listPending({ employeeId, dateFrom, dateTo });
}

export async function listCancelledHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { employeeId, dateFrom, dateTo } = request.query as { employeeId?: string; dateFrom?: string; dateTo?: string };
  return orderApprovalService.listCancelled({ employeeId, dateFrom, dateTo });
}

export async function approveHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { id } = request.params as { id: string };
  return orderApprovalService.approve(id, request.user.id);
}

export async function cancelHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { id } = request.params as { id: string };
  await orderApprovalService.cancel(id, request.user.id);
  return { ok: true };
}
