ProcedimentoAndamentoRN.php
2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
require_once dirname(__FILE__) . '/../../../SEI.php';
/**
* Controla o log de estados da expadição de um procedimento pelo modulo SEI
*
* @autor Join Tecnologia
*/
class ProcedimentoAndamentoRN extends InfraRN {
protected $isSetOpts = false;
protected $dblIdProcedimento;
protected $dblIdTramit;
protected $numTarefa;
/**
* Instância do driver de conexão com o banco de dados
*
* @var Infra[Driver]
*/
protected $bancoSEI = null;
public function __destruct() {
if(!empty($this->bancoSEI)) {
$this->bancoSEI->fecharConexao();
}
}
/**
* Invés de aproveitar o singleton do BancoSEI criamos uma nova instância para
* não ser afetada pelo transation
*
* @return Infra[Driver]
*/
protected function inicializarObjInfraIBanco() {
if(empty($this->bancoSEI)) {
$this->bancoSEI = new BancoSEI();
$this->bancoSEI->abrirConexao();
}
return $this->bancoSEI;
}
public function setOpts($dblIdProcedimento = 0, $dblIdTramit = 0, $numTarefa){
$this->dblIdProcedimento = $dblIdProcedimento;
$this->dblIdTramit = $dblIdTramit;
$this->numTarefa = $numTarefa;
$this->isSetOpts = true;
}
/**
* Adiciona um novo andamento à um procedimento que esta sendo expedido para outra unidade
*
* @param string $strMensagem
* @param string $strSituacao Tipo ENUM(S,N)
* @return null
*/
public function cadastrar($strMensagem = 'Não informado', $strSituacao = 'N'){
if($this->isSetOpts === false) {
throw new InfraException('Log do cadastro de procedimento não foi configurado');
}
$objInfraIBanco = $this->inicializarObjInfraIBanco();
$objInfraIBanco->abrirTransacao();
$hash = md5($this->dblIdProcedimento.$strMensagem);
$objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
$objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
$objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
$objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento);
$objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit);
$objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
$objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
$objProcedimentoAndamentoDTO->setStrHash($hash);
$objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa);
$objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco);
$objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO);
$objInfraIBanco->confirmarTransacao();
}
}