import { Router } from "express";

import { authenticate } from "../../middleware/auth.js";
import { validate } from "../../middleware/validate.js";
import { asyncHandler } from "../../utils/http.js";
import { operationsProgressBodySchema, operationsQuerySchema } from "./operations.schemas.js";
import { getOperations, updateOperationsTaskProgress } from "./operations.service.js";

export const operationsRouter = Router();

operationsRouter.get(
  "/",
  authenticate,
  validate({ query: operationsQuerySchema }),
  asyncHandler(async (request, response) => {
    const data = await getOperations(request.authUser!.role, {
      from: request.query.from as string | undefined,
      to: request.query.to as string | undefined
    });

    response.json({ data });
  })
);

operationsRouter.post(
  "/progress",
  authenticate,
  validate({ body: operationsProgressBodySchema }),
  asyncHandler(async (request, response) => {
    const data = await updateOperationsTaskProgress(request.authUser!.id, request.body);
    response.json({ data });
  })
);
