import { pick } from '@/shared/utils';
import catchAsync from '@/shared/utils/catchAsync';
import { getObjectId } from '@/shared/utils/commonHelper';
import responseCodes from '@/shared/utils/responseCode/responseCode';
import { Request, Response } from 'express';
import * as unitJobService from './unit-job.service';

const { ProjectResponseCodes } = responseCodes;

export const getUnitJobsByProjectId = catchAsync(
  async (req: Request, res: Response) => {
    const { projectId } = req.params;
    const validId = getObjectId(projectId);
    const filter = pick(req.query, ['status', 'createdBy', 'search']);
    const options = pick(req.query, [
      'sortBy',
      'limit',
      'page',
      'populate',
      'includeTimeStamps',
      'fields',
    ]);

    const unitJobs = await unitJobService.getUnitJobsByProjectId(
      validId,
      options,
      filter,
    );

    res.success(
      unitJobs,
      ProjectResponseCodes.SUCCESS,
      'Unit Jobs Fetched Successfully',
    );
  },
);
