diff --git a/database/factories/ElementTaskRelationFactory.php b/database/factories/ElementTaskRelationFactory.php new file mode 100644 index 000000000..67a53f9b7 --- /dev/null +++ b/database/factories/ElementTaskRelationFactory.php @@ -0,0 +1,13 @@ +define(\ProcessMaker\Model\ElementTaskRelation::class, function(Faker $faker) { + return [ + 'ETR_UID' => G::generateUniqueID(), + 'PRJ_UID' => G::generateUniqueID(), + 'ELEMENT_UID' => G::generateUniqueID(), + 'ELEMENT_TYPE' => 'bpmnEvent', + 'TAS_UID' => G::generateUniqueID(), + ]; +}); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/Model/TaskTest.php b/tests/unit/workflow/engine/src/ProcessMaker/Model/TaskTest.php index 49241b89a..b67dfe7a0 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/Model/TaskTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/Model/TaskTest.php @@ -5,6 +5,8 @@ namespace Tests\unit\workflow\engine\src\ProcessMaker\Model; use G; use Illuminate\Foundation\Testing\DatabaseTransactions; use ProcessMaker\Model\Delegation; +use ProcessMaker\Model\ElementTaskRelation; +use ProcessMaker\Model\Process; use ProcessMaker\Model\Task; use Tests\TestCase; @@ -124,4 +126,50 @@ class TaskTest extends TestCase $result .= ' 01 '. G::LoadTranslation('ID_SECOND_ABBREVIATE'); $this->assertEquals($taskInfo['DURATION'], $result); } + + /** + * It tests the setTaskDefTitle() method + * + * @covers \ProcessMaker\Model\Task::setTaskDefTitle() + * @test + */ + public function it_should_test_set_task_title_method() + { + $project = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'TAS_DEF_TITLE' => 'something' + ]); + $elementTask = factory(ElementTaskRelation::class)->create([ + 'PRJ_UID' => $project->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + ]); + + Task::setTaskDefTitle($elementTask->ELEMENT_UID, "Task title new"); + $query = Task::query(); + $query->select()->where('TASK.TAS_UID', $task->TAS_UID); + $res = $query->get()->values()->toArray(); + $this->assertEquals($res[0]['TAS_DEF_TITLE'], 'Task title new'); + } + + /** + * It tests the getTaskDefTitle() method + * + * @covers \ProcessMaker\Model\Task::getTaskDefTitle() + * @test + */ + public function it_should_test_get_task_def_title_method() + { + $project = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'TAS_DEF_TITLE' => 'something' + ]); + $elementTask = factory(ElementTaskRelation::class)->create([ + 'PRJ_UID' => $project->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + ]); + + $res = Task::getTaskDefTitle($elementTask->ELEMENT_UID); + + $this->assertEquals($res, $task->TAS_DEF_TITLE); + } } \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/MessageEventDefinition.php b/workflow/engine/src/ProcessMaker/BusinessModel/MessageEventDefinition.php index 5899b59b0..2571d081f 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/MessageEventDefinition.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/MessageEventDefinition.php @@ -1,6 +1,8 @@ unsetFields($arrayData); try { @@ -851,6 +856,7 @@ class TimerEvent throw new \Exception(\G::LoadTranslation("ID_REGISTRY_CANNOT_BE_UPDATED") . (($msg != "")? "\n" . $msg : "")); } + } catch (\Exception $e) { $cnn->rollback(); diff --git a/workflow/engine/src/ProcessMaker/Model/ElementTaskRelation.php b/workflow/engine/src/ProcessMaker/Model/ElementTaskRelation.php new file mode 100644 index 000000000..18fc35a26 --- /dev/null +++ b/workflow/engine/src/ProcessMaker/Model/ElementTaskRelation.php @@ -0,0 +1,14 @@ +join('ELEMENT_TASK_RELATION', function ($join) use ($evnUid) { + $join->on('ELEMENT_TASK_RELATION.TAS_UID', '=', 'TASK.TAS_UID') + ->where('ELEMENT_TASK_RELATION.ELEMENT_UID', '=', $evnUid); + }); + + $query->update(['TASK.TAS_DEF_TITLE' => $caseTitle]); + + return $query; + } + + /** + * Get the TAS_DEF_TITLE value + * + * @param string $evnUid + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public static function getTaskDefTitle($evnUid) + { + $query = Task::select(['TASK.TAS_DEF_TITLE']); + $query->join('ELEMENT_TASK_RELATION', function ($join) use ($evnUid) { + $join->on('ELEMENT_TASK_RELATION.TAS_UID', '=', 'TASK.TAS_UID') + ->where('ELEMENT_TASK_RELATION.ELEMENT_UID', '=', $evnUid); + }); + + return $query->get()->values()->toArray()['0']['TAS_DEF_TITLE']; + } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/MessageEventDefinition.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/MessageEventDefinition.php index bf1c11b56..268637155 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/MessageEventDefinition.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/MessageEventDefinition.php @@ -1,8 +1,9 @@ messageEventDefinition->getMessageEventDefinitions($prj_uid); - + foreach ($response as $index => $val){ + $response[$index]['tas_def_title'] = Task::getTaskDefTitle($response[$index]['evn_uid']); + } return $response; } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/TimerEvent.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/TimerEvent.php index a00d5a1c2..b496097c4 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/TimerEvent.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/TimerEvent.php @@ -1,8 +1,9 @@ timerEvent->getTimerEventByEvent($prj_uid, $evn_uid); - + $response["tas_def_title"] =Task::getTaskDefTitle($evn_uid); return \ProcessMaker\Util\DateTime::convertUtcToIso8601($response, $this->arrayFieldIso8601); } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());