PMCORE-3709
This commit is contained in:
@@ -5,8 +5,10 @@ namespace ProcessMaker\BusinessModel;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use G;
|
use G;
|
||||||
use ProcessMaker\BusinessModel\Variable;
|
use ProcessMaker\BusinessModel\Variable;
|
||||||
|
use ProcessMaker\Model\AdditionalTables;
|
||||||
use ProcessMaker\Model\Application;
|
use ProcessMaker\Model\Application;
|
||||||
use ProcessMaker\Model\Dynaform;
|
use ProcessMaker\Model\Dynaform;
|
||||||
|
use ProcessMaker\Model\Fields;
|
||||||
use ProcessMaker\Model\Process;
|
use ProcessMaker\Model\Process;
|
||||||
use ProcessMaker\Model\ProcessVariables;
|
use ProcessMaker\Model\ProcessVariables;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
@@ -16,7 +18,6 @@ use Tests\TestCase;
|
|||||||
*/
|
*/
|
||||||
class VariableTest extends TestCase
|
class VariableTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test it create variables related to the process
|
* Test it create variables related to the process
|
||||||
*
|
*
|
||||||
@@ -272,4 +273,30 @@ class VariableTest extends TestCase
|
|||||||
$variable = new Variable();
|
$variable = new Variable();
|
||||||
$result = $variable->executeSqlControl(null, []);
|
$result = $variable->executeSqlControl(null, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This verify the exception
|
||||||
|
* @test
|
||||||
|
* @covers \ProcessMaker\BusinessModel\Variable::throwExceptionIfVariableIsAssociatedAditionalTable()
|
||||||
|
*/
|
||||||
|
public function it_should_test_exception_when_a_variable_is_related_table()
|
||||||
|
{
|
||||||
|
//assert
|
||||||
|
$this->expectException(Exception::class);
|
||||||
|
// Create process variable
|
||||||
|
$variable = factory(ProcessVariables::class)->create();
|
||||||
|
$result = ProcessVariables::getVariable($variable->VAR_UID);
|
||||||
|
$this->assertNotEmpty($result);
|
||||||
|
// Create tables
|
||||||
|
$table = factory(AdditionalTables::class)->create([
|
||||||
|
'PRO_UID' => $variable->PRO_UID,
|
||||||
|
]);
|
||||||
|
// Create fields
|
||||||
|
$fields = factory(Fields::class)->create([
|
||||||
|
'ADD_TAB_UID' => $table->ADD_TAB_UID,
|
||||||
|
'FLD_NAME' => $variable->VAR_NAME,
|
||||||
|
]);
|
||||||
|
$variable = new Variable();
|
||||||
|
$res = $variable->throwExceptionIfVariableIsAssociatedAditionalTable($variable->VAR_UID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,31 @@ class AdditionalTablesTest extends TestCase
|
|||||||
$this->assertCount(1, $table->offline([$table->ADD_TAB_OFFLINE])->get());
|
$this->assertCount(1, $table->offline([$table->ADD_TAB_OFFLINE])->get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test scope query to get the offline tables
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\AdditionalTables::scopeProcess()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_filter_process()
|
||||||
|
{
|
||||||
|
$table = factory(AdditionalTables::class)->create();
|
||||||
|
$this->assertCount(1, $table->process($table->PRO_UID)->get());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test scope query to get tables related to the process
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\AdditionalTables::getTables()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_get_tables_related_to_process()
|
||||||
|
{
|
||||||
|
$table = factory(AdditionalTables::class)->create();
|
||||||
|
$result = AdditionalTables::getTables($table->PRO_UID);
|
||||||
|
$this->assertNotEmpty($result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test get the structure of offline tables
|
* Test get the structure of offline tables
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -42,4 +42,19 @@ class FieldsTest extends TestCase
|
|||||||
$result = Fields::getFields($fields->ADD_TAB_UID);
|
$result = Fields::getFields($fields->ADD_TAB_UID);
|
||||||
$this->assertNotEmpty($result);
|
$this->assertNotEmpty($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test scope and search a field related to the specific ADD_TAB_UID
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\Fields::scopeField()
|
||||||
|
* @covers \ProcessMaker\Model\Fields::scopeFieldOrLabel()
|
||||||
|
* @covers \ProcessMaker\Model\Fields::searchVariable()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_search_field()
|
||||||
|
{
|
||||||
|
$fields = factory(Fields::class)->create();
|
||||||
|
$result = Fields::searchVariable($fields->ADD_TAB_UID, $fields->FLD_NAME);
|
||||||
|
$this->assertNotEmpty($result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,19 @@ class ProcessVariablesTest extends TestCase
|
|||||||
$this->assertEquals($process[0]['PRO_UID'], $result[1]['PRJ_UID']);
|
$this->assertEquals($process[0]['PRO_UID'], $result[1]['PRJ_UID']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test it return a variable related to the VAR_UID
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\ProcessVariables::getVariable()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_get_variable()
|
||||||
|
{
|
||||||
|
$table = factory(ProcessVariables::class)->create();
|
||||||
|
$result = ProcessVariables::getVariable($table->VAR_UID);
|
||||||
|
$this->assertNotEmpty($result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test it return the variables related to the PRO_ID
|
* Test it return the variables related to the PRO_ID
|
||||||
*
|
*
|
||||||
@@ -76,6 +89,8 @@ class ProcessVariablesTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test it return the variables by type related to the PRO_ID
|
* Test it return the variables by type related to the PRO_ID
|
||||||
*
|
*
|
||||||
|
* @covers \ProcessMaker\Model\ProcessVariables::scopeProcessId()
|
||||||
|
* @covers \ProcessMaker\Model\ProcessVariables::scopeTypeId()
|
||||||
* @covers \ProcessMaker\Model\ProcessVariables::getVariablesByType()
|
* @covers \ProcessMaker\Model\ProcessVariables::getVariablesByType()
|
||||||
* @test
|
* @test
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -28538,8 +28538,8 @@ msgstr "Variable for Value Based Assignment"
|
|||||||
# TRANSLATION
|
# TRANSLATION
|
||||||
# LABEL/ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE
|
# LABEL/ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE
|
||||||
#: 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."
|
msgid "The variable \"{0}\" Is associated with a report table, that requires to be removed first before allowing deleting it."
|
||||||
msgstr "The variable with \"{0}\", it is associated with a report table."
|
msgstr "The variable \"{0}\" Is associated with a report table, that requires to be removed first before allowing deleting it.""
|
||||||
|
|
||||||
# TRANSLATION
|
# TRANSLATION
|
||||||
# LABEL/ID_VARIABLE_IN_USE
|
# LABEL/ID_VARIABLE_IN_USE
|
||||||
|
|||||||
@@ -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_RECEIVED','en','variables received','2014-01-15') ,
|
||||||
( 'LABEL','ID_VARIABLES_SENT','en','variables sent','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_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_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_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') ,
|
( 'LABEL','ID_VARIABLE_PICKER','en','pmVariablePicker','2014-01-15') ,
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ use Cases as ClassesCases;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use G;
|
use G;
|
||||||
use PmDynaform;
|
use PmDynaform;
|
||||||
|
use ProcessMaker\Model\AdditionalTables as AT;
|
||||||
|
use ProcessMaker\Model\Fields;
|
||||||
use ProcessMaker\Model\ProcessVariables;
|
use ProcessMaker\Model\ProcessVariables;
|
||||||
use ProcessMaker\Util\Common;
|
use ProcessMaker\Util\Common;
|
||||||
|
|
||||||
@@ -570,18 +572,19 @@ class Variable
|
|||||||
public function throwExceptionIfVariableIsAssociatedAditionalTable($variableUid)
|
public function throwExceptionIfVariableIsAssociatedAditionalTable($variableUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$criteria = new \Criteria('workflow');
|
// Get variable name
|
||||||
$criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID);
|
$varInfo = ProcessVariables::getVariable($variableUid);
|
||||||
$criteria->addJoin(\ProcessVariablesPeer::PRJ_UID, \AdditionalTablesPeer::PRO_UID, \Criteria::INNER_JOIN);
|
$varName = $varInfo['VAR_NAME'];
|
||||||
$arrayCondition = [];
|
$proUid = $varInfo['PRJ_UID'];
|
||||||
$arrayCondition[] = array(\AdditionalTablesPeer::ADD_TAB_UID, \FieldsPeer::ADD_TAB_UID, \Criteria::EQUAL);
|
// Get the tables related to the process
|
||||||
$arrayCondition[] = array(\ProcessVariablesPeer::VAR_NAME, \FieldsPeer::FLD_NAME, \Criteria::EQUAL);
|
$tables = AT::getTables($proUid);
|
||||||
$criteria->addJoinMC($arrayCondition, \Criteria::INNER_JOIN);
|
if (!empty($tables)) {
|
||||||
$criteria->add(\ProcessVariablesPeer::VAR_UID, $variableUid, \Criteria::EQUAL);
|
foreach ($tables as $value) {
|
||||||
$rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);
|
$exist = Fields::searchVariable($value['ADD_TAB_UID'], $varName);
|
||||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
if ($exist) {
|
||||||
if ($rsCriteria->next()) {
|
throw new Exception(G::LoadTranslation('ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE', [$varName]));
|
||||||
throw new Exception(G::LoadTranslation('ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE', array($variableUid)));
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw $e;
|
throw $e;
|
||||||
|
|||||||
@@ -32,6 +32,34 @@ class AdditionalTables extends Model
|
|||||||
return $query->where('ADD_TAB_OFFLINE', '=', 1);
|
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
|
* Get the structure of offline tables
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -32,6 +32,39 @@ class Fields extends Model
|
|||||||
return $query->where('ADD_TAB_UID', '=', $tabUid);
|
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
|
* Get the offline tables
|
||||||
*
|
*
|
||||||
@@ -52,4 +85,22 @@ class Fields extends Model
|
|||||||
|
|
||||||
return $data;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -87,6 +87,23 @@ class ProcessVariables extends Model
|
|||||||
return $query->where('VAR_FIELD_TYPE_ID', $typeId);
|
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
|
* Return the variables list
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user