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
« 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 *
4class ClienteRepository:
5 def __init__(self, dbSession):
6 self.dbSession = dbSession
8 def listarClientes(self):
9 return self.dbSession.query(Cliente).all()
11 def obtenerPorId(self, idCliente: int):
12 return self.dbSession.query(Cliente).filter(Cliente.idCliente == idCliente).first()
14 def validarCedulaExistente(self, cedula: str):
15 return self.dbSession.query(Cliente).filter(Cliente.cedulaCliente == cedula).first()
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
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
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
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()