jcnok commited on
Commit
b6ca8df
·
verified ·
1 Parent(s): 145f273

add consulta telefone

Browse files
Files changed (1) hide show
  1. app.py +20 -79
app.py CHANGED
@@ -4,8 +4,8 @@ from typing import List
4
  from sqlite3 import connect, Connection
5
  from uvicorn import run
6
  import os
7
- app = FastAPI()
8
 
 
9
 
10
  # Adiciona um log para listar os arquivos e as permissões
11
  os.system("ls -l /app/")
@@ -233,98 +233,39 @@ def create_atendimento_geral(atendimento_geral: AtendimentoGeral, db: Connection
233
  finally:
234
  cursor.close()
235
 
236
- @app.get("/verificar-cliente/{cpf}")
237
- def verificar_cliente(cpf: str, db: Connection = Depends(get_db)):
238
  cursor = db.cursor()
239
  try:
240
- cursor.execute("SELECT * FROM Clientes WHERE cpf = ?", (cpf,))
241
  cliente = cursor.fetchone()
242
- if cliente:
243
- return {"message": "Cliente encontrado", "cliente": cliente}
244
- else:
245
  raise HTTPException(status_code=404, detail="Cliente não encontrado")
246
- finally:
247
- cursor.close()
248
 
249
- @app.get("/verificar-planos/{cpf}")
250
- def verificar_planos(cpf: str, db: Connection = Depends(get_db)):
251
- cursor = db.cursor()
252
- try:
253
- cursor.execute("""
254
- SELECT Planos.*, Pagamentos.status_pagamento
255
- FROM Clientes
256
- JOIN Contratos ON Clientes.id_cliente = Contratos.id_cliente
257
- JOIN Planos ON Contratos.id_plano = Planos.id_plano
258
- LEFT JOIN Pagamentos ON Contratos.id_contrato = Pagamentos.id_contrato
259
- WHERE Clientes.cpf = ?
260
- """, (cpf,))
261
- planos = cursor.fetchall()
262
 
263
- if not planos:
264
- raise HTTPException(status_code=404, detail="Nenhum plano encontrado para este cliente")
 
265
 
266
- planos_em_dia = all(plano[-1] == 'Pago' for plano in planos)
267
- return {"planos": planos, "em_dia": planos_em_dia}
268
  finally:
269
  cursor.close()
270
 
271
- @app.get("/verificar-chamados-abertos/{cpf}")
272
- def verificar_chamados_abertos(cpf: str, db: Connection = Depends(get_db)):
 
273
  cursor = db.cursor()
274
  try:
275
- cursor.execute("""
276
- SELECT Solicitacoes.*
277
- FROM Clientes
278
- JOIN Solicitacoes ON Clientes.id_cliente = Solicitacoes.id_cliente
279
- WHERE Clientes.cpf = ? AND Solicitacoes.status_solicitacao = 'Aberto'
280
- """, (cpf,))
281
- chamados_abertos = cursor.fetchall()
282
-
283
- if chamados_abertos:
284
- return {"message": "Chamados abertos encontrados", "chamados": chamados_abertos}
285
- else:
286
- return {"message": "Nenhum chamado aberto encontrado"}
287
- finally:
288
- cursor.close()
289
-
290
- @app.post("/criar-chamado/")
291
- def criar_chamado(chamado: Chamado, db: Connection = Depends(get_db)):
292
- cursor = db.cursor()
293
- try:
294
- cursor.execute("SELECT * FROM Clientes WHERE cpf = ?", (chamado.cpf,))
295
  cliente = cursor.fetchone()
296
-
297
- if not cliente:
298
  raise HTTPException(status_code=404, detail="Cliente não encontrado")
299
-
300
- # Verificar plano e chamados abertos
301
- planos_response = verificar_planos(chamado.cpf, db)
302
- chamados_response = verificar_chamados_abertos(chamado.cpf, db)
303
-
304
- if not planos_response["em_dia"]:
305
- return {"message": "Cliente com planos pendentes", "redirecionamento": "financeiro"}
306
-
307
- if chamados_response["chamados"]:
308
- return {"message": "Cliente já possui chamados abertos", "chamados": chamados_response["chamados"]}
309
-
310
- # Direcionar com base no tipo de solicitação
311
- if chamado.tipo_solicitacao == "técnico":
312
- cursor.execute("INSERT INTO Suporte_Tecnico (id_cliente, descricao_suporte, data_suporte, status_suporte) VALUES (?, ?, date('now'), 'Aberto')",
313
- (cliente[0], chamado.descricao))
314
- setor = "suporte técnico"
315
- elif chamado.tipo_solicitacao == "financeiro":
316
- cursor.execute("INSERT INTO Solicitacoes (id_cliente, tipo_solicitacao, descricao_solicitacao, data_solicitacao, status_solicitacao) VALUES (?, 'financeiro', ?, date('now'), 'Aberto')",
317
- (cliente[0], chamado.descricao))
318
- setor = "financeiro"
319
- else:
320
- cursor.execute("INSERT INTO Solicitacoes (id_cliente, tipo_solicitacao, descricao_solicitacao, data_solicitacao, status_solicitacao) VALUES (?, 'comercial', ?, date('now'), 'Aberto')",
321
- (cliente[0], chamado.descricao))
322
- setor = "comercial"
323
-
324
- db.commit()
325
- return {"message": f"Chamado criado e direcionado para o setor {setor}"}
326
  finally:
327
- cursor.close()
328
 
 
329
  if __name__ == "__main__":
330
- run(app, host="0.0.0.0", port=7860)
 
4
  from sqlite3 import connect, Connection
5
  from uvicorn import run
6
  import os
 
7
 
8
+ app = FastAPI()
9
 
10
  # Adiciona um log para listar os arquivos e as permissões
11
  os.system("ls -l /app/")
 
233
  finally:
234
  cursor.close()
235
 
236
+ @app.post("/abrir-chamado/")
237
+ def abrir_chamado(chamado: Chamado, db: Connection = Depends(get_db)):
238
  cursor = db.cursor()
239
  try:
240
+ cursor.execute("SELECT id_cliente FROM Clientes WHERE cpf = ?", (chamado.cpf,))
241
  cliente = cursor.fetchone()
242
+ if cliente is None:
 
 
243
  raise HTTPException(status_code=404, detail="Cliente não encontrado")
 
 
244
 
245
+ id_cliente = cliente[0]
 
 
 
 
 
 
 
 
 
 
 
 
246
 
247
+ cursor.execute("INSERT INTO Solicitacoes (id_cliente, tipo_solicitacao, descricao_solicitacao, data_solicitacao, status_solicitacao) VALUES (?, ?, ?, datetime('now'), 'aberto')",
248
+ (id_cliente, chamado.tipo_solicitacao, chamado.descricao))
249
+ db.commit()
250
 
251
+ return {"message": "Chamado aberto com sucesso"}
 
252
  finally:
253
  cursor.close()
254
 
255
+ # Adicionando rota para verificar cliente por telefone
256
+ @app.get("/verificar-cliente-telefone/{telefone}", response_model=Cliente)
257
+ def verificar_cliente_telefone(telefone: str, db: Connection = Depends(get_db)):
258
  cursor = db.cursor()
259
  try:
260
+ cursor.execute("SELECT * FROM Clientes WHERE telefone = ?", (telefone,))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  cliente = cursor.fetchone()
262
+ if cliente is None:
 
263
  raise HTTPException(status_code=404, detail="Cliente não encontrado")
264
+
265
+ return Cliente(**{"id_cliente": cliente[0], "cpf": cliente[1], "nome": cliente[2], "telefone": cliente[3], "email": cliente[4], "cidade": cliente[5], "estado": cliente[6]})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  finally:
267
+ cursor.close()
268
 
269
+ # Configuração para execução do servidor
270
  if __name__ == "__main__":
271
+ run(app, host="0.0.0.0", port=8000)