public function salvarAction() { $form = $this->getReceitaForm(); $request = $this->getRequest(); if ($request->isPost()) { $postData = array_merge_recursive($this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray()); $form->setData($postData); if ($form->isValid()) { $receita = new Receita(); $receita->exchangeArray($form->getData()); $retorno = $this->getReceitaTabela()->salvar($receita); if ($retorno) { $this->flashMessenger()->addSuccessMessage("Registro cadastrado com sucesso."); return $this->redirect()->toRoute('receita'); } else { $this->flashMessenger()->addErrorMessage("Erro ao salvar registro, tente novamente."); } } } $arrayCliente = $this->getClienteTabela()->buscarTodos(false); $arrayCategoria = $this->getCategoriaTabela()->buscarTodos(false); $arraySubcat = $this->ReceitaSubcategoriaTabela()->buscarTodos(false); $arrayConta = $this->getContaTabela()->buscarTodos(false); return array('form' => $form, 'fk_cliente' => array_column($arrayCliente->toArray(), 'nome', 'id'), 'fk_categoria' => array_column($arrayCategoria->toArray(), 'nome', 'id'), 'fk_subcategoria' => array_column($arraySubcat->toArray(), 'nome', 'id'), 'fk_conta' => array_column($arrayConta->toArray(), 'nome', 'id')); }
public function editar(Receita $receita) { $dados = array_filter($receita->getArrayCopy()); $id = (int) $receita->getId(); $objReceitaBd = $this->buscarUm($id); if ($objReceitaBd) { $dados['valor'] = str_replace(['.', ','], ['', '.'], $dados['valor']); $dados['data_vencimento'] = $this->converterData($receita->getDataVencimento()); $dados['pagamento_data'] = !empty($receita->getPagamentoData()) ? $this->converterData($receita->getPagamentoData()) : null; $dados['modificado'] = $this->converterData(); $conecao = $this->adapter->getDriver()->getConnection(); $conecao->beginTransaction(); try { $retorno = $this->update($dados, ['id' => $id]); if (!$retorno) { $conecao->rollback(); return false; } $objContaAtual = $this->getConta()->buscarUm($objReceitaBd->getFkConta()); $contaAtualSaldo = str_replace(['.', ','], ['', '.'], $objContaAtual->getSaldo()); $receitaAtualSaldo = str_replace(['.', ','], ['', '.'], $objReceitaBd->getValor()); if ($receita->getFkConta() != $objReceitaBd->getFkConta()) { $saldoContaAtual = $contaAtualSaldo - $receitaAtualSaldo; $objContaAtual->setSaldo($saldoContaAtual); $retornoContaAtual = $this->getConta()->salvar($objContaAtual); if ($retornoContaAtual) { $objContaNova = $this->getConta()->buscarUm($receita->getFkConta()); $contaNovaSaldo = str_replace(['.', ','], ['', '.'], $objContaNova->getSaldo()); $saldoContaNova = $contaNovaSaldo + $dados['valor']; $objContaNova->setSaldo($saldoContaNova); $retornoContaNova = $this->getConta()->salvar($objContaNova); if ($retornoContaNova) { $conecao->commit(); return true; } } $conecao->rollback(); return false; } elseif ($receita->getValor() != $objReceitaBd->getValor()) { $novoSaldo = $contaAtualSaldo - $receitaAtualSaldo + $dados['valor']; $objContaAtual->setSaldo($novoSaldo); $retornoContaAtual = $this->getConta()->salvar($objContaAtual); if ($retornoContaAtual) { $conecao->commit(); return true; } $conecao->rollback(); return false; } $conecao->commit(); return true; } catch (Exception $exc) { $conecao->rollback(); } } }