TB
Problema com filtro
Estou com um problema na hora de fazer um filtro em uma listagem
Somente neste arquivo que ocorre o erro e não estou conseguindo ver qual o erro no código.
Entra na listagem normalmente, mas quando faço um filtro ele da o erro e preciso deslogar e logar novamente para poder acessar a página.
Obrigado
( ! ) Fatal error: Uncaught TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 and defined in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
( ! ) TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
Call Stack
# Time Memory Function Location
1 0.0001 411072 {main}( ) ...engine.php:0
2 0.0790 689944 TApplication::run( ) ...engine.php:68
3 0.0794 700816 AdiantiCoreAdiantiCoreApplication::run( ) ...engine.php:27
4 0.1245 1012152 CalendarioList->show( ) ...AdiantiCoreApplication.php:82
5 0.1245 1012152 CalendarioList->show( ) ...AdiantiStandardCollectionTrait.php:421
6 0.1245 1012152 CalendarioList->run( ) ...TPage.php:213
7 0.1245 1012528 call_user_func:{D:wamp64wwwppconnectpololibadianticontrolTPage.php:59} ( ) ...TPage.php:59
8 0.1245 1012528 CalendarioList->onSearch( ) ...TPage.php:59
9 0.1245 1013776 CalendarioList->onReload( ) ...AdiantiStandardCollectionTrait.php:218
10 0.1260 1062856 AdiantiDatabaseTCriteria->add( ) ...AdiantiStandardCollectionTrait.php:297
<php
Somente neste arquivo que ocorre o erro e não estou conseguindo ver qual o erro no código.
Entra na listagem normalmente, mas quando faço um filtro ele da o erro e preciso deslogar e logar novamente para poder acessar a página.
Obrigado
( ! ) Fatal error: Uncaught TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 and defined in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
( ! ) TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
Call Stack
# Time Memory Function Location
1 0.0001 411072 {main}( ) ...engine.php:0
2 0.0790 689944 TApplication::run( ) ...engine.php:68
3 0.0794 700816 AdiantiCoreAdiantiCoreApplication::run( ) ...engine.php:27
4 0.1245 1012152 CalendarioList->show( ) ...AdiantiCoreApplication.php:82
5 0.1245 1012152 CalendarioList->show( ) ...AdiantiStandardCollectionTrait.php:421
6 0.1245 1012152 CalendarioList->run( ) ...TPage.php:213
7 0.1245 1012528 call_user_func:{D:wamp64wwwppconnectpololibadianticontrolTPage.php:59} ( ) ...TPage.php:59
8 0.1245 1012528 CalendarioList->onSearch( ) ...TPage.php:59
9 0.1245 1013776 CalendarioList->onReload( ) ...AdiantiStandardCollectionTrait.php:218
10 0.1260 1062856 AdiantiDatabaseTCriteria->add( ) ...AdiantiStandardCollectionTrait.php:297
<php
- <?php
- /**
- * CalendarioList Listing
- * @author <your name here>
- */
- class CalendarioList extends TPage
- {
- protected $form; // registration form
- protected $datagrid; // listing
- protected $pageNavigation;
- protected $formgrid;
- protected $deleteButton;
- use Adianti\base\AdiantiStandardListTrait;
- /**
- * Page constructor
- */
- public function __construct()
- {
- parent::__construct();
- $this->setDatabase('ppconnectpolo'); // defines the database
- $this->setActiveRecord('Calendario'); // defines the active record
- $this->setDefaultOrder('data_prova', 'desc'); // defines the default order
- $this->setLimit(10);
- //$this->setCriteria($criteria); // define a standard filter
- $this->addFilterField('data_prova', 'like', 'data'); // filterField, operator, formField
- $this->addFilterField('disciplinas_id', '=', 'disciplinas_id'); // filterField, operator, formField
- $this->addFilterField('turmas_id', '=', 'turmas_id'); // filterField, operator, formField
- // creates the form
- $this->form = new BootstrapFormBuilder('form_search_Calendario');
- $this->form->setFormTitle('Calendário de Provas');
- // create the form fields
- $data_prova = new TEntry('data_prova');
- $disciplinas_id = new TDBCombo('disciplinas_id', 'ppconnectpolo', 'Disciplinas', 'id', 'nome');
- //$turmas_id = new TDCombo('turmas_id', 'ppconnectpolo', 'Turmas', 'id', 'nome');
- $turmas_id = new TDBCombo('turmas_id', 'ppconnectpolo', 'Turmas', 'id', '{cursos->nome} - {nome}');
- // add the fields
- $this->form->addFields( [ new TLabel('Data') ], [ $data_prova ] );
- $this->form->addFields( [ new TLabel('Disciplina') ], [ $disciplinas_id ] );
- $this->form->addFields( [ new TLabel('Turma') ], [ $turmas_id ] );
- // set sizes
- $data_prova->setSize('100%');
- $disciplinas_id->setSize('100%');
- $turmas_id->setSize('100%');
- // keep the form filled during navigation with session data
- $this->form->setData( TSession::getValue(__CLASS__.'_filter_data') );
- // add the search form actions
- $btn = $this->form->addAction(_t('Find'), new TAction([$this, 'onSearch']), 'fa:search');
- $btn->class = 'btn btn-sm btn-primary';
- $btnAtualizar = $this->form->addAction('Atualizar Calendário', new TAction([$this, 'onAtualizarCalendario']), 'fa:plus green');
- $btnAtualizar->class = 'btn btn-sm btn-success';
- // creates a Datagrid
- $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
- $this->datagrid->style = 'width: 100%';
- $this->datagrid->datatable = 'true';
- // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
- // creates the datagrid columns
- //$column_id = new TDataGridColumn('id', 'Id', 'right');
- $column_data_prova = new TDataGridColumn('data_prova', 'Data', 'center');
- $column_data_geracao = new TDataGridColumn('data_geracao_prova', 'Data de Geração', 'center');
- $column_descricao = new TDataGridColumn('descricao', 'Descricao', 'left');
- $column_disciplinas_id = new TDataGridColumn('disciplinas->nome', 'Disciplina', 'left');
- $column_turmas_id = new TDataGridColumn('{turmas->cursos->nome} - {turmas->nome}', 'Turma', 'left');
- // add the columns to the DataGrid
- //$this->datagrid->addColumn($column_id);
- $this->datagrid->addColumn($column_data_prova);
- $this->datagrid->addColumn($column_turmas_id);
- $this->datagrid->addColumn($column_disciplinas_id);
- $this->datagrid->addColumn($column_data_geracao);
- $this->datagrid->addColumn($column_descricao);
- $column_data_prova->setTransformer(array($this, 'formatDate'));
- $column_data_geracao->setTransformer(array($this, 'formatDate'));
- //$action1 = new TDataGridAction(['CalendarioForm', 'onEdit'], ['id'=>'{id}']);
- //$action2 = new TDataGridAction([$this, 'onDelete'], ['id'=>'{id}']);
- //$this->datagrid->addAction($action1, _t('Edit'), 'far:edit blue');
- //$this->datagrid->addAction($action2 ,_t('Delete'), 'far:trash-alt red');
- // create the datagrid model
- $this->datagrid->createModel();
- // creates the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction([$this, 'onReload']));
- $panel = new TPanelGroup('', 'white');
- $panel->add($this->datagrid);
- $panel->addFooter($this->pageNavigation);
- // header actions
- $dropdown = new TDropDown(_t('Export'), 'fa:list');
- $dropdown->setPullSide('right');
- $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
- $dropdown->addAction( _t('Save as CSV'), new TAction([$this, 'onExportCSV'], ['register_state' => 'false', 'static'=>'1']), 'fa:table blue' );
- $dropdown->addAction( _t('Save as PDF'), new TAction([$this, 'onExportPDF'], ['register_state' => 'false', 'static'=>'1']), 'far:file-pdf red' );
- $panel->addHeaderWidget( $dropdown );
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- $container->add($panel);
- parent::add($container);
- }
- private function isTutor(){
- TTransaction::open('ppconnectpolo'); // open a transaction
- $repositorio = new TRepository('SystemUserGroup');
- $criterio = new TCriteria;
- $criterio->add(new TFilter ('system_user_id', '=', TSession::getValue('userid')));
- $grupos = $repositorio->load($criterio);
- TTransaction::close();
- if($grupos){
- foreach($grupos as $grupo){
- if($grupo->system_group_id == 5) // tutor
- return true;
- }
- }
- return false;
- }
- private function isAdmin(){
- TTransaction::open('ppconnectpolo'); // open a transaction
- $repositorio = new TRepository('SystemUserGroup');
- $criterio = new TCriteria;
- $criterio->add(new TFilter ('system_user_id', '=', TSession::getValue('userid')));
- $grupos = $repositorio->load($criterio);
- TTransaction::close();
- if($grupos){
- foreach($grupos as $grupo){
- if($grupo->system_group_id == 4 /*coordenador de polo */ ||
- $grupo->system_group_id == 1 ) // administrador
- return true;
- }
- }
- return false;
- }
- public function onAtualizarCalendario(){
- if($this->isAdmin()){
- // echo "admin";
- TTransaction::open('ppconnectpolo'); // open a transaction
- $repositorio_turmas = new TRepository('turmas');
- $criterio_turmas = new TCriteria;
- $criterio_turmas->add(new TFilter ('id', '>', 0));
- $turmas = $repositorio_turmas->load($criterio_turmas);
- TTransaction::close();
- // var_dump($turmas);
- if($turmas){
- foreach($turmas as $turma){
- // var_dump($turma);
- TTransaction::open('ppconnectpolo'); // open a transaction
- $repositorio_dc = new TRepository('disciplinasdocurso');
- $criterio_dc = new TCriteria;
- $criterio_dc->add(new TFilter ('curso_id', '=', $turma->cursos_id));
- $dcs = $repositorio_dc->load($criterio_dc);
- // var_dump($dcs);
- TTransaction::close();
- foreach($dcs as $dc){
- // var_dump($dc);
- $this->atualizaProvas($dc, $turma);
- }
- }
- }
- }
- if($this->isTutor())
- echo "tutor";
- $this->onReload();
- }
- //passa a disciplina e a turma
- private function atualizaProvas($dc, $turma){
- // var_dump($dc);
- // var_dump($turma);
- $location = 'http://localhost/ppconnect/rest.php';
- $parameters = array();
- $parameters['class'] = 'ProvasService';
- $parameters['method'] = 'loadAll';
- $parameters['filters'] = [['disciplinas_id', '=', $dc->disciplinas_id], ['turmas_id', '=', $turma->id]];
- $url = $location . '?' . http_build_query($parameters);
- $obj= json_decode( file_get_contents($url)) ;
- // var_dump($obj);
- if(!empty($obj->data)){
- try{
- $this->setActiveRecord('Calendario');
- TTransaction::open('ppconnectpolo');
- $dados = new Calendario;
- foreach($obj->data as $ob){
- // var_dump($ob);
- $dados->id = $ob->id;
- $dados->disciplinas_id = $ob->disciplinas_id;
- $dados->turmas_id = $ob->turmas_id;
- $dados->data_prova = $ob->data_prova;
- $dados->data_geracao_prova = $ob->data_geracao;
- $dados->descricao = $ob->nome;
- $dados->store();
- }
- TTransaction::close();
- return true;
- } catch (Exception $e){
- new TMessage('error', $e->getMessage());
- return false;
- }
- }
- $this->setActiveRecord('Calendario');
- $this->onReload();
- return false;
- }
- public function formatDate($date, $object)
- {
- if(!empty($date)){
- $dt = new DateTime($date);
- return $dt->format('d/m/Y');
- }
- return ' ';
- }
- }
- ?>