37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { CurrencyCode, LanguageCode } from "@repo/rdx-ddd";
|
|
import { Collection } from "@repo/rdx-utils";
|
|
import { CustomerInvoiceItem } from "./customer-invoice-item";
|
|
|
|
export interface CustomerInvoiceItemsProps {
|
|
items?: CustomerInvoiceItem[];
|
|
languageCode: LanguageCode;
|
|
currencyCode: CurrencyCode;
|
|
}
|
|
|
|
export class CustomerInvoiceItems extends Collection<CustomerInvoiceItem> {
|
|
private _languageCode!: LanguageCode;
|
|
private _currencyCode!: CurrencyCode;
|
|
|
|
constructor(props: CustomerInvoiceItemsProps) {
|
|
const { items = [], languageCode, currencyCode } = props;
|
|
super(items);
|
|
this._languageCode = languageCode;
|
|
this._currencyCode = currencyCode;
|
|
}
|
|
|
|
public static create(props: CustomerInvoiceItemsProps): CustomerInvoiceItems {
|
|
return new CustomerInvoiceItems(props);
|
|
}
|
|
|
|
add(item: CustomerInvoiceItem): boolean {
|
|
// Antes de añadir un nuevo item, debo comprobar que el item a añadir
|
|
// tiene el mismo "currencyCode" y "languageCode" que la colección de items.
|
|
if (!this._languageCode.equals(item.languageCode) || !this._currencyCode.equals(item.currencyCode)) {
|
|
return false;
|
|
|
|
}
|
|
return super.add(item)
|
|
}
|
|
|
|
}
|