setDefaults([ 'orderBy' => 'date', 'order' => self::ORDER_DESC, 'dateRange' => new DateRange(), 'customers' => [], 'status' => [], ]); } public function addCustomer(Customer $customer): void { $this->customers[] = $customer; } public function setCustomers(array $customers): void { foreach ($customers as $customer) { $this->addCustomer($customer); } } /** * @return Customer[] */ public function getCustomers(): array { return $this->customers; } public function hasCustomers(): bool { return !empty($this->customers); } public function hasStatus(): bool { return !empty($this->status); } public function getStatus(): array { return $this->status; } /** * @param string[] $status */ public function setStatus(array $status): void { foreach ($status as $s) { $this->addStatus($s); } } public function addStatus(string $status): void { if (!\in_array($status, [Invoice::STATUS_NEW, Invoice::STATUS_PENDING, Invoice::STATUS_PAID])) { throw new \InvalidArgumentException('Unknown invoice status given.'); } if (!\in_array($status, $this->status)) { $this->status[] = $status; } } }