58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { Criteria as BaseCriteria, Filters, type FiltersPrimitives, Order } from "./codelytv";
|
|
import { INITIAL_PAGE_INDEX, INITIAL_PAGE_SIZE } from "./defaults";
|
|
|
|
export class Criteria extends BaseCriteria {
|
|
/**
|
|
* Creates a new Criteria instance.
|
|
*
|
|
* @param quickSearch - 'Quicksearch' field.
|
|
* @param filters - The filters to apply.
|
|
* @param order - The order to apply.
|
|
* @param pageSize - The size of the page.
|
|
* @param pageNumber - The number of the page.
|
|
*
|
|
*/
|
|
|
|
protected constructor(
|
|
public readonly filters: Filters,
|
|
public readonly order: Order,
|
|
public readonly pageSize: number,
|
|
public readonly pageNumber: number,
|
|
public readonly quickSearch?: string //Texto libre para búsqueda rápida
|
|
) {
|
|
super(filters, order, pageSize, pageNumber);
|
|
}
|
|
|
|
static fromPrimitives(
|
|
filters: FiltersPrimitives[],
|
|
orderBy: string | null,
|
|
orderType: string | null,
|
|
pageSize: number | null,
|
|
pageNumber: number | null,
|
|
quickSearch?: string | null
|
|
): Criteria {
|
|
return new Criteria(
|
|
Filters.fromPrimitives(filters),
|
|
Order.fromPrimitives(orderBy, orderType),
|
|
pageSize ?? INITIAL_PAGE_SIZE,
|
|
pageNumber ?? INITIAL_PAGE_INDEX,
|
|
quickSearch ?? undefined
|
|
);
|
|
}
|
|
|
|
toPrimitives() {
|
|
return {
|
|
q: this.quickSearch ?? "",
|
|
filters: this.filters.toPrimitives(),
|
|
orderBy: this.order.orderBy.value,
|
|
orderType: this.order.orderType.value,
|
|
pageSize: this.pageSize,
|
|
pageNumber: this.pageNumber,
|
|
};
|
|
}
|
|
|
|
toJSON() {
|
|
return this.toPrimitives();
|
|
}
|
|
}
|