import { FastifyReply } from 'fastify';

export function successResponse(reply: FastifyReply, data: unknown, statusCode = 200) {
  return reply.status(statusCode).send({
    success: true,
    data,
  });
}

export function errorResponse(reply: FastifyReply, message: string, statusCode = 400, details?: unknown) {
  return reply.status(statusCode).send({
    success: false,
    error: { message, details },
  });
}

export function paginatedResponse(
  reply: FastifyReply,
  data: unknown[],
  total: number,
  page: number,
  limit: number,
) {
  return reply.status(200).send({
    success: true,
    data,
    pagination: {
      total,
      page,
      limit,
      totalPages: Math.ceil(total / limit),
    },
  });
}

export function normalizeIgUsername(username: string): string {
  return username.toLowerCase().replace(/^@/, '').trim();
}

export function parseBidAmount(text: string): number | null {
  const cleaned = text.trim().replace(/[,.\s]/g, '');
  const match = cleaned.match(/^(\d+)\s*(tl|TL|₺)?$/);
  if (!match) return null;
  const amount = parseInt(match[1], 10);
  if (isNaN(amount) || amount <= 0) return null;
  return amount;
}

export function isClaimComment(text: string): boolean {
  const normalized = text.trim().toLowerCase();
  const claimWords = ['aldım', 'aldim', 'alıyorum', 'aliyorum', 'benim', 'benım'];
  return claimWords.some((word) => normalized === word);
}
