contracts)) { $this->contracts = $this->runFactory('contracts'); } return $this->contracts; } protected array $units; public function units(): array { if (empty($this->units)) { $this->units = $this->runFactory('units'); } return $this->units; } protected function jsonComplement(): array { return [ 'amount' => $this->amount, 'start_date' => $this->startDate->format('Y-m-d'), 'end_date' => $this->endDate->format('Y-m-d'), 'valid_until' => $this->validUntil->format('Y-m-d'), 'state' => [ 'id' => $this->state, 'description' => Promotion\State::name($this->state) ], 'contracts' => $this->contracts() ?? [], 'units' => $this->units() ?? [] ]; } }