diff --git a/html/apoio/controller/ContribuicaoLogController.php b/html/apoio/controller/ContribuicaoLogController.php
index 2fc1eb0e..15692e67 100755
--- a/html/apoio/controller/ContribuicaoLogController.php
+++ b/html/apoio/controller/ContribuicaoLogController.php
@@ -183,120 +183,115 @@ public function criarCarne()
}
$servicoPagamento = new $classeService;
- } catch (PDOException $e) {
- //implementar tratamento de erro
- echo json_encode(['erro' => $e->getMessage()]);
- exit();
- }
- //Criar coleção de contribuições
- $contribuicaoLogCollection = new ContribuicaoLogCollection();
+ /*Controle de transação para que o log só seja registrado
+ caso o serviço de pagamento tenha sido executado*/
+ $this->pdo->beginTransaction();
- if (!$qtdParcelas || $qtdParcelas < 2) {
- //implementar mensagem de erro
- exit('O mínimo de parcelas deve ser 2');
- }
+ $contribuicaoLogDao = new ContribuicaoLogDAO($this->pdo);
- // Pegar a data atual
- $dataAtual = new DateTime();
+ //Criar coleção de contribuições
+ $contribuicaoLogCollection = new ContribuicaoLogCollection();
- if (isset($_POST['tipoGeracao']) && !empty($_POST['tipoGeracao'])) {
- //verificar autenticação do funcionário
- require_once '../../permissao/permissao.php';
+ if (!$qtdParcelas || $qtdParcelas < 2) {
+ //implementar mensagem de erro
+ exit('O mínimo de parcelas deve ser 2');
+ }
- session_start();
- permissao($_SESSION['id_pessoa'], 4);
+ // Pegar a data atual
+ $dataAtual = new DateTime();
- //escolher qual ação tomar
- $tipoGeracao = $_POST['tipoGeracao'];
-
- //chamar funções
- require_once '../helper/Util.php';
-
- $datasVencimento;
-
- $diaVencimento = ($_POST['dia']);
-
- $qtd_p = intval($_POST['parcelas']);
-
- switch ($tipoGeracao) {
- case '1':
- $datasVencimento = Util::mensalidadeInterna(1, $qtd_p, $diaVencimento);
- break;
- case '2':
- $datasVencimento = Util::mensalidadeInterna(2, $qtd_p, $diaVencimento);
- break;
- case '3':
- $datasVencimento = Util::mensalidadeInterna(3, $qtd_p, $diaVencimento);
- break;
- case '6':
- $datasVencimento = Util::mensalidadeInterna(6, $qtd_p, $diaVencimento);
- break;
- default:
- echo json_encode(['erro' => 'O tipo de geração é inválido.']);
- exit();
- }
+ if (isset($_POST['tipoGeracao']) && !empty($_POST['tipoGeracao'])) {
+ //verificar autenticação do funcionário
+ require_once '../../permissao/permissao.php';
- foreach ($datasVencimento as $dataVencimento) {
- $contribuicaoLog = new ContribuicaoLog();
- $contribuicaoLog
- ->setValor($valor)
- ->setCodigo($contribuicaoLog->gerarCodigo())
- ->setDataGeracao($dataAtual->format('Y-m-d'))
- ->setDataVencimento($dataVencimento)
- ->setSocio($socio)
- ->setGatewayPagamento($gatewayPagamento)
- ->setMeioPagamento($meioPagamento);
-
- //Inserir na coleção
- $contribuicaoLogCollection->add($contribuicaoLog);
- }
- } else {
+ session_start();
+ permissao($_SESSION['id_pessoa'], 4);
- // Verificar se o dia informado já passou neste mês
- if ($diaVencimento <= $dataAtual->format('d')) {
- // Se o dia informado já passou, começar a partir do próximo mês
- $dataAtual->modify('first day of next month');
- }
+ //escolher qual ação tomar
+ $tipoGeracao = $_POST['tipoGeracao'];
+
+ //chamar funções
+ require_once '../helper/Util.php';
- for ($i = 0; $i < $qtdParcelas; $i++) {
- // Clonar a data atual para evitar modificar o objeto original
- $dataVencimento = clone $dataAtual;
+ $datasVencimento;
- // Adicionar os meses de acordo com o índice da parcela
- $dataVencimento->modify("+{$i} month");
+ $diaVencimento = ($_POST['dia']);
- // Definir o dia do vencimento para o dia informado
- $dataVencimento->setDate($dataVencimento->format('Y'), $dataVencimento->format('m'), $diaVencimento);
+ $qtd_p = intval($_POST['parcelas']);
- // Ajustar a data caso o mês não tenha o dia informado (por exemplo, 30 de fevereiro)
- if ($dataVencimento->format('d') != $diaVencimento) {
- $dataVencimento->modify('last day of previous month');
+ switch ($tipoGeracao) {
+ case '1':
+ $datasVencimento = Util::mensalidadeInterna(1, $qtd_p, $diaVencimento);
+ break;
+ case '2':
+ $datasVencimento = Util::mensalidadeInterna(2, $qtd_p, $diaVencimento);
+ break;
+ case '3':
+ $datasVencimento = Util::mensalidadeInterna(3, $qtd_p, $diaVencimento);
+ break;
+ case '6':
+ $datasVencimento = Util::mensalidadeInterna(6, $qtd_p, $diaVencimento);
+ break;
+ default:
+ echo json_encode(['erro' => 'O tipo de geração é inválido.']);
+ exit();
}
- $contribuicaoLog = new ContribuicaoLog();
- $contribuicaoLog
- ->setValor($valor)
- ->setCodigo($contribuicaoLog->gerarCodigo())
- ->setDataGeracao($dataAtual->format('Y-m-d'))
- ->setDataVencimento($dataVencimento->format('Y-m-d'))
- ->setSocio($socio)
- ->setGatewayPagamento($gatewayPagamento)
- ->setMeioPagamento($meioPagamento);
-
- //Inserir na coleção
- $contribuicaoLogCollection->add($contribuicaoLog);
- }
- }
+ foreach ($datasVencimento as $dataVencimento) {
+ $contribuicaoLog = new ContribuicaoLog();
+ $contribuicaoLog
+ ->setValor($valor)
+ ->setCodigo($contribuicaoLog->gerarCodigo())
+ ->setDataGeracao($dataAtual->format('Y-m-d'))
+ ->setDataVencimento($dataVencimento)
+ ->setSocio($socio)
+ ->setGatewayPagamento($gatewayPagamento)
+ ->setMeioPagamento($meioPagamento);
+
+ //inserir na collection o resultado do método criar de contribuicaoDao
+ $contribuicaoLog = $contribuicaoLogDao->criar($contribuicaoLog);
+
+ $contribuicaoLogCollection->add($contribuicaoLog);
+ }
+ } else {
- try {
- /*Controle de transação para que o log só seja registrado
- caso o serviço de pagamento tenha sido executado*/
- $this->pdo->beginTransaction();
+ // Verificar se o dia informado já passou neste mês
+ if ($diaVencimento <= $dataAtual->format('d')) {
+ // Se o dia informado já passou, começar a partir do próximo mês
+ $dataAtual->modify('first day of next month');
+ }
+
+ for ($i = 0; $i < $qtdParcelas; $i++) {
+ // Clonar a data atual para evitar modificar o objeto original
+ $dataVencimento = clone $dataAtual;
- foreach ($contribuicaoLogCollection as $contribuicaoLog) {
- $contribuicaoLogDao = new ContribuicaoLogDAO($this->pdo);
- $contribuicaoLogDao->criar($contribuicaoLog);
+ // Adicionar os meses de acordo com o índice da parcela
+ $dataVencimento->modify("+{$i} month");
+
+ // Definir o dia do vencimento para o dia informado
+ $dataVencimento->setDate($dataVencimento->format('Y'), $dataVencimento->format('m'), $diaVencimento);
+
+ // Ajustar a data caso o mês não tenha o dia informado (por exemplo, 30 de fevereiro)
+ if ($dataVencimento->format('d') != $diaVencimento) {
+ $dataVencimento->modify('last day of previous month');
+ }
+
+ $contribuicaoLog = new ContribuicaoLog();
+ $contribuicaoLog
+ ->setValor($valor)
+ ->setCodigo($contribuicaoLog->gerarCodigo())
+ ->setDataGeracao($dataAtual->format('Y-m-d'))
+ ->setDataVencimento($dataVencimento->format('Y-m-d'))
+ ->setSocio($socio)
+ ->setGatewayPagamento($gatewayPagamento)
+ ->setMeioPagamento($meioPagamento);
+
+ //inserir na collection o resultado do método criar de contribuicaoDao
+ $contribuicaoLog = $contribuicaoLogDao->criar($contribuicaoLog);
+
+ $contribuicaoLogCollection->add($contribuicaoLog);
+ }
}
//Registrar na tabela de socio_log
@@ -304,13 +299,20 @@ public function criarCarne()
$socioDao->registrarLog($contribuicaoLog->getSocio(), $mensagem);
//Chamada do método de serviço de pagamento requisitado
- $caminhoCarne = $servicoPagamento->gerarCarne($contribuicaoLogCollection);
- if (!$caminhoCarne || empty($caminhoCarne)) {
+
+ //Método deverá retornar o caminho do carne e um array de contribuicões log
+ $resultado = $servicoPagamento->gerarCarne($contribuicaoLogCollection);
+ if (!$resultado || empty($resultado)) {
$this->pdo->rollBack();
} else {
+ //loop foreach para alterar o código no banco de dados das respectivas contribuições recebidas
+ foreach($resultado['contribuicoes'] as $contribuicao){
+ $contribuicaoLogDao->alterarCodigoPorId($contribuicao->getCodigo(), $contribuicao->getId());
+ }
+
$this->pdo->commit();
- echo json_encode(['link' => WWW . 'html/apoio/' . $caminhoCarne]);
+ echo json_encode(['link' => WWW . 'html/apoio/' . $resultado['link']]);
}
} catch (PDOException $e) {
//implementar tratamento de erro
diff --git a/html/apoio/service/PagarMeCarneService.php b/html/apoio/service/PagarMeCarneService.php
index 6f4be815..b9881b69 100755
--- a/html/apoio/service/PagarMeCarneService.php
+++ b/html/apoio/service/PagarMeCarneService.php
@@ -90,6 +90,7 @@ public function gerarCarne(ContribuicaoLogCollection $contribuicaoLogCollection)
//Implementar requisição para API
$pdf_links = [];
+ $codigosAPI = [];
// Iniciar a requisição cURL
$ch = curl_init();
@@ -123,6 +124,7 @@ public function gerarCarne(ContribuicaoLogCollection $contribuicaoLogCollection)
if ($httpCode === 200 || $httpCode === 201) {
$responseData = json_decode($response, true);
$pdf_links[] = $responseData['charges'][0]['last_transaction']['pdf'];
+ $codigosAPI[] = $responseData['code'];
} else {
echo json_encode(['Erro' => 'A API retornou o código de status HTTP ' . $httpCode]);
return false;
@@ -150,7 +152,13 @@ public function gerarCarne(ContribuicaoLogCollection $contribuicaoLogCollection)
return false;
}
- return $caminho;
+ //Pega os códigos retornados pela API e atribuí na propriedade codigo das contribuicoes de contribuicaoLogCollection
+ foreach($contribuicaoLogCollection as $index => $contribuicaoLog){
+ $contribuicaoLog->setCodigo($codigosAPI[$index]);
+ }
+
+ //Retorna o link e a coleção de contribuições
+ return ['link' => $caminho, 'contribuicoes' => $contribuicaoLogCollection];
}
public function salvarTemp($pdf_links)