import { Slug } from "@/core/common/domain"; import { Collection } from "@repo/rdx-utils"; import { Tax } from "./tax"; export class TaxCollection extends Collection { 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)); } }