import { Response } from 'express';
import { ErrorCode, ERROR_HTTP_STATUS } from '@saferoute/constants';

export function sendSuccess(res: Response, data: unknown, message = 'Request completed successfully', statusCode = 200) {
  return res.status(statusCode).json({
    success: true,
    message,
    data,
  });
}

export function sendError(
  res: Response,
  errorCode: ErrorCode | string,
  message: string,
  details?: Record<string, unknown>,
  statusCode?: number
) {
  const httpStatus = statusCode || (ERROR_HTTP_STATUS as Record<string, number>)[errorCode] || 500;
  return res.status(httpStatus).json({
    success: false,
    message,
    errorCode,
    details: details || {},
  });
}

export function sendPaginated<T>(
  res: Response,
  items: T[],
  total: number,
  page: number,
  limit: number,
  message = 'Request completed successfully'
) {
  return res.status(200).json({
    success: true,
    message,
    data: {
      items,
      page,
      limit,
      total,
      totalPages: Math.ceil(total / limit),
    },
  });
}
