This commit is contained in:
Fabio Guachalla
2019-09-10 15:11:18 -04:00
committed by Paula Quispe
parent 5344dc7f32
commit 90a8150bd7
13 changed files with 714 additions and 45 deletions

View File

@@ -7,6 +7,7 @@ use AbeConfigurationPeer;
use AbeRequests;
use AbeRequestsPeer;
use AbeResponsesPeer;
use ActionsByEmailCoreClass;
use AppDelegation;
use AppDelegationPeer;
use AppMessage;
@@ -18,6 +19,8 @@ use G;
use PmDynaform;
use PMLicensedFeatures;
use ProcessMaker\Core\System;
use ProcessMaker\Model\AbeConfiguration as AbeConfigurationModel;
use ProcessMaker\Model\EmailServerModel;
use ProcessMaker\Plugins\PluginRegistry;
use Publisher;
use ResultSet;
@@ -267,10 +270,10 @@ class ActionsByEmail
/**
* Get the information for the log.
*
*
* @param array $arrayData
* @return array
*
*
* @see ProcessMaker\Services\Api\ActionsByEmail->loadActionByEmail()
* @see workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php
* @link https://wiki.processmaker.com/3.3/Actions_by_Email
@@ -376,34 +379,27 @@ class ActionsByEmail
if (!isset($arrayData['REQ_UID'])) {
$arrayData['REQ_UID'] = '';
}
$abeRequest = new AbeRequests();
$dataRes = $abeRequest->getAbeRequest($arrayData['REQ_UID']);
$dataRes = AbeConfigurationModel::getAbeRequest($arrayData['REQ_UID']);
if (!empty($dataRes)) {
if (is_null($dataRes['DEL_FINISH_DATE'])) {
$emailServer = new EmailServer();
$criteria = $emailServer->getEmailServerCriteria();
$rsCriteria = EmailServerPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayConfigAux = $row;
$arrayConfigAux["SMTPSecure"] = $row["SMTPSECURE"];
}
$aSetup = (!empty($arrayConfigAux))? $arrayConfigAux : System::getEmailConfiguration();
$emailServer = new EmailServerModel();
$criteria = $emailServer->getEmailServer($dataRes['ABE_EMAIL_SERVER_UID']);
$setup = !empty($criteria) ? $criteria : $emailServer->getEmailServerDefault();
$spool = new SpoolRun();
$spool->setConfig($aSetup);
$spool->setConfig($setup);
$abeCore = new ActionsByEmailCoreClass();
$abeCore->setTaskAbeProperties([
'ABE_MAILSERVER_OR_MAILCURRENT' => $dataRes['ABE_MAILSERVER_OR_MAILCURRENT'],
'ABE_TYPE' => $dataRes['ABE_TYPE']
]);
$abeCore->publicDefineEmailFrom($setup);
$messageArray = AppMessage::buildMessageRow(
'',
$dataRes['APP_UID'],
$dataRes['DEL_INDEX'],
WsBase::MESSAGE_TYPE_ACTIONS_BY_EMAIL,
$dataRes['ABE_REQ_SUBJECT'],
$aSetup['MESS_ACCOUNT'],
$abeCore->getEmailFrom(),
$dataRes['ABE_REQ_SENT_TO'],
$dataRes['ABE_REQ_BODY'],
'',
@@ -413,7 +409,7 @@ class ActionsByEmail
'pending',
1,
'',
false,
true,
isset($dataRes['APP_NUMBER']) ? $dataRes['APP_NUMBER'] : 0,
$dataRes['PRO_ID'],
$dataRes['TAS_ID']
@@ -436,10 +432,10 @@ class ActionsByEmail
throw $error;
}
} else {
$message = G::LoadTranslation('ID_UNABLE_TO_SEND_EMAIL');
$message = G::LoadTranslation('ID_UNABLE_TO_SEND_EMAIL');
}
} else {
$message = G::LoadTranslation('ID_UNEXPECTED_ERROR_OCCURRED_PLEASE');
$message = G::LoadTranslation('ID_UNEXPECTED_ERROR_OCCURRED_PLEASE');
}
//Return
@@ -451,7 +447,7 @@ class ActionsByEmail
* @param array $arrayData
*
* @return string $message
*
*
* @see workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php
* @see ProcessMaker\Services\Api\ActionsByEmail->viewForm()
* @link https://wiki.processmaker.com/3.3/Actions_by_Email#Actions_by_Email_Log
@@ -560,10 +556,10 @@ class ActionsByEmail
/**
* Get the decision from Actions By Email by BPMN dynaform.
*
*
* @param array $dataRes
* @return string
*
*
* @see ActionsByEmail->viewForm()
* @link https://wiki.processmaker.com/3.3/Actions_by_Email
*/
@@ -640,7 +636,7 @@ class ActionsByEmail
$message = $field->label . ': ';
if (!empty($value)) {
/**
* Value 'On' is deprecated in version ProcessMaker 3.x.x.
* Value 'On' is deprecated in version ProcessMaker 3.x.x.
* now return '1'.
* @deprecated
*/

View File

@@ -0,0 +1,100 @@
<?php
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class AbeConfiguration extends model
{
protected $table = "ABE_CONFIGURATION";
// We do not have create/update timestamps for this table
public $timestamps = false;
/**
* Relation between process
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function process()
{
return $this->belongsTo(Process::class, 'PRO_UID', 'PRO_UID');
}
/**
* Relation between task
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function task()
{
return $this->belongsTo(Task::class, 'TAS_UID', 'TAS_UID');
}
/**
* Relation between emailServer
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function emailServer()
{
return $this->belongsTo(EmailServer::class, 'MESS_UID', 'MESS_UID');
}
/**
* Get information about the notification sent
*
* @param string $abeRequestUid
*
* @return array
*/
public static function getAbeRequest($abeRequestUid)
{
$selectedColumns = [
'ABE_CONFIGURATION.ABE_UID',
'ABE_CONFIGURATION.PRO_UID',
'ABE_CONFIGURATION.TAS_UID',
'ABE_CONFIGURATION.ABE_EMAIL_SERVER_UID',
'ABE_CONFIGURATION.ABE_TYPE',
'ABE_CONFIGURATION.ABE_MAILSERVER_OR_MAILCURRENT',
'TASK.TAS_ID',
'PROCESS.PRO_ID',
'ABE_REQUESTS.ABE_REQ_UID',
'ABE_REQUESTS.APP_UID',
'ABE_REQUESTS.DEL_INDEX',
'ABE_REQUESTS.ABE_REQ_SENT_TO',
'ABE_REQUESTS.ABE_REQ_SUBJECT',
'ABE_REQUESTS.ABE_REQ_BODY',
'ABE_REQUESTS.ABE_REQ_ANSWERED',
'ABE_REQUESTS.ABE_REQ_STATUS',
'APP_DELEGATION.DEL_FINISH_DATE',
'APP_DELEGATION.APP_NUMBER'
];
$query = AbeConfiguration::query()->select($selectedColumns);
$query->leftJoin('TASK', function ($join) {
$join->on('ABE_CONFIGURATION.TAS_UID', '=', 'TASK.TAS_UID');
});
$query->leftJoin('PROCESS', function ($join) {
$join->on('ABE_CONFIGURATION.PRO_UID', '=', 'PROCESS.PRO_UID');
});
$query->leftJoin('ABE_REQUESTS', function ($join) {
$join->on('ABE_CONFIGURATION.ABE_UID', '=', 'ABE_REQUESTS.ABE_UID');
});
$query->leftJoin('APP_DELEGATION', function ($join) {
$join->on('ABE_REQUESTS.APP_UID', '=', 'APP_DELEGATION.APP_UID')
->on('ABE_REQUESTS.DEL_INDEX', '=', 'APP_DELEGATION.DEL_INDEX');
});
$query->where('ABE_REQUESTS.ABE_REQ_UID', '=', $abeRequestUid);
$query->limit(1);
$res = $query->get()->values()->toArray();
if (!empty($res)) {
return $res[0];
}
return $res;
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class AbeRequest extends Model
{
protected $table = "ABE_REQUESTS";
public $timestamps = false;
/**
* Relation between application
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function application()
{
return $this->hasOne(Application::class, 'APP_UID', 'APP_UID');
}
/**
* Relation between abeConfiguration
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function abeConfiguration()
{
return $this->hasOne(AbeConfiguration::class, 'ABE_UID', 'ABE_UID');
}
}

View File

@@ -1,13 +0,0 @@
<?php
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
class EmailServer extends Model
{
protected $table = 'EMAIL_SERVER';
protected $primaryKey = 'MESS_UID';
public $timestamps = false;
}

View File

@@ -0,0 +1,84 @@
<?php
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
class EmailServerModel extends Model
{
protected $table = 'EMAIL_SERVER';
public $timestamps = false;
/**
* Obtain the selected columns of the EMAIL_SERVER table
*
* @param string $messUid
* @return array
* @see ProcessMaker\BusinessModel\ActionsByEmail::forwardMail()
*/
public function getEmailServer($messUid)
{
$selectedColumns = [
'EMAIL_SERVER.MESS_UID',
'EMAIL_SERVER.MESS_ENGINE',
'EMAIL_SERVER.MESS_SERVER',
'EMAIL_SERVER.MESS_PORT',
'EMAIL_SERVER.MESS_RAUTH',
'EMAIL_SERVER.MESS_ACCOUNT',
'EMAIL_SERVER.MESS_PASSWORD',
'EMAIL_SERVER.MESS_FROM_MAIL',
'EMAIL_SERVER.MESS_FROM_NAME',
'EMAIL_SERVER.SMTPSECURE',
'EMAIL_SERVER.MESS_TRY_SEND_INMEDIATLY',
'EMAIL_SERVER.MAIL_TO',
'EMAIL_SERVER.MESS_DEFAULT'
];
$query = EmailServerModel::query()->select($selectedColumns);
$query->where('EMAIL_SERVER.MESS_UID', '=', $messUid);
$res = $query->get()->values()->toArray();
$firstElement = head($res);
return $firstElement;
}
/**
* Obtain the default EMAI_SERVER configuration
*
* @return array
* @see ProcessMaker\BusinessModel\ActionsByEmail::forwardMail()
*/
public function getEmailServerDefault()
{
$selectedColumns = [
'EMAIL_SERVER.MESS_UID',
'EMAIL_SERVER.MESS_ENGINE',
'EMAIL_SERVER.MESS_SERVER',
'EMAIL_SERVER.MESS_PORT',
'EMAIL_SERVER.MESS_INCOMING_SERVER',
'EMAIL_SERVER.MESS_INCOMING_PORT',
'EMAIL_SERVER.MESS_RAUTH',
'EMAIL_SERVER.MESS_ACCOUNT',
'EMAIL_SERVER.MESS_PASSWORD',
'EMAIL_SERVER.MESS_FROM_MAIL',
'EMAIL_SERVER.MESS_FROM_NAME',
'EMAIL_SERVER.SMTPSECURE',
'EMAIL_SERVER.MESS_TRY_SEND_INMEDIATLY',
'EMAIL_SERVER.MAIL_TO',
'EMAIL_SERVER.MESS_DEFAULT'
];
$query = EmailServerModel::query()->select($selectedColumns)
->where('MESS_DEFAULT', '=', 1);
$firstElement = $query->get()->values()->toArray();
if (!empty($firstElement)) {
$firstElement = head($firstElement);
// @todo these index are been keep due to compatibility reasons
$firstElement['MESS_BACKGROUND'] = '';
$firstElement['MESS_PASSWORD_HIDDEN'] = '';
$firstElement['MESS_EXECUTE_EVERY'] = '';
$firstElement['MESS_SEND_MAX'] = '';
}
return $firstElement;
}
}