function getData($id_pessoa) { try { $pessoa_array = array(); Transaction::open('livro'); $pessoa = Pessoa::find($id_pessoa); if ($pessoa) { $pessoa_array = $pessoa->toArray(); } else { return new SoapFault("Server", "Pessoa {$id_pessoa} não encontrado"); } Transaction::close(); return $pessoa_array; } catch (Exception $e) { Transaction::rollback(); return new SoapFault("Server", $e->getMessage()); } }
/** * Carrega registro para edição */ function onEdit($param) { try { if (isset($param['id'])) { $id = $param['id']; // obtém a chave Transaction::open($this->connection); // inicia transação com o BD $class = $this->activeRecord; $object = $class::find($id); // instancia o Active Record $this->form->setData($object); // lança os dados no formulário Transaction::close(); // finaliza a transação } } catch (Exception $e) { new Message('error', '<b>Erro</b>' . $e->getMessage()); Transaction::rollback(); } }
/** * Carrega registro para edição */ public function onEdit($param) { try { if (isset($param['id'])) { $id = $param['id']; // obtém a chave Transaction::open('livro'); // inicia transação com o BD $pessoa = Pessoa::find($id); $pessoa->ids_grupos = $pessoa->getIdsGrupos(); $this->form->setData($pessoa); // lança os dados da pessoa no formulário Transaction::close(); // finaliza a transação } } catch (Exception $e) { // exibe a mensagem gerada pela exceção new Message('error', '<b>Erro</b>' . $e->getMessage()); // desfaz todas alterações no banco de dados Transaction::rollback(); } }
/** * Gera o relatório, baseado nos parâmetros do formulário */ public function onGera() { require_once 'Lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('App/Resources'); $twig = new Twig_Environment($loader); $template = $twig->loadTemplate('vendas_report.html'); // obtém os dados do formulário $dados = $this->form->getData(); // joga os dados de volta ao formulário $this->form->setData($dados); $conv_data_to_us = function ($data) { $dia = substr($data, 0, 2); $mes = substr($data, 3, 2); $ano = substr($data, 6, 4); return "{$ano}-{$mes}-{$dia}"; }; // lê os campos do formulário, converte para o padrão americano $data_ini = $conv_data_to_us($dados->data_ini); $data_fim = $conv_data_to_us($dados->data_fim); // vetor de parâmetros para o template $replaces = array(); $replaces['data_ini'] = $dados->data_ini; $replaces['data_fim'] = $dados->data_fim; try { // inicia transação com o banco 'livro' Transaction::open('livro'); // instancia um repositório da classe Venda $repositorio = new Repository('Venda'); // cria um critério de seleção por intervalo de datas $criterio = new Criteria(); $criterio->setProperty('order', 'data_venda'); if ($dados->data_ini) { $criterio->add(new Filter('data_venda', '>=', $data_ini)); } if ($dados->data_fim) { $criterio->add(new Filter('data_venda', '<=', $data_fim)); } // lê todas vendas que satisfazem ao critério $vendas = $repositorio->load($criterio); if ($vendas) { foreach ($vendas as $venda) { $venda_array = $venda->toArray(); $venda_array['nome_cliente'] = $venda->cliente->nome; $itens = $venda->itens; if ($itens) { foreach ($itens as $item) { $item_array = $item->toArray(); $item_array['descricao'] = $item->produto->descricao; $venda_array['itens'][] = $item_array; } } $replaces['vendas'][] = $venda_array; } } // finaliza a transação Transaction::close(); } catch (Exception $e) { new Message('error', $e->getMessage()); Transaction::rollback(); } $content = $template->render($replaces); parent::add($content); }