/** * @param Status $status * * @return \DateTime */ protected function getStartDate(Status $status = null) { $jobContext = $this->stepExecution->getJobExecution()->getExecutionContext(); $initialSyncedTo = $jobContext->get(InitialSyncProcessor::INITIAL_SYNCED_TO); if ($initialSyncedTo) { return $initialSyncedTo; } // If connector has status use it's information for start date if ($status) { $data = $status->getData(); if (empty($data[AbstractInitialProcessor::SKIP_STATUS])) { if (!empty($data[self::LAST_SYNC_KEY])) { return new \DateTime($data[self::LAST_SYNC_KEY], new \DateTimeZone('UTC')); } return clone $status->getDate(); } } // If there is no status and LAST_SYNC_KEY is present in contexts use it $lastSyncDate = $this->stepExecution->getExecutionContext()->get(self::LAST_SYNC_KEY); if ($lastSyncDate) { return $lastSyncDate; } elseif ($jobContext->get(self::LAST_SYNC_KEY)) { return $jobContext->get(self::LAST_SYNC_KEY); } return new \DateTime('now', new \DateTimeZone('UTC')); }