import { Injectable } from '@nestjs/common' @Injectable() export class SharedSaleInvoicePaginationService { normalize( page: number = 1, perPage: number = 10, defaultPerPage: number = 10, maxPerPage: number = 50, ) { const normalizedPageValue = Number(page ?? 1) const normalizedPage = Number.isFinite(normalizedPageValue) ? Math.max(1, Math.floor(normalizedPageValue)) : 1 const requestedPerPageValue = Number(perPage ?? defaultPerPage) const requestedPerPage = Number.isFinite(requestedPerPageValue) ? Math.max(1, Math.floor(requestedPerPageValue)) : defaultPerPage const normalizedPerPage = Math.min(requestedPerPage, maxPerPage) return { page: normalizedPage, perPage: normalizedPerPage, skip: (normalizedPage - 1) * normalizedPerPage, take: normalizedPerPage, } } }