Web Entry 2.0 Rest - Generate Link EP
This commit is contained in:
davidcallizaya
2017-05-22 16:38:38 -04:00
parent a53f307644
commit c0f512891f
3 changed files with 116 additions and 0 deletions

View File

@@ -34,6 +34,8 @@ class WebEntryEventTest extends \WorkflowTestCase
'ID_INVALID_VALUE_CAN_NOT_BE_EMPTY({0})'); 'ID_INVALID_VALUE_CAN_NOT_BE_EMPTY({0})');
$this->setTranslation('ID_UNDEFINED_VALUE_IS_REQUIRED', $this->setTranslation('ID_UNDEFINED_VALUE_IS_REQUIRED',
'ID_UNDEFINED_VALUE_IS_REQUIRED({0})'); 'ID_UNDEFINED_VALUE_IS_REQUIRED({0})');
$this->setTranslation('ID_WEB_ENTRY_EVENT_DOES_NOT_EXIST',
'ID_WEB_ENTRY_EVENT_DOES_NOT_EXIST({0})');
} }
/** /**
@@ -579,6 +581,65 @@ class WebEntryEventTest extends \WorkflowTestCase
); );
} }
/**
* @covers ProcessMaker\BusinessModel\WebEntryEvent::generateLink
* @category HOR-3210:5
*/
public function testGenerateLinkSingleDefaultAnonymous()
{
$processUid = $this->processUid;
$entryEvents = $this->object->getWebEntryEvents($processUid);
$webEntry = $this->getWebEntry($entryEvents[0]);
$link = $this->object->generateLink($processUid, $entryEvents[0]['WEE_UID']);
$this->assertEquals($this->getSimpleWebEntryUrl($webEntry), $link);
}
/**
* @covers ProcessMaker\BusinessModel\WebEntryEvent::generateLink
* @category HOR-3210:5
*/
public function testGenerateLinkMultipleAnon()
{
$processUid = $this->processUid2;
$entryEvents = $this->object->getWebEntryEvents($processUid);
$this->assertCount(1, $entryEvents,
'Expected 1 event with web entry in process WebEntry2');
$criteria = new \Criteria();
$criteria->add(\BpmnEventPeer::PRJ_UID, $processUid);
$criteria->add(\BpmnEventPeer::EVN_NAME, 'simple start');
$event = \BpmnEventPeer::doSelectOne($criteria);
$data = [
'EVN_UID' => $event->getEvnUid(),
'ACT_UID' => $entryEvents[0]['ACT_UID'],
'WE_AUTHENTICATION' => 'ANONYMOUS',
'USR_UID' => $this->adminUid,
'WE_TYPE' => 'MULTIPLE',
'WEE_TITLE' => $event->getEvnUid(),
];
$this->object->create($processUid, $this->adminUid, $data);
$entryEvents2 = $this->object->getWebEntryEvents($processUid);
foreach ($entryEvents2 as $entryEvent) {
if ($entryEvent['EVN_UID'] === $event->getEvnUid()) {
break;
}
}
$webEntry = $this->getWebEntry($entryEvent);
$link = $this->object->generateLink($processUid, $entryEvent['WEE_UID']);
$this->assertEquals($this->getSimpleWebEntryUrl($webEntry), $link);
}
/**
* @covers ProcessMaker\BusinessModel\WebEntryEvent::generateLink
* @category HOR-3210:5
*/
public function testGenerateLinkForMissingWE()
{
$processUid = $this->processUid;
$this->expectException(\Exception::class);
$this->expectExceptionMessage('ID_WEB_ENTRY_EVENT_DOES_NOT_EXIST(WEE_UID)');
$link = $this->object->generateLink($processUid, 'INVALID-UID');
}
/** /**
* get a dynaform * get a dynaform
* @return type * @return type

View File

@@ -1073,4 +1073,42 @@ class WebEntryEvent
throw $e; throw $e;
} }
} }
/**
* Web Entry 2.0 Rest - Generate Link EP
*
* @category PROD-181,HOR-3210
* @link https://processmaker.atlassian.net/browse/PROD-181 Web Entry 2 Feature definition
* @link https://processmaker.atlassian.net/browse/HOR-3210 Generate link specification
* @group webentry2
*/
public function generateLink($prj_uid, $wee_uid)
{
$webEntryEvent = \WebEntryEventPeer::retrieveByPK($wee_uid);
if (empty($webEntryEvent)) {
throw new \Exception(
\G::LoadTranslation("ID_WEB_ENTRY_EVENT_DOES_NOT_EXIST", array("WEE_UID", $wee_uid))
);
}
$webEntry = \WebEntryPeer::retrieveByPK($webEntryEvent->getWeeWeUid());
if (empty($webEntryEvent)) {
throw new \Exception(
\G::LoadTranslation(
"ID_WEB_ENTRY_EVENT_DOES_NOT_EXIST",
array("WE_UID", $webEntryEvent->getWeeWeUid())
)
);
}
if ($webEntry->getWeLinkGeneration() === 'ADVANCED') {
$domain = $webEntry->getWeLinkDomain();
$url = $domain . "/sys".SYS_SYS."/".
$webEntry->getWeLinkLanguage()."/".
$webEntry->getWeLinkSkin()."/".$prj_uid;
return $url."/".$webEntry->getWeUid().'.php';
} else {
$http = (\G::is_https()) ? "https://" : "http://";
$url = $http.$_SERVER["HTTP_HOST"]."/sys".SYS_SYS."/".SYS_LANG."/".SYS_SKIN."/".$prj_uid;
return $url."/".$webEntry->getWeData();
}
}
} }

View File

@@ -11,6 +11,9 @@ use \Luracast\Restler\RestException;
*/ */
class WebEntryEvent extends Api class WebEntryEvent extends Api
{ {
/**
* @var \ProcessMaker\BusinessModel\WebEntryEvent $webEntryEvent
*/
private $webEntryEvent; private $webEntryEvent;
/** /**
@@ -140,5 +143,19 @@ class WebEntryEvent extends Api
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
/**
* @url GET /:prj_uid/web-entry-event/:wee_uid/generate-link
* @class AccessControl {@permission PM_FACTORY}
*
*/
public function generateLink($prj_uid, $wee_uid)
{
try {
$this->webEntryEvent->generateLink($prj_uid, $wee_uid);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
} }