existingFreightOrders as $freightOrder) { if ($freightOrder->getId() === $id) { return new FreightOrder( $freightOrder->getId(), $freightOrder->getShipFrom(), $freightOrder->getShipTo(), $freightOrder->getPickupDate(), $freightOrder->getDeliveryDeadline(), $freightOrder->getLoadDetails(), $freightOrder->getNotes(), $freightOrder->getFileAttachments(), $freightOrder->getDateCreated(), ); } } return null; } public function save(FreightOrder $freightOrder): FreightOrder { $id = $freightOrder->getId(); if ($id === null) { $id = $this->getNextId(); $freightOrder->setId($id); } $this->existingFreightOrders[$id] = $freightOrder; return new FreightOrder( $freightOrder->getId(), $freightOrder->getShipFrom(), $freightOrder->getShipTo(), $freightOrder->getPickupDate(), $freightOrder->getDeliveryDeadline(), $freightOrder->getLoadDetails(), $freightOrder->getNotes(), $freightOrder->getFileAttachments(), $freightOrder->getDateCreated(), ); } private function getNextId(): int { return count($this->existingFreightOrders); } }