Entpoint /project: enabling update/new activities for PUT method

This commit is contained in:
Erik Amaru Ortiz
2014-02-06 11:29:45 -04:00
parent e4bacb3ce6
commit 187ad19c84
2 changed files with 30 additions and 4 deletions

View File

@@ -206,8 +206,8 @@ class Bpmn extends Handler
public function addActivity($data)
{
if (empty($this->diagram)) {
throw new \Exception("Error: There is not an initialized diagram.");
if (! ($process = $this->getProcess("object"))) {
throw new \Exception(sprintf("Error: There is not an initialized diagram for Project with prj_uid: %s.", $this->getUid()));
}
// setting defaults
@@ -215,8 +215,8 @@ class Bpmn extends Handler
$activity = new Activity();
$activity->fromArray($data);
$activity->setPrjUid($this->project->getPrjUid());
$activity->setProUid($this->getProcess("object")->getProUid());
$activity->setPrjUid($this->getUid());
$activity->setProUid($process->getProUid());
$activity->save();
return $activity->getActUid();

View File

@@ -4,6 +4,7 @@ namespace Services\Api\ProcessMaker;
use Luracast\Restler\RestException;
use ProcessMaker\Services\Api;
use ProcessMaker\Adapter\Bpmn\Model as BpmnModel;
use ProcessMaker\Util\Hash;
/**
* Class Project
@@ -96,6 +97,31 @@ class Project extends Api
public function put($prjUid, $request_data)
{
try {
$projectData = $request_data;
$prjUid = $projectData["prj_uid"];
$diagram = isset($request_data["diagrams"]) && isset($request_data["diagrams"][0]) ? $request_data["diagrams"][0] : array();
$bwp = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($prjUid);
$result = array();
foreach ($diagram["activities"] as $activityData) {
$activityData = array_change_key_case($activityData, CASE_UPPER);
// activity exists ?
if ($activity = $bwp->getActivity($activityData["ACT_UID"])) {
// then update activity
$bwp->updateActivity($activityData["ACT_UID"], $activityData);
} else {
// if not exists then create it
$oldActUid = $activityData["ACT_UID"];
$actUid = Hash::generateUID();
$activityData["ACT_UID"] = $actUid;
$bwp->addActivity($activityData);
$result[] = array("object" => "activity", "new_uid" => $actUid, "old_uid" => $oldActUid);
}
}
//$result = BpmnModel::updateProject($prjUid, $request_data);