*/ public function clientFacing(array $record): array { return $this->allow($record, self::CLIENT_FIELDS); } /** @return array */ public function internal(array $record): array { return $this->allow($record, self::INTERNAL_FIELDS); } /** @return array{client:array,internal:array} */ public function map(array $record): array { return ['client' => $this->clientFacing($record), 'internal' => $this->internal($record)]; } /** @return array */ public function clientJobcard(array $record): array { $safe = $this->clientFacing($record); $ordered = []; foreach (['client_id','client_name','reference_no','status','priority','work_requested','created_at','completed_at','closed_at'] as $field) if (array_key_exists($field, $safe)) $ordered[$field] = $safe[$field]; return $ordered; } /** @return array */ public function internalJobcard(array $record): array { return $this->allow($record, self::INTERNAL_FIELDS); } /** @return array */ public function clientHistory(array $record): array { $safe = $this->clientFacing($record); $ordered = []; foreach (['client_id','reference_no','from_status','to_status','changed_at'] as $field) if (array_key_exists($field, $safe)) $ordered[$field] = $safe[$field]; return $ordered; } /** @return array */ public function internalHistory(array $record): array { return $this->allow($record, self::INTERNAL_FIELDS); } /** @return array */ public function clientActivity(array $record): array { return $this->clientFacing($record); } /** @return array */ public function internalActivity(array $record): array { return $this->allow($record, self::INTERNAL_FIELDS); } private function allow(array $record, array $fields): array { $result = []; foreach ($fields as $field) if (array_key_exists($field, $record)) $result[$field] = $record[$field]; return $result; } }