Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Critério no TFullCalendar Bom dia, pessoal. Alguém sabe como filtrar os registros de um TFullCalendar? Habilitei o multiempresa no Adianti e gostaria de filtrar os registros visualizados no TFullCalendario, por unidade (system_unit). Na TStandardList eu setei o criteria assim: Mas o setCriteria...
AA
Critério no TFullCalendar  
Bom dia, pessoal.

Alguém sabe como filtrar os registros de um TFullCalendar? Habilitei o multiempresa no Adianti e gostaria de filtrar os registros visualizados no TFullCalendario, por unidade (system_unit).

Na TStandardList eu setei o criteria assim:
  1. <?php $this->setCriteriaTCriteria::create( ['system_unit_id' => TSession::getValue('userunitid')] ) ); ?>


Mas o setCriteria não funciona no TFullCalendar.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (3)


NR

Seguindo o exemplo do tutor:
adianti.com.br/framework_files/tutor/index.php?class=FullCalendarDat

O filtro precisa ser feito na função getEvents:
  1. <?php
  2. $events CalendarEvent::where('start_time''>='$param['start'])
  3.                                         ->where('end_time',   '<='$param['end'])->load();
  4. ?>
AA

Deu certo, amigo. Obrigado.

Adicionei mais um where e filtrou belezinha. Segue o código para outros que tiverem interesse:
  1. <?php 
  2. $tarefas Tarefa::where('data_inicial''>='$param['start'])
  3.                              ->where('data_final',   '<='$param['end'])
  4.                              ->where('system_unit_id''='TSession::getValue('userunitid'))->load();
  5. ?>
RI

Bom dia! Dúvida de iniciante, apanhando..

Onde está o erro, quem puder ajudar agradeço.

Usando o FullCalendar não estou conseguindo realizar o filtro dos agendamentos de um determinado médico e atualizar no calendário.
Na tabela de agendamento tenho o campo: tb_medicos_id - gravar certinho só que na hora de filtrar (Select) não vai. Abaixo está o código..

class FullCalendarAgMed extends TPage
{
private $fc;

/**
* Page constructor
*/
public function __construct()
{
parent::__construct();

// creates the form
$this->form = new BootstrapFormBuilder('form_agendamento');
//$medico_id = new TDBCombo('medico_id', 'cedipi', 'TbMedicos', 'id', 'nome', 'nome asc');
//$medico_id->setChangeAction(new TAction(array($this, 'onChangeAction')));
//$medico_id = new TDBSeekButton('medico_id', 'cedipi', 'TbMedicos', 'id', 'nome', 'nome asc');

$medico_id = new TDBSeekButton('medico_id', 'cedipi', 'form_agendamento', 'TbMedicos', 'nome');
$medico_nome = new TEntry('medico_nome');
$medico_id->setAuxiliar($medico_nome);

$medicoExitAction = new TAction(array($this, 'onMedicoExitAction'));
$medico_id->setExitAction($medicoExitAction);

$medico_id->setSize(50);
$medico_nome->setSize(500);
$medico_nome->setEditable(FALSE);

$this->form->addFields([new TLabel('Selecionar médico(a): ')],[$medico_id]);




$this->fc = new TFullCalendar(date('Y-m-d'), 'agendaWeek');
//$this->fc->style = 'width:70%';

$this->fc->setOption('slotDuration', '00:15');
$this->fc->setOption('slotLabelInterval','00:15');
$this->fc->enableDays([1,2,3,4,5,6]);

$this->fc->setReloadAction(new TAction(array($this, 'getEvents')));

$this->fc->setDayClickAction(new TAction(array('CalendarEventFormAM', 'onStartEdit')));
$this->fc->setEventClickAction(new TAction(array('CalendarEventFormAM', 'onEdit')));
$this->fc->setEventUpdateAction(new TAction(array('CalendarEventFormAM', 'onUpdateEvent')));

$this->fc->setOption('businessHours', [ [ 'dow' => [ 1, 2, 3, 4, 5 ], 'start' => '08:00', 'end' => '18:00' ]]);
$this->fc->setTimeRange('08:00', '18:00');


//$this->fc->setEventClickAction( new TAction([$this, 'onEventClick']));
//$this->fc->setDayClickAction( new TAction([$this, 'onDayClick']));
//$this->fc->disableDragging();
//$this->fc->disableResizing();

$this->form->addContent([$this->fc]);

$container = new TVBox;
$container->style = "width: 100%";
$container->add($this->form);
parent::add($container);

//original
//parent::add( $this->fc );
}




/**
* Output events as an json
*/

public static function onEventClick($param)
{
//new TMessage('info', str_replace(',', ',
', json_encode(TSession::getValue('userid'))));
new TMessage('info', str_replace(',', ',
', json_encode($param)));
}

public static function onDayClick($param)
{ //json_encode($param)
//new TMessage('info', str_replace(',', ',
', json_encode(TSession::getValue('userid'))));
new TMessage('info', str_replace(',', ',
', json_encode($param)));
}





public static function onMedicoExitAction( $param )
{
TSession::setValue('medicoId', $param['medico_id']);

//FullCalendarAgMed::getEvents($param);
TApplication::postData('form_agendamento',__CLASS__,'onReload');
}


public static function getEvents($param=NULL)
{

$return = array();

try
{
TTransaction::open('cedipi');

$novo = TSession::getValue('medico_id');

$events = TbMedAgenda::where('start_time', '<=', $param['end'])
->where('end_time', '>=', $param['start'])
->where('tb_medicos_id', '=', $novo)
->load();

// ->where('tb_medicos_id', '=', $param['medico_id'])
//->where('system_unit_id', '=', TSession::getValue('userunitid'))->load();

if ($events)
{
foreach ($events as $event)
{
$event_array = $event->toArray();

$event_array['start'] = str_replace( ' ', 'T', $event_array['start_time']);
$event_array['end'] = str_replace( ' ', 'T', $event_array['end_time']);

$popover_content = $event->render("Título: {title}
Descrição: {description}");

$event_array['title'] = TFullCalendar::renderPopover($event_array['title'], 'Procedimento Agendado', $popover_content);

$return[] = $event_array;
}
}

TTransaction::close();
echo json_encode($return);

}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}


/**
* Reconfigure the callendar
*/
public function onReload($param = null)
{

$this->form->setData($this->form->getData());


if (isset($param['view']))
{
$this->fc->setCurrentView($param['view']);
}

if (isset($param['date']))
{
$this->fc->setCurrentDate($param['date']);
}
}

}