34 lines
795 B
TypeScript
34 lines
795 B
TypeScript
import { Slug } from "@/core/common/domain";
|
|
import { Collection } from "@repo/rdx-utils";
|
|
import { Tax } from "./tax";
|
|
|
|
export class TaxCollection extends Collection<Tax> {
|
|
constructor(items: Tax[] = []) {
|
|
super(items);
|
|
}
|
|
|
|
/**
|
|
|
|
Agrega un impuesto a la colección garantizando que el slug sea único. */
|
|
add(tax: Tax): void {
|
|
if (this.exists(tax.slug)) {
|
|
throw new Error(`(El impuesto con slug "${tax.slug.toString()}" ya existe.`);
|
|
}
|
|
this.add(tax);
|
|
}
|
|
|
|
/**
|
|
|
|
Verifica si un slug ya existe en la colección. */
|
|
exists(slug: Slug): boolean {
|
|
return this.some((tax) => tax.slug.equals(slug));
|
|
}
|
|
|
|
/**
|
|
|
|
Encuentra un impuesto por su slug. */
|
|
findBySlug(slug: Slug): Tax | undefined {
|
|
return this.find((tax) => tax.slug.equals(slug));
|
|
}
|
|
}
|