Skip to content

Commit

Permalink
🔨 BASE #294 e #297
Browse files Browse the repository at this point in the history
  • Loading branch information
bjverde committed Mar 4, 2024
1 parent 11ae306 commit 81064cd
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
class FormDinHelper
{

const FORMDIN_VERSION = '5.1.2';
const FORMDIN_VERSION = '5.1.3';
const ADIANTI_MIN_FORMDIN = '7.5.1';
const GRID_SIMPLE = 'GRID_SIMPLE';
const GRID_SCREEN_PAGINATION = 'GRID_SCREEN_PAGINATION';
Expand Down
136 changes: 127 additions & 9 deletions FormDin5/lib/widget/FormDin5/helpers/OrmAdiantiHelper.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,67 @@
class OrmAdiantiHelper
{

public static function testParam($param)
/**
* Recurpera o valor de um atributo de um Objeto
*
* @param object $obj - 01: Objeto Adianti
* @param string $objPropertyName - 02: Nome da atributo do objeto
* @return object
*/
public static function objPropertyValue($obj,$objPropertyName)
{
ValidateHelper::isObject($obj,__METHOD__,__LINE__);
ValidateHelper::isString($objPropertyName,__METHOD__,__LINE__);
$result = null;
if (property_exists($obj,$objPropertyName)) {
$result = $obj->{$objPropertyName};
}
return $result;
}


/**
* Verifica se uma propriedade foi setada em objeto, se não foi setada vai
* setar NULL ou valor informado do array. Retornando um objto com valor
* peenchido
*
* @param object $obj - 01: Objeto Adianti
* @param string|null $objPropertyName - 02: Nome da atributo do objeto
* @param array|null|mixed $arrayParam - 03: Array ou valor diretamente com possíveis valores
* @param string|null $arrayParamName - 04: Nome do atributo do array que será usado para preencher o valor do objeto
* @return object
*/
public static function objPropertyExistsSetValue($obj=null,$objPropertyName=null,$arrayParam=null,$arrayParamName=null)
{
if( !is_object($obj)){
$obj = new stdClass();
}
$newValue = null;
if( is_array($arrayParam) ){
ValidateHelper::isString($arrayParamName,__METHOD__,__LINE__);
$newValue = ArrayHelper::get($arrayParam,$arrayParamName);
}else{
$newValue = $arrayParam;
}

if( !empty($objPropertyName) ){
ValidateHelper::isString($objPropertyName,__METHOD__,__LINE__);
if (property_exists($obj,$objPropertyName)) {
$obj->{$objPropertyName} = empty($obj->{$objPropertyName})?$newValue:$obj->{$objPropertyName};
}else{
$obj->{$objPropertyName} = $newValue;
}
}
return $obj;
}

/**
* Verificar se o valor informado foi preenchido
*
* @param mixed $param
* @return void
*/
public static function valueTest($param)
{
$result = false;
if (isset($param) AND ( (is_scalar($param) AND $param !== '') OR (is_array($param) AND (!empty($param)) )) )
Expand All @@ -58,25 +118,83 @@ public static function testParam($param)
}

/**
* Inclui um novo elemento do tipo TFilter no ArrayFilter se $data for tiver valor
* Se $data ou $param tiver valor, inclui um novo elemento do tipo TFilter
* Se Obj estiver em branco, será preenchido com $param, no ArrayFilter
* pode ser usado como critério de filtro no sql
*
* @param array $arrayFilter 01: array com os filtros já incluiso
* @param string $filde 02: campo que será usado
* @param string $filde 02: campo do banco que será usado
* @param string $conector 03: conectores SQL: like, =, !=, in, not in, >=, <=, >, <
* @param mixed $data 04: valor que será testado
* @param string $sql 05: String Sql para um sub select.
* @param object $obj 04: Objeto Adianti
* @param string|null $objPropertyName 05: Nome da atributo do objeto
* @param array|null|mixed $arrayParam 06: Array ou valor diretamente com possíveis valores
* @param string|null $arrayParamName 07: Nome do atributo do array que será usado para preencher o valor do objeto
* @param string $sql 08: String Sql para um sub select.
* @return array
*/
public static function addFilter($arrayFilter,$filde,$conector,$data,$sql)
public static function addFilter($arrayFilter,$filde,$conector,$obj=null,$objPropertyName=null,$arrayParam=null,$arrayParamName=null,$sql=null)
{
if( self::testParam($data) ){
if( is_object($obj) ){
$obj = self::objPropertyExistsSetValue($obj,$objPropertyName,$arrayParam,$arrayParamName);
$value = self::objPropertyValue($obj,$objPropertyName);
}else{
$value = ArrayHelper::get($arrayParam,$arrayParamName);
}
if( self::valueTest($value) ){
if( empty($sql) ){
$arrayFilter[] = new TFilter($filde,$conector,$data);// create the filter
$arrayFilter[] = new TFilter($filde,$conector,$value);// create the filter
}else{
$arrayFilter[] = new TFilter($filde,$conector,$sql);// create the filter
}
}
return $arrayFilter;
}
}

/**
* Inclui TFilter no TCriteria. Se Obj estiver em branco, será preenchido com $param
* Pode ser informado um subselect ou operador
*
* @param TCriteria $criteria 01: array com os filtros já incluiso
* @param string $filde 02: campo do banco que será usado
* @param string $conector 03: conectores SQL: like, =, !=, in, not in, >=, <=, >, <
* @param object $obj 04: Objeto Adianti
* @param string|null $objPropertyName 05: Nome da atributo do objeto
* @param array|null|mixed $arrayParam 06: Array ou valor diretamente com possíveis valores
* @param string|null $arrayParamName 07: Nome do atributo do array que será usado para preencher o valor do objeto
* @param string $sql 08: String Sql para um sub select.
* @param string $operator 09: TExpression::AND_OPERATOR (Default) ou TExpression::OR_OPERATOR
* @param string $showDump 10: show dump criteria SQL
* @return TCriteria
*/
public static function addFilterTCriteria(TCriteria $criteria
,$filde
,$conector
,$obj=null
,$objPropertyName=null
,$arrayParam=null
,$arrayParamName=null
,$sql=null
,$logic_operator = TExpression::AND_OPERATOR
,$showDump = FALSE)
{
if( is_object($obj) ){
$obj = self::objPropertyExistsSetValue($obj,$objPropertyName,$arrayParam,$arrayParamName);
$value = self::objPropertyValue($obj,$objPropertyName);
}else{
$value = ArrayHelper::get($arrayParam,$arrayParamName);
}
if( self::valueTest($value) ){
if( empty($sql) ){
$criteria->add(new TFilter($filde,$conector,$value), $logic_operator);// create the filter
}else{
$criteria->add(new TFilter($filde,$conector,$sql) , $logic_operator);// create the filter
}
}
if($showDump==true){
$dumpSql = $criteria->dump();
FormDinHelper::debug($dumpSql,'Debug addFilterTCriteria');
}
return $criteria;
}
}
?>
18 changes: 17 additions & 1 deletion FormDin5/lib/widget/FormDin5/helpers/ValidateHelper.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,23 @@ public static function isArray($array,$method,$line, $validadeEmptyArray = true)
if( $validadeEmptyArray && empty($array)){
throw new InvalidArgumentException(TFormDinMessage::ERROR_TYPE_ARRAY_EMP.'See the method: '.$method.' in the line: '.$line);
}
}
}
//--------------------------------------------------------------------------------
/**
* Validade is object
* @param object $obj
* @param string $method
* @param string $line
* @throws InvalidArgumentException
* @return void
*/
public static function isObject($obj,$method,$line)
{
self::methodLine($method, $line, __METHOD__);
if( !is_object($obj) ){
throw new InvalidArgumentException(TFormDinMessage::ERROR_TYPE_NOT_OBJ.'See the method: '.$method.' in the line: '.$line);
}
}
//--------------------------------------------------------------------------------
/**
* Validate Object Type is Instance Of TFormDinPdoConnection
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class TFormDinMessage {
const ERROR_TYPE_NOT_STRING= 'Tipo não é string! ';
const ERROR_TYPE_NOT_INT = 'Tipo não númerico! ';
const ERROR_TYPE_NOT_ARRAY = 'Tipo não é um array! ';
const ERROR_TYPE_NOT_OBJ = 'Tipo não é um objeto! ';
const ERROR_TYPE_ARRAY_EMP = 'O array está vazio! ';
const ERROR_TYPE_NOT_SET = 'A variable has not been defined! ';
const ERROR_TYPE_WRONG = 'Tipo de dados errado';
Expand Down

0 comments on commit 81064cd

Please sign in to comment.