import { Router } from 'express';
import { AppContainer } from '../container';
import { registerAuthRoutes } from '../controllers/authController';
import { registerLeaveRoutes } from '../controllers/leaveController';
import { registerBackdatedLeaveRoutes } from '../controllers/backdatedLeaveController';
import { registerAttendanceRoutes } from '../controllers/attendanceController';
import { registerTeamShiftRoutes } from '../controllers/teamShiftController';
import { registerCompensationRoutes } from '../controllers/compensationController';
import { registerCalendarRoutes } from '../controllers/calendarController';
import { registerHrRoutes } from '../controllers/hrController';
import { registerEmployeeSettingsRoutes } from '../controllers/employeeSettingsController';

/** Mounts thin controllers. Each controller calls a facade only. */
export function createApiRouter(c: AppContainer): Router {
  const router = Router();
  registerAuthRoutes(router, c);
  registerLeaveRoutes(router, c);
  registerBackdatedLeaveRoutes(router, c);
  registerAttendanceRoutes(router, c);
  registerTeamShiftRoutes(router, c);
  registerCompensationRoutes(router, c);
  registerCalendarRoutes(router, c);
  registerHrRoutes(router, c);
  registerEmployeeSettingsRoutes(router, c);
  return router;
}
