import { applyDecorators, UseGuards } from '@nestjs/common';
import { JwtGuard } from '@tria-plc/api-common/modules/auth/services/jwt.guard';

import { FreightPermissionGuard } from './freight-permission.guard';
import { FREIGHT_PERMS } from '../seed/freight-permissions.registry';

export const BookingStaff = (permission: string | string[]) =>
  applyDecorators(
    UseGuards(
      JwtGuard,
      FreightPermissionGuard(
        Array.isArray(permission) ? permission : [permission],
      ),
    ),
  );

export const BookingView = () => BookingStaff(FREIGHT_PERMS.bookings.view);

export const TrainSchedulingView = () =>
  BookingStaff(FREIGHT_PERMS.trainScheduling.view);

export const TrainSchedulingManage = () =>
  BookingStaff(FREIGHT_PERMS.trainScheduling.manage);

export const FleetView = () => BookingStaff(FREIGHT_PERMS.fleet.view);

export const FleetManage = () => BookingStaff(FREIGHT_PERMS.fleet.manage);

/** Org-administration endpoints (user mgmt, billing config, company CRUD, settings). */
export const FreightAdmin = () => BookingStaff(FREIGHT_PERMS.admin);
