Coverage for backend \ app \ Clientes \ repositories \ clienteRepository.py: 24.49%

49 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-29 16:13 -0500

1from app.Clientes.modells.clienteModel import Cliente 

2from app.Clientes.schemas.clienteSchemas import * 

3 

4class ClienteRepository: 

5 def __init__(self, dbSession): 

6 self.dbSession = dbSession 

7 

8 def listarClientes(self): 

9 return self.dbSession.query(Cliente).all() 

10 

11 def obtenerPorId(self, idCliente: int): 

12 return self.dbSession.query(Cliente).filter(Cliente.idCliente == idCliente).first() 

13 

14 def validarCedulaExistente(self, cedula: str): 

15 return self.dbSession.query(Cliente).filter(Cliente.cedulaCliente == cedula).first() 

16 

17 def crearCliente(self, cliente: ClienteCrearSchema): 

18 if self.validarCedulaExistente(cliente.cedulaCliente): 

19 return None 

20 nuevo = Cliente( 

21 nombreCliente=cliente.nombreCliente, 

22 cedulaCliente=cliente.cedulaCliente, 

23 telefonoCliente=cliente.telefonoCliente, 

24 direccionCliente=cliente.direccionCliente, 

25 emailCliente=cliente.emailCliente, 

26 activoCliente=True 

27 ) 

28 self.dbSession.add(nuevo) 

29 self.dbSession.commit() 

30 self.dbSession.refresh(nuevo) 

31 return nuevo 

32 

33 def modificarCliente(self, idCliente: int, clienteActualizar: ClienteActualizarSchema): 

34 cliente = self.obtenerPorId(idCliente) 

35 if not cliente: 

36 return None 

37 datos = clienteActualizar.model_dump(exclude_unset=True) 

38 camposValidos = ["nombreCliente", "telefonoCliente", "direccionCliente", "emailCliente", "activoCliente"] 

39 for campo, valor in datos.items(): 

40 if campo in camposValidos: 

41 setattr(cliente, campo, valor) 

42 self.dbSession.commit() 

43 self.dbSession.refresh(cliente) 

44 return cliente 

45 

46 def deshabilitarCliente(self, idCliente: int): 

47 cliente = self.obtenerPorId(idCliente) 

48 if not cliente: 

49 return None 

50 cliente.activoCliente = False 

51 self.dbSession.commit() 

52 self.dbSession.refresh(cliente) 

53 return cliente 

54 

55 def crearClientesIniciales(self): 

56 clientes = [ 

57 {"nombreCliente": "María Gómez", "cedulaCliente": "1712345678", "telefonoCliente": "0998765432", "direccionCliente": "Calle La Pradera N56-78, Quito, Ecuador", "emailCliente": "maria.gomez@example.com", "activoCliente": True}, 

58 {"nombreCliente": "Luis Torres", "cedulaCliente": "1721122233", "telefonoCliente": "0981122334", "direccionCliente": "Av. 10 de Agosto N23-45, Quito, Ecuador", "emailCliente": "luis.torres@example.com", "activoCliente": True}, 

59 {"nombreCliente": "Ana Morales", "cedulaCliente": "1723344556", "telefonoCliente": "0992233445", "direccionCliente": "Calle Los Pinos N12-34, Quito, Ecuador", "emailCliente": "ana.morales@example.com", "activoCliente": True}, 

60 {"nombreCliente": "Carlos Ramírez", "cedulaCliente": "1724455667", "telefonoCliente": "0983344556", "direccionCliente": "Av. Shyris N45-67, Quito, Ecuador", "emailCliente": "carlos.ramirez@example.com", "activoCliente": True}, 

61 {"nombreCliente": "Paola Fernández", "cedulaCliente": "1725566778", "telefonoCliente": "0994455667", "direccionCliente": "Calle Guayaquil N78-90, Quito, Ecuador", "emailCliente": "paola.fernandez@example.com", "activoCliente": True}, 

62 {"nombreCliente": "Consumidor Final", "cedulaCliente": "9999999999", "telefonoCliente": "0000000000", "direccionCliente": "No especifica", "emailCliente": "consumidor.final@ejemplo.com", "activoCliente": True} 

63 ] 

64 for c in clientes: 

65 existe = self.validarCedulaExistente(c["cedulaCliente"]) 

66 if not existe: 

67 nuevo = Cliente(**c) 

68 self.dbSession.add(nuevo) 

69 print("Clientes por defecto creados...!") 

70 self.dbSession.commit() 

71 self.dbSession.close()