_createTaskReference($fileId, $brokerTaskId, $taskName); } catch (Exception $e) { Logging::error('Invalid request: ' . $e->getMessage()); throw $e; } } /** * Create a CeleryTasks object for a pending task * TODO: should we have a database layer class to handle Propel operations? * * @param $fileId int CcFiles identifier * @param $brokerTaskId int broker task identifier to so we can asynchronously * receive completed task messages * @param $taskName string broker task name * * @return CeleryTasks the created task * * @throws Exception * @throws PropelException */ protected function _createTaskReference($fileId, $brokerTaskId, $taskName) { $trackReferenceId = $this->createTrackReference($fileId); $task = new CeleryTasks(); $task->setDbTaskId($brokerTaskId); $task->setDbName($taskName); $utc = new DateTimeZone('UTC'); $task->setDbDispatchTime(new DateTime('now', $utc)); $task->setDbStatus(CELERY_PENDING_STATUS); $task->setDbTrackReference($trackReferenceId); $task->save(); return $task; } /** * Update a CeleryTasks object for a completed task * TODO: should we have a database layer class to handle Propel operations? * * @param $task CeleryTasks the completed CeleryTasks object * @param $status string Celery task status * * @throws Exception * @throws PropelException */ public function updateTask($task, $status) { $task->setDbStatus($status); $task->save(); } /** * Update a ThirdPartyTrackReferences object for a completed upload. * * Manipulation and use of the track object is left up to child implementations * * @param $task CeleryTasks the completed CeleryTasks object * @param $trackId int ThirdPartyTrackReferences identifier * @param $result mixed Celery task result message * @param $status string Celery task status * * @return ThirdPartyTrackReferences the updated ThirdPartyTrackReferences object * * @throws Exception * @throws PropelException */ public function updateTrackReference($task, $trackId, $result, $status) { static::updateTask($task, $status); $ref = ThirdPartyTrackReferencesQuery::create() ->findOneByDbId($trackId); if (is_null($ref)) { $ref = new ThirdPartyTrackReferences(); } $ref->setDbService(static::$_SERVICE_NAME); $utc = new DateTimeZone('UTC'); $ref->setDbUploadTime(new DateTime('now', $utc)); $ref->save(); return $ref; } }