export const MARKETING_PAGE_SIZES = [25, 50, 100] as const;

export function getMarketingPagination(total: number, requestedPage?: unknown, requestedSize?: unknown) {
  const size = Number(requestedSize);
  const pageSize = MARKETING_PAGE_SIZES.includes(size as 25 | 50 | 100) ? size : 25;
  const totalRows = Number.isSafeInteger(total) && total > 0 ? total : 0;
  const pageCount = Math.max(1, Math.ceil(totalRows / pageSize));
  const requested = Number(requestedPage);
  const page = Number.isSafeInteger(requested) && requested > 0 ? Math.min(requested, pageCount) : 1;
  return { page, pageSize, pageCount, total: totalRows };
}

export type MarketingPagination = ReturnType<typeof getMarketingPagination>;

export function marketingPaginationHref(query: string, page: number, pageSize: number) {
  const params = new URLSearchParams(query);
  params.set("visitsPage", String(page));
  params.set("visitsPageSize", String(pageSize));
  return `/kavenix?${params.toString()}`;
}
