diff --git a/database/factories/AbeConfigurationFactory.php b/database/factories/AbeConfigurationFactory.php index 4c2423828..34f427141 100644 --- a/database/factories/AbeConfigurationFactory.php +++ b/database/factories/AbeConfigurationFactory.php @@ -23,7 +23,7 @@ $factory->define(\ProcessMaker\Model\AbeConfiguration::class, function (Faker $f 'ABE_UPDATE_DATE' => $faker->dateTime(), 'ABE_SUBJECT_FIELD' => '', 'ABE_MAILSERVER_OR_MAILCURRENT' => 0, - 'ABE_CUSTOM_GRID' => '', + 'ABE_CUSTOM_GRID' => serialize([]), 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, 'ABE_ACTION_BODY_FIELD' => '', 'ABE_EMAIL_SERVER_RECEIVER_UID' => '' diff --git a/tests/unit/workflow/engine/classes/ActionsByEmailCoreClassTest.php b/tests/unit/workflow/engine/classes/ActionsByEmailCoreClassTest.php new file mode 100644 index 000000000..f3ff0dd3a --- /dev/null +++ b/tests/unit/workflow/engine/classes/ActionsByEmailCoreClassTest.php @@ -0,0 +1,534 @@ +get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + //assertion Exception + $this->expectException(Exception::class); + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, []); + } + + /** + * This test checks if the sendActionsByEmail method handles an undefined configuration. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_if_abe_configuration_is_undefined() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $abeConfiguration = [ + 'ABE_EMAIL_SERVER_UID' => '' + ]; + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $result = $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + + $this->assertNull($result); + } + + /** + * This test checks if the sendActionsByEmail method throws an exception if + * the task properties do not exist. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_with_exception_if_task_property_is_undefined() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => '', + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'CUSTOM', + 'ABE_CUSTOM_GRID' => serialize([]) + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + //assertion Exception + $this->expectException(Exception::class); + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + } + + /** + * This test checks if the sendActionsByEmail method throws an exception if the + * email address is empty. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_with_exception_if_email_to_is_empty() + { + $user = factory(User::class)->create([ + 'USR_EMAIL' => '' + ]); + + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'CUSTOM', + 'ABE_CUSTOM_GRID' => serialize([]), + 'ABE_EMAIL_FIELD' => '' + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $result = $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + + $this->assertNull($result); + } + + /** + * This test checks if the sendActionsByEmail method throws an exception if + * the email type is empty. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_with_exception_if_email_type_is_empty() + { + $user = factory(User::class)->create(); + + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => '', + 'ABE_CUSTOM_GRID' => serialize([]), + 'ABE_EMAIL_FIELD' => '' + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $result = $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + + $this->assertNull($result); + } + + /** + * This test verifies if the sendActionsByEmail method supports the 'CUSTOM' setting. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_custom() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'CUSTOM', + 'ABE_CUSTOM_GRID' => serialize([]) + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + $result = $this->actionsByEmailCoreClass->getAbeRequest(); + + $this->assertArrayHasKey('ABE_REQ_UID', $result); + } + + /** + * This test verifies if the sendActionsByEmail method supports the 'RESPONSE' setting. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_response() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'RESPONSE', + 'ABE_CUSTOM_GRID' => serialize([]), + 'ABE_EMAIL_SERVER_RECEIVER_UID' => $emailServer->MESS_UID + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + $result = $this->actionsByEmailCoreClass->getAbeRequest(); + + $this->assertArrayHasKey('ABE_REQ_UID', $result); + } + + /** + * This test verifies if the sendActionsByEmail method supports the 'FIELD' setting. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_link() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'LINK', + 'ABE_CUSTOM_GRID' => serialize([]), + 'ABE_EMAIL_SERVER_RECEIVER_UID' => $emailServer->MESS_UID + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + $result = $this->actionsByEmailCoreClass->getAbeRequest(); + + $this->assertArrayHasKey('ABE_REQ_UID', $result); + } + + /** + * This test verifies if the sendActionsByEmail method supports the 'FIELD' setting. + * @test + * @covers \ActionsByEmailCoreClass::sendActionsByEmail + */ + public function it_should_test_send_actions_by_email_field() + { + $user = User::where('USR_UID', '=', '00000000000000000000000000000001') + ->get() + ->first(); + $process = factory(Process::class)->create(); + $task = factory(Task::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $dynaform = factory(Dynaform::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + $emailServer = factory(ProcessMaker\Model\EmailServerModel::class)->create(); + $abeConfiguration = factory(AbeConfiguration::class)->create([ + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'DYN_UID' => $dynaform->DYN_UID, + 'ABE_EMAIL_SERVER_UID' => $emailServer->MESS_UID, + 'ABE_TYPE' => 'FIELD', + 'ABE_CUSTOM_GRID' => serialize([]), + 'ABE_EMAIL_SERVER_RECEIVER_UID' => $emailServer->MESS_UID + ]); + $abeConfiguration = $abeConfiguration->toArray(); + + $application = factory(Application::class)->create([ + 'PRO_UID' => $process->PRO_UID + ]); + + $delegation = factory(Delegation::class)->create([ + 'APP_UID' => $application->APP_UID, + 'PRO_UID' => $process->PRO_UID, + 'TAS_UID' => $task->TAS_UID, + 'USR_UID' => $user->USR_UID + ]); + + $data = [ + 'TAS_UID' => $task->TAS_UID, + 'APP_UID' => $application->APP_UID, + 'DEL_INDEX' => $delegation->DEL_INDEX, + 'USR_UID' => $user->USR_UID, + 'PREVIOUS_USR_UID' => $user->USR_UID + ]; + $data = (object) $data; + + $_SERVER["REQUEST_URI"] = ''; + + $this->actionsByEmailCoreClass = new ActionsByEmailCoreClass(); + $this->actionsByEmailCoreClass->setUser($user->USR_UID); + $this->actionsByEmailCoreClass->setIndex($delegation->DEL_INDEX); + $this->actionsByEmailCoreClass->sendActionsByEmail($data, $abeConfiguration); + $result = $this->actionsByEmailCoreClass->getAbeRequest(); + + $this->assertArrayHasKey('ABE_REQ_UID', $result); + } +} diff --git a/tests/unit/workflow/engine/classes/WsBaseTest.php b/tests/unit/workflow/engine/classes/WsBaseTest.php index 3c7a1ffb5..c88f56795 100755 --- a/tests/unit/workflow/engine/classes/WsBaseTest.php +++ b/tests/unit/workflow/engine/classes/WsBaseTest.php @@ -12,7 +12,6 @@ use ProcessMaker\Model\Process; use ProcessMaker\Model\Task; use ProcessMaker\Model\User; use ProcessMaker\Model\UserReporting; -use ProcessMaker\Util\WsMessageResponse; use Tests\TestCase; /** @@ -22,6 +21,7 @@ use Tests\TestCase; */ class WsBaseTest extends TestCase { + use DatabaseTransactions; /** @@ -65,21 +65,20 @@ class WsBaseTest extends TestCase */ private function createNewCase($applicationNumber = null) { + $userUid = G::generateUniqueID(); + $processUid = G::generateUniqueID(); + $applicationUid = G::generateUniqueID(); if (empty($applicationNumber)) { $faker = Factory::create(); $applicationNumber = $faker->unique()->numberBetween(1, 10000000); } - $userUid = G::generateUniqueID(); - $processUid = G::generateUniqueID(); - $taskUid = G::generateUniqueID(); - $applicationUid = G::generateUniqueID(); $appData = [ 'SYS_LANG' => 'en', 'SYS_SKIN' => 'neoclassic', 'SYS_SYS' => 'workflow', - 'APPLICATION' => G::generateUniqueID(), - 'PROCESS' => G::generateUniqueID(), + 'APPLICATION' => $applicationUid, + 'PROCESS' => $processUid, 'TASK' => '', 'INDEX' => 2, 'USER_LOGGED' => $userUid, @@ -108,16 +107,9 @@ class WsBaseTest extends TestCase ]); $result = new stdClass(); - $result->userUid = $userUid; - $result->processUid = $processUid; - $result->taskUid = $taskUid; - $result->applicationUid = $applicationUid; - $result->applicationNumber = $applicationNumber; - $result->appData = $appData; + $result->application = $application; $result->user = $user; $result->process = $process; - $result->task = $task; - $result->application = $application; return $result; } @@ -229,7 +221,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = $emailServer->MESS_ACCOUNT; $cc = ""; @@ -269,7 +261,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = ""; $cc = ""; @@ -308,7 +300,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = $emailServer->MESS_ACCOUNT; $cc = ""; @@ -347,7 +339,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = ""; $cc = ""; @@ -386,7 +378,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = $emailServer->MESS_ACCOUNT; $cc = ""; @@ -425,7 +417,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = ""; $cc = ""; @@ -464,7 +456,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $emailServer->MESS_ACCOUNT; $to = ""; $cc = ""; @@ -644,7 +636,7 @@ class WsBaseTest extends TestCase $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); //parameters - $appUid = $case->applicationUid; + $appUid = $case->application->APP_UID; $from = $faker->email; $to = ""; $cc = ""; @@ -659,7 +651,131 @@ class WsBaseTest extends TestCase $result = $wsBase->sendMessage($appUid, $from, $to, $cc, $bcc, $subject, $templateName, $appFields); //assertions - $this->assertInstanceOf(WsMessageResponse::class, $result); + $this->assertInstanceOf(WsResponse::class, $result); + } + + /** + * This test ensures the response when the default configuration does not exist. + * @test + * @covers WsBase::sendMessage + */ + public function it_should_test_an_send_message_without_default_configuration() + { + //data + $emailServer = $this->createEmailServer(); + $case = $this->createNewCase(); + $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); + + //parameters + $appUid = $case->application->APP_UID; + $from = $emailServer->MESS_ACCOUNT; + $to = $emailServer->MESS_ACCOUNT; + $cc = ""; + $bcc = ""; + $subject = "test"; + $templateName = basename($template->PRF_PATH); + $appFields = []; + $attachment = []; + $showMessage = true; + $delIndex = 0; + $config = []; + $gmail = 0; + $appMsgType = ''; + + //for empty configuration + EmailServerModel::truncate(); + + $wsBase = new WsBase(); + $result = $wsBase->sendMessage($appUid, $from, $to, $cc, $bcc, $subject, $templateName, $appFields, $attachment, $showMessage, $delIndex, $config, $gmail, $appMsgType); + + //assertions + $this->assertObjectHasAttribute('status_code', $result); + $this->assertObjectHasAttribute('message', $result); + $this->assertObjectHasAttribute('timestamp', $result); + $this->assertObjectHasAttribute('extraParams', $result); + $this->assertEquals(29, $result->status_code); + } + + /** + * This test ensures the response when the template is not found. + * @test + * @covers WsBase::sendMessage + */ + public function it_should_test_an_send_message_missing_template() + { + //data + $emailServer = $this->createEmailServer(); + $case = $this->createNewCase(); + $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); + + //parameters + $appUid = $case->application->APP_UID; + $from = $emailServer->MESS_ACCOUNT; + $to = $emailServer->MESS_ACCOUNT; + $cc = ""; + $bcc = ""; + $subject = "test"; + $templateName = basename($template->PRF_PATH); + $appFields = []; + $attachment = []; + $showMessage = true; + $delIndex = 0; + $config = $emailServer->toArray(); + $gmail = 0; + $appMsgType = ''; + + //for a missing template + $templateName = 'MissingFile'; + G::rm_dir(PATH_DATA_SITE . 'mailTemplates'); + + $wsBase = new WsBase(); + $result = $wsBase->sendMessage($appUid, $from, $to, $cc, $bcc, $subject, $templateName, $appFields, $attachment, $showMessage, $delIndex, $config, $gmail, $appMsgType); + + //assertions + $this->assertObjectHasAttribute('status_code', $result); + $this->assertObjectHasAttribute('message', $result); + $this->assertObjectHasAttribute('timestamp', $result); + $this->assertObjectHasAttribute('extraParams', $result); + $this->assertEquals(28, $result->status_code); + } + + /** + * This test ensures the response when there is an exception. + * @test + * @covers WsBase::sendMessage + */ + public function it_should_test_an_send_message_when_appears_an_exception() + { + //data + $emailServer = $this->createEmailServer(); + $case = $this->createNewCase(); + $template = $this->createTemplate($case->process->PRO_UID, $case->user->USR_UID); + + //parameters + $appUid = null; + $from = $emailServer->MESS_ACCOUNT; + $to = $emailServer->MESS_ACCOUNT; + $cc = ""; + $bcc = ""; + $subject = "test"; + $templateName = basename($template->PRF_PATH); + $appFields = []; + $attachment = []; + $showMessage = true; + $delIndex = 0; + $config = $emailServer->toArray(); + $gmail = 0; + $appMsgType = ''; + + $wsBase = new WsBase(); + $result = $wsBase->sendMessage($appUid, $from, $to, $cc, $bcc, $subject, $templateName, $appFields, $attachment, $showMessage, $delIndex, $config, $gmail, $appMsgType); + + //assertions + $this->assertObjectHasAttribute('status_code', $result); + $this->assertObjectHasAttribute('message', $result); + $this->assertObjectHasAttribute('timestamp', $result); + $this->assertObjectHasAttribute('extraParams', $result); + $this->assertEquals(100, $result->status_code); } /** @@ -680,7 +796,7 @@ class WsBaseTest extends TestCase ]); $_SESSION["APPLICATION"] = $delegation->APP_UID; $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->APP_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->APP_UID); $this->assertEquals($ws->getFlagSameCase(), true); $this->assertNotEmpty($response); } @@ -695,7 +811,7 @@ class WsBaseTest extends TestCase { $delegation = factory(Delegation::class)->states('foreign_keys')->create(); $ws = new WsBase(); - $response = (object)$ws->cancelCase('', $delegation->DE_INDEX, $delegation->URS_UID); + $response = (object) $ws->cancelCase('', $delegation->DE_INDEX, $delegation->URS_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_REQUIRED_FIELD") . ' caseUid'); } @@ -718,7 +834,7 @@ class WsBaseTest extends TestCase 'APP_UID' => $application->APP_UID, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_CASE_IN_STATUS") . ' DRAFT'); @@ -732,7 +848,7 @@ class WsBaseTest extends TestCase 'APP_UID' => $application->APP_UID, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_CASE_IN_STATUS") . ' COMPLETED'); @@ -746,7 +862,7 @@ class WsBaseTest extends TestCase 'APP_UID' => $application->APP_UID, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DE_INDEX, $delegation->URS_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_CASE_IN_STATUS") . ' CANCELLED'); } @@ -768,7 +884,7 @@ class WsBaseTest extends TestCase 'APP_UID' => $application->APP_UID, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, '', $delegation->USR_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, '', $delegation->USR_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_REQUIRED_FIELD") . ' delIndex'); } @@ -791,7 +907,7 @@ class WsBaseTest extends TestCase 'DEL_THREAD_STATUS' => 'CLOSED' ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, ''); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, ''); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_CASE_DELEGATION_ALREADY_CLOSED")); } @@ -813,7 +929,7 @@ class WsBaseTest extends TestCase 'APP_UID' => $application->APP_UID, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, ''); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, ''); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_REQUIRED_FIELD") . ' userUid'); } @@ -857,7 +973,7 @@ class WsBaseTest extends TestCase ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->USR_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->USR_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, G::LoadTranslation("ID_CASE_CANCELLED_PARALLEL")); } @@ -904,7 +1020,7 @@ class WsBaseTest extends TestCase ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->USR_UID); + $response = (object) $ws->cancelCase($delegation->APP_UID, $delegation->DEL_INDEX, $delegation->USR_UID); $this->assertNotEmpty($response); $this->assertObjectHasAttribute('status_code', $response); $this->assertEquals($response->message, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY")); @@ -969,7 +1085,7 @@ class WsBaseTest extends TestCase ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($delegation->APP_UID, null, null); + $response = (object) $ws->cancelCase($delegation->APP_UID, null, null); $this->assertNotEmpty($response); $this->assertObjectHasAttribute('status_code', $response); $this->assertEquals($response->message, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY")); @@ -1002,7 +1118,7 @@ class WsBaseTest extends TestCase 'DEL_INDEX' => 2, ]); $ws = new WsBase(); - $response = (object)$ws->cancelCase($fakeApp, $delegation->DEL_INDEX, $delegation->USR_UID); + $response = (object) $ws->cancelCase($fakeApp, $delegation->DEL_INDEX, $delegation->USR_UID); $this->assertEquals($response->status_code, 100); $this->assertEquals($response->message, "The Application row '$fakeApp' doesn't exist!"); } diff --git a/tests/unit/workflow/engine/classes/WsResponseTest.php b/tests/unit/workflow/engine/classes/WsResponseTest.php new file mode 100644 index 000000000..33f5fa2d6 --- /dev/null +++ b/tests/unit/workflow/engine/classes/WsResponseTest.php @@ -0,0 +1,86 @@ +wsResponse = new WsResponse(0, ''); + + //assert + $actual = $this->wsResponse->getExtraParam(''); + $this->assertEmpty($actual); + + //assert + $actual = $this->wsResponse->getExtraParam('test'); + $this->assertEmpty($actual); + + //assert + $expected = 'test'; + $this->wsResponse->addExtraParam('test', $expected); + $actual = $this->wsResponse->getExtraParam('test'); + $this->assertEquals($expected, $actual); + } + + /** + * This test the add extra param. + * @test + * @covers \WsResponse::addExtraParam + */ + public function it_should_test_add_extra_param() + { + $this->wsResponse = new WsResponse(0, ''); + + //assert + $expected = 'test'; + $this->wsResponse->addExtraParam('test', $expected); + $actual = $this->wsResponse->getExtraParam('test'); + $this->assertEquals($expected, $actual); + } + + /** + * This test a get payload string. + * @test + * @covers \WsResponse::getPayloadString + */ + public function it_should_test_get_payload_string() + { + $this->wsResponse = new WsResponse(0, ''); + + //assert + $actual = $this->wsResponse->getPayloadString('test'); + $this->assertContains('test', $actual); + } + + /** + * @test + * @covers \WsResponse::getPayloadArray + */ + public function it_should_test_payload_array() + { + $this->wsResponse = new WsResponse(0, ''); + + //assert + $actual = $this->wsResponse->getPayloadArray(); + $this->assertArrayHasKey('status_code', $actual); + $this->assertArrayHasKey('message', $actual); + $this->assertArrayHasKey('timestamp', $actual); + } +} diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index e3e579735..6c17e0266 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -437,18 +437,6 @@ class ActionsByEmailCoreClass extends PMPlugin return $emailSetup; } - /** - * Define the properties in the task related the action by email configuration - * - * @return void - */ - private function defineTaskAbeProperties() - { - $actionEmailTable = new AbeConfiguration(); - $properties = $actionEmailTable->getTaskConfiguration($this->getCasePropertiesKey('PRO_UID'), $this->getTask()); - $this->setTaskAbeProperties($properties); - } - /** * Define the email from * @@ -623,79 +611,94 @@ class ActionsByEmailCoreClass extends PMPlugin self::validateAndSetValues($data); $emailServerSetup = $this->getEmailServer($dataAbe['ABE_EMAIL_SERVER_UID']); - if (!empty($emailServerSetup)) { - $cases = new Cases(); - $caseFields = $cases->loadCase($this->getAppUid(), $this->getIndex()); - $this->setCaseProperties($caseFields); - $this->defineTaskAbeProperties(); - $caseFields['APP_DATA']['PRO_ID'] = $this->getItemAbeProperties('PRO_ID'); - $caseFields['APP_DATA']['TAS_ID'] = $this->getItemAbeProperties('TAS_ID'); - if (!empty($this->getTaskAbeProperties())) { - $this->defineEmailTo($this->getItemAbeProperties('ABE_EMAIL_FIELD'), $caseFields['APP_DATA']); - - if (!empty($this->getEmailTo())) { - $this->defineSubject($this->getItemAbeProperties('ABE_SUBJECT_FIELD'), $caseFields['APP_DATA']); - - $request = [ - 'ABE_REQ_UID' => '', - 'ABE_UID' => $this->getItemAbeProperties('ABE_UID'), - 'APP_UID' => $this->getAppUid(), - 'DEL_INDEX' => $this->getIndex(), - 'ABE_REQ_SENT_TO' => $this->getEmailTo(), - 'ABE_REQ_SUBJECT' => $this->getSubject(), - 'ABE_REQ_BODY' => '', - 'ABE_REQ_ANSWERED' => 0, - 'ABE_REQ_STATUS' => 'PENDING' - ]; - $this->setAbeRequest($request); - $this->registerRequest(); - - if (!empty($this->getItemAbeProperties('ABE_TYPE'))) { - // Email - $_SESSION['CURRENT_DYN_UID'] = $this->getItemAbeProperties('DYN_UID'); - $__ABE__ = ''; - - switch ($this->getItemAbeProperties('ABE_TYPE')) { - case 'CUSTOM': - $__ABE__ .= $this->getCustomTemplate(); - break; - case 'RESPONSE': - $this->defineReplyTo($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']); - $__ABE__ .= $this->getResponseTemplate(); - break; - case 'LINK': - $__ABE__ .= $this->getServicePathTemplate(); - break; - case 'FIELD': - $__ABE__ .= $this->getFieldTemplate(); - break; - } - $__ABE__ = preg_replace('/\/', '', $__ABE__); - $__ABE__ = preg_replace('/\]*\/>/', '', $__ABE__); - $__ABE__ = preg_replace('/]*>(.*?)<\/select>/is', "", $__ABE__); - $__ABE__ = preg_replace('/align=\"center\"/', '', $__ABE__); - $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', - $__ABE__); - $caseFields['APP_DATA']['__ABE__'] = $__ABE__; - - $this->defineEmailFrom($emailServerSetup); - $result = $this->abeSendMessage( - $this->getItemAbeProperties('ABE_TEMPLATE'), - $caseFields['APP_DATA'], - $emailServerSetup - ); - $request = []; - $request['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR'); - - $request['ABE_REQ_BODY'] = empty($result->getAppMessUid()) ? '' : AppMessage::getAppMsgBodyByKey($result->getAppMessUid()); - $this->addItemAbeRequest($request); - $this->registerRequest(); - } - } - } else { - throw new Exception('Task does not have an action by email configuration.'); - } + if (empty($emailServerSetup)) { + return; } + + $cases = new Cases(); + $caseFields = $cases->loadCase($this->getAppUid(), $this->getIndex()); + $this->setCaseProperties($caseFields); + + $actionEmailTable = new AbeConfiguration(); + $properties = $actionEmailTable->getTaskConfiguration($this->getCasePropertiesKey('PRO_UID'), $this->getTask()); + if (empty($properties)) { + throw new Exception('Task does not have an action by email configuration.'); + } + $this->setTaskAbeProperties($properties); + + $caseFields['APP_DATA']['PRO_ID'] = $this->getItemAbeProperties('PRO_ID'); + $caseFields['APP_DATA']['TAS_ID'] = $this->getItemAbeProperties('TAS_ID'); + + $this->defineEmailTo($this->getItemAbeProperties('ABE_EMAIL_FIELD'), $caseFields['APP_DATA']); + if (empty($this->getEmailTo())) { + return; + } + + $this->defineSubject($this->getItemAbeProperties('ABE_SUBJECT_FIELD'), $caseFields['APP_DATA']); + + $request = [ + 'ABE_REQ_UID' => '', + 'ABE_UID' => $this->getItemAbeProperties('ABE_UID'), + 'APP_UID' => $this->getAppUid(), + 'DEL_INDEX' => $this->getIndex(), + 'ABE_REQ_SENT_TO' => $this->getEmailTo(), + 'ABE_REQ_SUBJECT' => $this->getSubject(), + 'ABE_REQ_BODY' => '', + 'ABE_REQ_ANSWERED' => 0, + 'ABE_REQ_STATUS' => 'PENDING' + ]; + $this->setAbeRequest($request); + $this->registerRequest(); + + if (empty($this->getItemAbeProperties('ABE_TYPE'))) { + return; + } + // Email + $_SESSION['CURRENT_DYN_UID'] = $this->getItemAbeProperties('DYN_UID'); + + $__ABE__ = ''; + switch ($this->getItemAbeProperties('ABE_TYPE')) { + case 'CUSTOM': + $__ABE__ .= $this->getCustomTemplate(); + break; + case 'RESPONSE': + $this->defineReplyTo($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']); + $__ABE__ .= $this->getResponseTemplate(); + break; + case 'LINK': + $__ABE__ .= $this->getServicePathTemplate(); + break; + case 'FIELD': + $__ABE__ .= $this->getFieldTemplate(); + break; + } + $__ABE__ = preg_replace('/\/', '', $__ABE__); + $__ABE__ = preg_replace('/\]*\/>/', '', $__ABE__); + $__ABE__ = preg_replace('/]*>(.*?)<\/select>/is', "", $__ABE__); + $__ABE__ = preg_replace('/align=\"center\"/', '', $__ABE__); + $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', $__ABE__); + + $caseFields['APP_DATA']['__ABE__'] = $__ABE__; + + $this->defineEmailFrom($emailServerSetup); + + $params = [ + $this->getItemAbeProperties('ABE_TEMPLATE'), + $caseFields['APP_DATA'], + $emailServerSetup + ]; + $result = $this->abeSendMessage(...$params); + + $request = [ + 'ABE_REQ_STATUS' => $result->status_code == 0 ? 'SENT' : 'ERROR', + 'ABE_REQ_BODY' => '', + ]; + if (!empty($result->getExtraParam('AppMessUid'))) { + $request['ABE_REQ_BODY'] = AppMessage::getAppMsgBodyByKey($result->getExtraParam('AppMessUid')); + } + + $this->addItemAbeRequest($request); + $this->registerRequest(); } catch (Exception $error) { throw $error; } diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index 898b2af56..fff4ae0c2 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -8,7 +8,6 @@ use ProcessMaker\ChangeLog\ChangeLog; use ProcessMaker\Core\JobsManager; use ProcessMaker\Core\System; use ProcessMaker\Model\Delegation; -use ProcessMaker\Util\WsMessageResponse; class WsBase { @@ -910,6 +909,7 @@ class WsBase ) { try { + $setup = []; /*----------------------------------********---------------------------------*/ if (!empty($config)) { @@ -972,9 +972,7 @@ class WsBase if (!file_exists($fileTemplate)) { $data['FILE_TEMPLATE'] = $fileTemplate; - $result = new WsResponse(28, G::LoadTranslation('ID_TEMPLATE_FILE_NOT_EXIST', SYS_LANG, $data)); - - return $result; + return new WsResponse(28, G::LoadTranslation('ID_TEMPLATE_FILE_NOT_EXIST', SYS_LANG, $data)); } if ($appFields == null) { @@ -1002,45 +1000,46 @@ class WsBase (preg_match("/^.+\.html?$/i", $fileTemplate)) ? true : false, isset($fieldsCase['APP_NUMBER']) ? $fieldsCase['APP_NUMBER'] : 0, isset($fieldsCase['PRO_ID']) ? $fieldsCase['PRO_ID'] : 0, - $this->getTaskId() ?$this->getTaskId():(isset($oldFields['TAS_ID'])? $oldFields['TAS_ID'] : 0) + $this->getTaskId() ? $this->getTaskId() : (isset($oldFields['TAS_ID']) ? $oldFields['TAS_ID'] : 0) ); - $result = ""; - if ($gmail != 1) { - // Create always the record in APP_MESSAGE table + if ($gmail === 1) { + return new WsResponse(0, G::loadTranslation('ID_PMGMAIL')); + } + + // Create always the record in APP_MESSAGE table + $spool = new SpoolRun(); + $spool->setConfig($setup); + $spool->create($messageArray); + + // Get the data of the record created + $fileData = $spool->getFileData(); + $fileData['spoolId'] = $spool->getSpoolId(); + + // Create the closure and send the required data + $closure = function() use ($setup, $fileData, $gmail, $to) { $spool = new SpoolRun(); $spool->setConfig($setup); - $spool->create($messageArray); - - // Get the data of the record created - $fileData = $spool->getFileData(); - $fileData['spoolId'] = $spool->getSpoolId(); - - // Create the closure and send the required data - $closure = function() use ($setup, $fileData, $gmail, $to) { - $spool = new SpoolRun(); - $spool->setConfig($setup); - $spool->setSpoolId($fileData['spoolId']); - $spool->setFileData($fileData); - $spool->sendMail(); - return $spool; - }; - $result = new WsMessageResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); - switch ($appMsgType) { - case WsBase::MESSAGE_TYPE_EMAIL_EVENT: - case WsBase::MESSAGE_TYPE_PM_FUNCTION: - JobsManager::getSingleton()->dispatch('EmailEvent', $closure); - break; - default : - $spool = $closure(); - if ($spool->status == 'sent') { - $result = new WsMessageResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); - $result->setAppMessUid($spool->getSpoolId()); - } else { - $result = new WsResponse(29, $spool->status . ' ' . $spool->error . PHP_EOL . print_r($setup, 1)); - } - break; - } + $spool->setSpoolId($fileData['spoolId']); + $spool->setFileData($fileData); + $spool->sendMail(); + return $spool; + }; + switch ($appMsgType) { + case WsBase::MESSAGE_TYPE_EMAIL_EVENT: + case WsBase::MESSAGE_TYPE_PM_FUNCTION: + JobsManager::getSingleton()->dispatch('EmailEvent', $closure); + $result = new WsResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + break; + default : + $spool = $closure(); + if ($spool->status == 'sent') { + $result = new WsResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + $result->addExtraParam('AppMessUid', $spool->getSpoolId()); + } else { + $result = new WsResponse(29, $spool->status . ' ' . $spool->error . PHP_EOL . print_r($setup, 1)); + } + break; } return $result; } catch (Exception $e) { diff --git a/workflow/engine/classes/WsResponse.php b/workflow/engine/classes/WsResponse.php index 70add2778..67d9aba30 100644 --- a/workflow/engine/classes/WsResponse.php +++ b/workflow/engine/classes/WsResponse.php @@ -43,10 +43,11 @@ class WsResponse * 36 ID_CASE_COULD_NOT_REASSIGNED * * 100 Exception - */ + */ public $status_code = 0; public $message = ''; public $timestamp = ''; + private $extraParams = []; /** * Function __construct @@ -56,11 +57,31 @@ class WsResponse * @param string $message * @return void */ - function __construct ($status, $message) + public function __construct($status, $message) { $this->status_code = $status; $this->message = $message; - $this->timestamp = date( 'Y-m-d H:i:s' ); + $this->timestamp = date('Y-m-d H:i:s'); + } + + /** + * Get extra parameters for message response. + * @return mixed + */ + public function getExtraParam(string $name) + { + return isset($this->extraParams[$name]) ? $this->extraParams[$name] : ''; + } + + /** + * Add extra parameters for message response. + * @param string $name + * @param mixed $value + * @return void + */ + public function addExtraParam(string $name, $value): void + { + $this->extraParams[$name] = $value; } /** @@ -69,13 +90,12 @@ class WsResponse * @param string $operation * @return string */ - function getPayloadString ($operation) + public function getPayloadString($operation) { $res = "<$operation>\n"; $res .= "" . $this->status_code . ""; $res .= "" . $this->message . ""; $res .= "" . $this->timestamp . ""; - // $res .= "" . $this->timestamp . ""; $res .= "<$operation>"; return $res; } @@ -85,9 +105,8 @@ class WsResponse * * @return array */ - function getPayloadArray () + public function getPayloadArray() { - return array ("status_code" => $this->status_code,'message' => $this->message,'timestamp' => $this->timestamp - ); + return ["status_code" => $this->status_code, 'message' => $this->message, 'timestamp' => $this->timestamp]; } } diff --git a/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php b/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php deleted file mode 100644 index ec6a1f92c..000000000 --- a/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php +++ /dev/null @@ -1,32 +0,0 @@ -appMessUid; - } - - /** - * Set the appMessUid - * - * @param string $v - * @return void - */ - public function setAppMessUid($v) - { - $this->appMessUid = $v; - } -} -