Coverage for backend \ app \ ParametrosSistema \ repositories \ parametroSistemaRepository.py: 21.43%
56 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.ParametrosSistema.models.parametroSistemaModel import ParametroSistema
2from app.ParametrosSistema.schemas.parametroSistemaSchemas import *
4class ParametroSistemaRepository:
5 def __init__(self, dbSession):
6 self.dbSession = dbSession
8 def listarParametros(self):
9 return self.dbSession.query(ParametroSistema).all()
11 def obtenerPorId(self, idParametro: int):
12 return self.dbSession.query(ParametroSistema).filter(ParametroSistema.idParametroSistema == idParametro).first()
14 def validarClaveExistente(self, clave: str, excluirId: int = None):
15 query = self.dbSession.query(ParametroSistema).filter(ParametroSistema.claveParametro == clave)
16 if excluirId is not None:
17 query = query.filter(ParametroSistema.idParametroSistema != excluirId)
18 return query.first()
20 def crearParametro(self, parametro: ParametroSistemaCrearSchema):
21 if self.validarClaveExistente(parametro.claveParametro):
22 return None
23 nuevo = ParametroSistema(claveParametro=parametro.claveParametro, valorParametro=parametro.valorParametro)
24 self.dbSession.add(nuevo)
25 self.dbSession.commit()
26 self.dbSession.refresh(nuevo)
27 return nuevo
29 def modificarParametro(self, idParametro: int, parametroActualizar: ParametroSistemaActualizarSchema):
30 parametro = self.obtenerPorId(idParametro)
31 if not parametro:
32 return None
33 datos = parametroActualizar.model_dump(exclude_unset=True)
34 # Validar que la nueva clave (si viene) no exista en otro registro
35 if "claveParametro" in datos:
36 claveNueva = datos["claveParametro"]
37 # Buscar por clave sin excluir y verificar explícitamente el id
38 existente = self.validarClaveExistente(claveNueva)
39 if existente and existente.idParametroSistema != idParametro:
40 # Retornar bandera False para indicar conflicto de clave
41 return False
42 for campo, valor in datos.items():
43 if campo in ["claveParametro", "valorParametro"]:
44 setattr(parametro, campo, valor)
45 self.dbSession.commit()
46 self.dbSession.refresh(parametro)
47 return parametro
49 def deshabilitarParametro(self, idParametro: int):
50 parametro = self.obtenerPorId(idParametro)
51 if not parametro:
52 return None
53 parametro.activoParametro = False
54 self.dbSession.commit()
55 self.dbSession.refresh(parametro)
56 return parametro
58 def crearParametrosIniciales(self):
59 parametrosIniciales = [
60 {"claveParametro": "nombreNegocio", "valorParametro": "DALCT Market"},
61 {"claveParametro": "direccionNegocio", "valorParametro": "Quito, Av. Morán Valverde y OE3H"},
62 {"claveParametro": "telefonoNegocio", "valorParametro": "02-3450538"},
63 {"claveParametro": "correoNegocio", "valorParametro": "contacto@dalctmarket.com"},
64 {"claveParametro": "IVA", "valorParametro": "15"},
65 {"claveParametro": "logoNegocio", "valorParametro": "/static/logo.png"},
66 ]
68 for p in parametrosIniciales:
69 existe = self.validarClaveExistente(p["claveParametro"])
70 if not existe:
71 nuevo = ParametroSistema(**p)
72 self.dbSession.add(nuevo)
73 print("Parámetros por defecto creados...!")
74 self.dbSession.commit()
75 self.dbSession.close()