Revisión | 7 (tree) |
---|---|
Tiempo | 2019-12-14 06:07:49 |
Autor | ![]() |
Criada função que detecta se o usuário está dentro ou fora (IsCheckedIn)
Desenvolvidas (mas ainda não usadas) duas consultas para incrementar o cico online
@@ -10,7 +10,7 @@ | ||
10 | 10 | FireDAC.VCLUI.Wait, Data.DB, FireDAC.Comp.Client, FireDAC.Phys.SQLite, |
11 | 11 | FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs, FireDAC.Stan.Param, |
12 | 12 | FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, |
13 | - Soap.InvokeRegistry, Soap.Rio, Soap.SOAPHTTPClient; | |
13 | + Soap.InvokeRegistry, Soap.Rio, Soap.SOAPHTTPClient, UCiCo; | |
14 | 14 | |
15 | 15 | type |
16 | 16 | TTipoDeResposta = (tdrFalha,tdrAviso,tdrSucesso); |
@@ -41,6 +41,7 @@ | ||
41 | 41 | procedure GUIToConfig; |
42 | 42 | procedure ConnectToDataBase; |
43 | 43 | procedure Responder(AMensagemAProcessar: TMensagemAProcessar; ATexto: string; ATipoDeResposta: TTipoDeResposta); |
44 | + function IsCheckedIn(ACheckInChecOutInfo: TCheckInChecOutInfo): Boolean; | |
44 | 45 | public |
45 | 46 | { Public declarations } |
46 | 47 | procedure RealizarProcessamentoDeMensagens; |
@@ -49,7 +50,7 @@ | ||
49 | 50 | implementation |
50 | 51 | |
51 | 52 | uses |
52 | - UFORMPrincipal, MaskUtils, Windows, DateUtils, UCiCo, UConfiguracoes; | |
53 | + UFORMPrincipal, MaskUtils, Windows, DateUtils, UConfiguracoes; | |
53 | 54 | |
54 | 55 | const |
55 | 56 | TIMEOUT_INTERVAL = 60; // segundos |
@@ -231,6 +232,16 @@ | ||
231 | 232 | end; |
232 | 233 | end; |
233 | 234 | |
235 | +// Retorna true se o estado atual for Checked-In (Se o funcionário está dentro) | |
236 | +// Retorna false se o estado atual for Checked-Out (Se o funcionário está fora) | |
237 | +function TDAMOPrincipal.IsCheckedIn(ACheckInChecOutInfo: TCheckInChecOutInfo): Boolean; | |
238 | +begin | |
239 | + // 1. Histórico > 0 e Último registro = ci => True (Checked-In) | |
240 | + // 2. Histórico > 0 e Último registro = co => False (Checked-Out) | |
241 | + // 3. Histórico = 0 => False (Checked-Out) | |
242 | + Result := (Length(ACheckInChecOutInfo.History) > 0) and (ACheckInChecOutInfo.History[High(ACheckInChecOutInfo.History)].Direction = 'ci') | |
243 | +end; | |
244 | + | |
234 | 245 | procedure TDAMOPrincipal.ProcessarMensagens; |
235 | 246 | var |
236 | 247 | MAP: TMensagemAProcessar; |
@@ -261,7 +272,7 @@ | ||
261 | 272 | // de frequência, permitindo assim o envio de uma mensagem que |
262 | 273 | // duplicaria a situação do usuário (dois registros de entrada). Caso |
263 | 274 | // isso aconteça... |
264 | - if (Length(CHI.History) > 0) and (CHI.History[High(CHI.History)].Direction = 'ci') then | |
275 | + if IsCheckedIn(CHI) then | |
265 | 276 | begin |
266 | 277 | // ...envia uma mensagem de aviso a respeito do Check-In já ter sido |
267 | 278 | // realizado anteriormente e logo na sequencia uma segunda mensagem, |
@@ -298,7 +309,7 @@ | ||
298 | 309 | // de frequência, permitindo assim o envio de uma mensagem que |
299 | 310 | // duplicaria a situação do usuário (dois registros de saída). Caso |
300 | 311 | // isso aconteça... |
301 | - if (Length(CHI.History) > 0) and (CHI.History[High(CHI.History)].Direction = 'co') then | |
312 | + if not IsCheckedIn(CHI) then | |
302 | 313 | begin |
303 | 314 | // ...envia uma mensagem de aviso a respeito do Check-Out já ter |
304 | 315 | // sido realizado anteriormente e logo na sequencia uma segunda |
@@ -47,51 +47,103 @@ | ||
47 | 47 | } else if (isset($_POST["ss"])) { |
48 | 48 | |
49 | 49 | } else if (isset($_POST["ms"])) { |
50 | - if (file_exists("./db/cico.db")) { | |
51 | - $db = new PDO("sqlite:./db/cico.db",null,null,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); | |
52 | - try { | |
53 | - $sql = <<<EOS | |
54 | - select id as idrequisicao | |
55 | - , null as idresposta | |
56 | - , de | |
57 | - , para | |
58 | - , envio | |
59 | - , mensagem | |
60 | - , processada | |
61 | - from mensagens | |
62 | - where de = '$cpfmatricula' | |
63 | -union | |
64 | - select idpai as idrequisicao | |
65 | - , id as idresposta | |
66 | - , de | |
67 | - , para | |
68 | - , envio | |
69 | - , mensagem | |
70 | - , null as processada | |
71 | - from mensagens | |
72 | - where para = '$cpfmatricula' | |
73 | -EOS; | |
74 | - $resultSet = $db->query($sql); | |
75 | - $resposta = <<<EOH | |
76 | - <table class="status" border="1"> | |
77 | - <tr> | |
78 | - <td>idrequisicao</td><td>idresposta</td><td>de</td><td>para</td><td>envio</td><td>mensagem</td><td>processada</td> | |
79 | - </tr> | |
80 | -EOH; | |
81 | - while ($row = $resultSet->fetchObject()) { | |
82 | - $resposta .= <<<EOH | |
83 | - <tr> | |
84 | - <td>{$row->idrequisicao}</td><td>{$row->idresposta}</td><td>{$row->de}</td><td>{$row->para}</td><td>{$row->envio}</td><td>{$row->mensagem}</td><td>{$row->processada}</td> | |
85 | - </tr> | |
86 | -EOH; | |
87 | - } | |
88 | - $resposta .= <<<EOH | |
89 | - </table> | |
90 | -EOH; | |
91 | - } finally { | |
92 | - $db = null; | |
93 | - } | |
94 | - } | |
50 | + | |
51 | + | |
52 | +/* | |
53 | + último status confirmado. Se nada for retornado, nenhum status foi confirmado | |
54 | + e consequentemente o status atual é indefinido | |
55 | + removendo a condição de feito mostra um historico geral de mensagens | |
56 | + processadas (é necessário remover o order by e o limit) | |
57 | + select men.id as idRequisicao | |
58 | + , men.de as idUsuario | |
59 | + , men.mensagem as requisicao | |
60 | + , men.envio as enviadaEm | |
61 | + , men2.id as idResposta | |
62 | + , men2.mensagem as resposta | |
63 | + , men2.envio as respondidaEm | |
64 | + from mensagens men | |
65 | + join mensagens men2 on men.id = men2.idpai | |
66 | + where men.de = '023227194121842951' | |
67 | + and men.processada = 1 | |
68 | + and men2.mensagem = 'Feito!' -- remova pra obter um historico geral | |
69 | +order by men.id desc | |
70 | + limit 1 | |
71 | + | |
72 | + | |
73 | + última mensagem em aberto, ou seja, ainda sem resposta. remover order by e | |
74 | + limit retorna uma visão geral da última mensagem que ainda não foi respondida, | |
75 | + incluindo todos os erros | |
76 | + select men.id as idRequisicao | |
77 | + , men.de as idUsuario | |
78 | + , men.mensagem as requisicao | |
79 | + , men.envio as enviadaEm | |
80 | + , men2.id as idResposta | |
81 | + , men2.mensagem as resposta | |
82 | + , men2.envio as respondidaEm | |
83 | + from mensagens men | |
84 | + join mensagens men2 on men.id = men2.idpai | |
85 | + where men.de = '023227194151842951' | |
86 | + and men.processada = 0 | |
87 | +order by men2.id desc | |
88 | + limit 1 | |
89 | + | |
90 | +*/ | |
91 | + | |
92 | + | |
93 | +// O bloco abaixo mostra todo o histórico de mensagens, talvez seja | |
94 | +// interressante mostrar isso em forma de árvore, já que uma mensagem pode receber várias respostas | |
95 | +// if (file_exists("./db/cico.db")) { | |
96 | +// $db = new PDO("sqlite:./db/cico.db",null,null,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); | |
97 | +// try { | |
98 | +// $sql = <<<EOS | |
99 | +// select id as idrequisicao | |
100 | +// , null as idresposta | |
101 | +// , de | |
102 | +// , para | |
103 | +// , envio | |
104 | +// , mensagem | |
105 | +// , processada | |
106 | +// from mensagens | |
107 | +// where de = '$cpfmatricula' | |
108 | +//union | |
109 | +// select idpai as idrequisicao | |
110 | +// , id as idresposta | |
111 | +// , de | |
112 | +// , para | |
113 | +// , envio | |
114 | +// , mensagem | |
115 | +// , null as processada | |
116 | +// from mensagens | |
117 | +// where para = '$cpfmatricula' | |
118 | +//EOS; | |
119 | +// $resultSet = $db->query($sql); | |
120 | +// $resposta = <<<EOH | |
121 | +// <table class="status" border="1"> | |
122 | +// <tr> | |
123 | +// <td>idrequisicao</td><td>idresposta</td><td>de</td><td>para</td><td>envio</td><td>mensagem</td><td>processada</td> | |
124 | +// </tr> | |
125 | +//EOH; | |
126 | +// while ($row = $resultSet->fetchObject()) { | |
127 | +// $resposta .= <<<EOH | |
128 | +// <tr> | |
129 | +// <td>{$row->idrequisicao}</td><td>{$row->idresposta}</td><td>{$row->de}</td><td>{$row->para}</td><td>{$row->envio}</td><td>{$row->mensagem}</td><td>{$row->processada}</td> | |
130 | +// </tr> | |
131 | +//EOH; | |
132 | +// } | |
133 | +// $resposta .= <<<EOH | |
134 | +// </table> | |
135 | +//EOH; | |
136 | +// } finally { | |
137 | +// $db = null; | |
138 | +// } | |
139 | +// } | |
140 | + | |
141 | + | |
142 | + | |
143 | + | |
144 | + | |
145 | + | |
146 | + | |
95 | 147 | } |
96 | 148 | } |
97 | 149 | } else { |