Usar type en común: Paginacion
This commit is contained in:
parent
934efde4c3
commit
95492e254a
3 changed files with 43 additions and 40 deletions
25
common.ts
25
common.ts
|
@ -15,3 +15,28 @@ export interface Paging {
|
||||||
*/
|
*/
|
||||||
PageSize: number;
|
PageSize: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Paginacion {
|
||||||
|
/**
|
||||||
|
* El número de la página. Empieza desde 1.
|
||||||
|
*/
|
||||||
|
number: number;
|
||||||
|
/**
|
||||||
|
* El tamaño de la página. Tiene un límite de 5000.
|
||||||
|
*/
|
||||||
|
size: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function paginacionToSearchParams(
|
||||||
|
paginacion: Paginacion | undefined,
|
||||||
|
searchParams: URLSearchParams
|
||||||
|
) {
|
||||||
|
if (paginacion) {
|
||||||
|
searchParams.set("pageSize", paginacion.size.toString());
|
||||||
|
searchParams.set("pageNumber", paginacion.number.toString());
|
||||||
|
} else {
|
||||||
|
// El máximo, según lo que retorna en 'Paging'
|
||||||
|
searchParams.set("pageSize", "5000");
|
||||||
|
searchParams.set("pageNumber", "1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
import { HOST, Paging } from "./common.js";
|
import {
|
||||||
|
HOST,
|
||||||
|
Paginacion,
|
||||||
|
paginacionToSearchParams,
|
||||||
|
Paging,
|
||||||
|
} from "./common.js";
|
||||||
|
|
||||||
export interface PreciosQuery {
|
export interface PriceByCustomerQuery {
|
||||||
paginacion?: {
|
paginacion?: Paginacion;
|
||||||
/**
|
|
||||||
* El número de la página. Empieza desde 1.
|
|
||||||
*/
|
|
||||||
number: number;
|
|
||||||
/**
|
|
||||||
* El tamaño de la página. Tiene un límite de 5000.
|
|
||||||
*/
|
|
||||||
size: number;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Precio {
|
export interface Precio {
|
||||||
|
@ -27,17 +23,10 @@ export interface PreciosResponse {
|
||||||
|
|
||||||
export async function getPricesByCustomer(
|
export async function getPricesByCustomer(
|
||||||
token: string,
|
token: string,
|
||||||
options: PreciosQuery
|
options: PriceByCustomerQuery
|
||||||
): Promise<PreciosResponse> {
|
): Promise<PreciosResponse> {
|
||||||
let searchParams = new URLSearchParams();
|
let searchParams = new URLSearchParams();
|
||||||
if (options.paginacion) {
|
paginacionToSearchParams(options.paginacion, searchParams);
|
||||||
searchParams.set("pageSize", options.paginacion.size.toString());
|
|
||||||
searchParams.set("pageNumber", options.paginacion.number.toString());
|
|
||||||
} else {
|
|
||||||
// El máximo, según lo que retorna en 'Paging'
|
|
||||||
searchParams.set("pageSize", "5000");
|
|
||||||
searchParams.set("pageNumber", "1");
|
|
||||||
}
|
|
||||||
const res = await fetch(
|
const res = await fetch(
|
||||||
`${HOST}/api/Aperture/PriceByCustomer?${searchParams.toString()}`,
|
`${HOST}/api/Aperture/PriceByCustomer?${searchParams.toString()}`,
|
||||||
{
|
{
|
||||||
|
|
27
product.ts
27
product.ts
|
@ -1,16 +1,12 @@
|
||||||
import { HOST, Paging } from "./common.js";
|
import {
|
||||||
|
HOST,
|
||||||
|
Paginacion,
|
||||||
|
paginacionToSearchParams,
|
||||||
|
Paging,
|
||||||
|
} from "./common.js";
|
||||||
|
|
||||||
export interface ProductosQuery {
|
export interface ProductosQuery {
|
||||||
paginacion?: {
|
paginacion?: Paginacion;
|
||||||
/**
|
|
||||||
* El número de la página. Empieza desde 1.
|
|
||||||
*/
|
|
||||||
number: number;
|
|
||||||
/**
|
|
||||||
* El tamaño de la página. Tiene un límite de 5000.
|
|
||||||
*/
|
|
||||||
size: number;
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
* Decide si solo traer los productos habilitados.
|
* Decide si solo traer los productos habilitados.
|
||||||
*/
|
*/
|
||||||
|
@ -61,14 +57,7 @@ export async function getProductos(
|
||||||
options: ProductosQuery
|
options: ProductosQuery
|
||||||
): Promise<ProductosResponse> {
|
): Promise<ProductosResponse> {
|
||||||
let searchParams = new URLSearchParams();
|
let searchParams = new URLSearchParams();
|
||||||
if (options.paginacion) {
|
paginacionToSearchParams(options.paginacion, searchParams);
|
||||||
searchParams.set("pageSize", options.paginacion.size.toString());
|
|
||||||
searchParams.set("pageNumber", options.paginacion.number.toString());
|
|
||||||
} else {
|
|
||||||
// El máximo, según lo que retorna en 'Paging'
|
|
||||||
searchParams.set("pageSize", "5000");
|
|
||||||
searchParams.set("pageNumber", "1");
|
|
||||||
}
|
|
||||||
if ("onlyEnabled" in options) {
|
if ("onlyEnabled" in options) {
|
||||||
searchParams.set("onlyEnabled", options.onlyEnabled ? "true" : "false");
|
searchParams.set("onlyEnabled", options.onlyEnabled ? "true" : "false");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue