PMCORE-3709

This commit is contained in:
Paula.Quispe
2022-04-08 12:51:19 -04:00
parent 4d262146bd
commit 9fd71632a2
10 changed files with 197 additions and 16 deletions

View File

@@ -28538,8 +28538,8 @@ msgstr "Variable for Value Based Assignment"
# TRANSLATION
# LABEL/ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE
#: LABEL/ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE
msgid "The variable with \"{0}\", it is associated with a report table."
msgstr "The variable with \"{0}\", it is associated with a report table."
msgid "The variable \"{0}\" Is associated with a report table, that requires to be removed first before allowing deleting it."
msgstr "The variable \"{0}\" Is associated with a report table, that requires to be removed first before allowing deleting it.""
# TRANSLATION
# LABEL/ID_VARIABLE_IN_USE

View File

@@ -61742,7 +61742,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_VARIABLES_RECEIVED','en','variables received','2014-01-15') ,
( 'LABEL','ID_VARIABLES_SENT','en','variables sent','2014-01-15') ,
( 'LABEL','ID_VARIABLES_VALUE_ASSIGNMENT','en','Variable for Value Based Assignment','2014-01-15') ,
( 'LABEL','ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE','en','The variable with "{0}", it is associated with a report table.','2016-02-05') ,
( 'LABEL','ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE','en','The variable \"{0}\" Is associated with a report table, that requires to be removed first before allowing deleting it.','2022-04-08') ,
( 'LABEL','ID_VARIABLE_IN_USE','en','This variable can not be deleted because it is being used in DynaForm : {0}. To delete it, first remove it from the DynaForm.','2015-04-08') ,
( 'LABEL','ID_VARIABLE_NO_IS_GRID','en','The Variable with {0}: "{1}" is not a grid','2016-02-23') ,
( 'LABEL','ID_VARIABLE_PICKER','en','pmVariablePicker','2014-01-15') ,

View File

@@ -7,6 +7,8 @@ use Cases as ClassesCases;
use Exception;
use G;
use PmDynaform;
use ProcessMaker\Model\AdditionalTables as AT;
use ProcessMaker\Model\Fields;
use ProcessMaker\Model\ProcessVariables;
use ProcessMaker\Util\Common;
@@ -570,18 +572,19 @@ class Variable
public function throwExceptionIfVariableIsAssociatedAditionalTable($variableUid)
{
try {
$criteria = new \Criteria('workflow');
$criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID);
$criteria->addJoin(\ProcessVariablesPeer::PRJ_UID, \AdditionalTablesPeer::PRO_UID, \Criteria::INNER_JOIN);
$arrayCondition = [];
$arrayCondition[] = array(\AdditionalTablesPeer::ADD_TAB_UID, \FieldsPeer::ADD_TAB_UID, \Criteria::EQUAL);
$arrayCondition[] = array(\ProcessVariablesPeer::VAR_NAME, \FieldsPeer::FLD_NAME, \Criteria::EQUAL);
$criteria->addJoinMC($arrayCondition, \Criteria::INNER_JOIN);
$criteria->add(\ProcessVariablesPeer::VAR_UID, $variableUid, \Criteria::EQUAL);
$rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
throw new Exception(G::LoadTranslation('ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE', array($variableUid)));
// Get variable name
$varInfo = ProcessVariables::getVariable($variableUid);
$varName = $varInfo['VAR_NAME'];
$proUid = $varInfo['PRJ_UID'];
// Get the tables related to the process
$tables = AT::getTables($proUid);
if (!empty($tables)) {
foreach ($tables as $value) {
$exist = Fields::searchVariable($value['ADD_TAB_UID'], $varName);
if ($exist) {
throw new Exception(G::LoadTranslation('ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE', [$varName]));
}
}
}
} catch (Exception $e) {
throw $e;

View File

@@ -32,6 +32,34 @@ class AdditionalTables extends Model
return $query->where('ADD_TAB_OFFLINE', '=', 1);
}
/**
* Scope a query to get the tables related to the process
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $proUid
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeProcess($query, string $proUid)
{
return $query->where('PRO_UID', $proUid);
}
/**
* Get tables related to the process
*
* @param string $proUid
* @return array
*/
public static function getTables(string $proUid)
{
$query = AdditionalTables::query()->select();
$query->process($proUid);
$result = $query->get()->values()->toArray();
return $result;
}
/**
* Get the structure of offline tables
*

View File

@@ -32,6 +32,39 @@ class Fields extends Model
return $query->where('ADD_TAB_UID', '=', $tabUid);
}
/**
* Scope a query to get the field name
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $name
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeField($query, $name)
{
return $query->where('FLD_NAME', $name);
}
/**
* Scope a query to get the field name or label name
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $field
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeFieldOrLabel($query, $field)
{
$query->where(function ($query) use ($field) {
$query->field($field);
$fieldLabel = $field . '_label';
$query->orWhere(function ($query) use ($fieldLabel) {
$query->field($fieldLabel);
});
});
return $query;
}
/**
* Get the offline tables
*
@@ -52,4 +85,22 @@ class Fields extends Model
return $data;
}
/**
* Search a field related to the table
*
* @param string $tabUid
* @param string $field
*
* @return bool
*/
public static function searchVariable(string $tabUid, string $field)
{
$query = Fields::query();
$query->table($tabUid);
$query->fieldOrLabel($field);
$result = $query->get()->values()->toArray();
return !empty($result);
}
}

View File

@@ -87,6 +87,23 @@ class ProcessVariables extends Model
return $query->where('VAR_FIELD_TYPE_ID', $typeId);
}
/**
* Return the variable information
*
* @param string $varUid
*
* @return array
*/
public static function getVariable(string $varUid)
{
$query = ProcessVariables::query()->select();
$query->where('VAR_UID', $varUid)->limit(1);
$result = $query->get()->values()->toArray();
$result = head($result);
return $result;
}
/**
* Return the variables list
*