class SignUp: def __init__(self): self.dbx = DatabaseX() self.colores = Colores() self.medidas = Medidas() self.user = "" self.correo = "" self.contra = "" def comprobacionUsuario(self, usuario): while usuario == "": print(self.colores.red("Debe llenar el campo de usuario")) usuario = input("Ingrese un nombre de usuario: ") sqlCount = f"SELECT COUNT(*) FROM myfitapp.usuario WHERE user = '******'" # Imprime para comprobar estructura del sqlCount # print(sqlCount) rowsNumDic = self.dbx.executeQueryOneRow(sqlCount) # Imprime el diccionario resultante de ejecutar sqlCount # print(rowsNumDic) rowsNum = rowsNumDic.get("COUNT(*)") # Imprime el numero de filas con ese nombre de usuario # print(rowsNum) if rowsNum == 0: # print("ok") self.user = usuario return True else: # print("mal") return False def comprobacionCorreo(self, correo): while correo == "": print(self.colores.red("Debe llenar el campo de correo")) correo = input("Ingrese su correo electronico: ") sqlCount = f"SELECT COUNT(*) FROM myfitapp.usuario WHERE correo = '{correo:}'" # Imprime para comprobar estructura del sqlCount # print(sqlCount) rowsNumDic = self.dbx.executeQueryOneRow(sqlCount) # Imprime el diccionario resultante de ejecutar sqlCount # print(rowsNumDic) rowsNum = rowsNumDic.get("COUNT(*)") # Imprime el número de correos con correo # print(rowsNum) if rowsNum == 0: # print("ok") self.correo = correo return True else: # print("mal") return False pass def comprobacionContra(self, contra): while (len(contra) > 12) or (len(contra) < 4): print(self.colores.red("Contraseña no válida")) contra = input( "Ingrese una contraseña de mínimo 4 y máximo 12 caracteres: ") self.contra = contra return True def guardaDatos(self): nombre = input("Ingrese su nombre: ") while nombre == "": print(self.colores.red("Debe llenar el campo nombre")) nombre = input("Ingrese su nombre: ") apellido = input("Ingrese su apellido: ") while apellido == "": print(self.colores.red("Debe llenar el campo apellido")) apellido = input("Ingrese su apellido: ") genero = 0 while True: try: print("Ingrese su género: ") print("(1) Masculino") print("(2) Femenino") genero = int( input("Ingrese el número de la opción que desea: ")) except Exception: print(self.colores.red("Valor no válido")) if genero == 1 or genero == 2: break else: print( self.colores.red( "Género no válido. Vuelva a ingresar su respuesta.")) altura = 0 while altura < 0.5 or altura > 3: try: altura = float(input("Ingrese su altura en metros: ")) if altura < 0.5 or altura > 3: print(self.colores.red("Ese valor de altura no es válido")) else: break except Exception: print( self.colores.red( "El campo de altura solo acepta valores numéricos")) peso = 0.00 while peso < 10 or peso > 440: try: peso = float(input("Ingrese su peso en kilogramos: ")) if peso < 10 or peso > 440: print(self.colores.red("Ese valor de peso no es válido")) else: break except Exception: print( self.colores.red( "El campo de peso solo acepta valores numéricos")) pesoDeseado = 0 while pesoDeseado < 10 or pesoDeseado > 440: try: pesoDeseado = float( input("Ingrese su peso deseado en kilogramos: ")) if pesoDeseado < 10 or pesoDeseado > 440: print( self.colores.red( "Ese valor de peso deseado no es válido")) else: break except Exception: print( self.colores.red( "El campo de peso deseado solo acepta valores numéricos" )) print("Ingrese su fecha de nacimiento con números") anno = 0 while anno < 1000 or anno > 9999: try: anno = int(input("Ingrese su año de nacimiento: ")) if anno < 1000 or anno > 9999: print(self.colores.red("Ese valor de año no es válido")) else: break except Exception: print( self.colores.red( "El campo de año solo acepta valores numéricos")) mes = 0 while mes < 1 or mes > 12: try: mes = int(input("Ingrese su mes de nacimiento: ")) if mes < 1 or mes > 12: print(self.colores.red("Ese valor de mes no es válido")) else: break except Exception: print( self.colores.red( "El campo de mes solo acepta valores numéricos")) while True: dia = 0 while True: try: dia = int(input("Ingrese su día de nacimiento: ")) break except Exception: print( self.colores.red( "El campo de día solo acepta valores numéricos")) if (mes == 1 or mes == 3 or mes == 5 or mes == 7 or mes == 8 or mes == 10 or mes == 12): if dia < 1 or dia > 31: print(self.colores.red("Valor de día no válido")) else: break elif mes == 4 or mes == 6 or mes == 9 or mes == 11: if dia < 1 or dia > 30: print(self.colores.red("Valor de día no válido")) else: break elif mes == 2 and (anno % 4 == 0 and (not (anno % 100 == 0) or anno % 400 == 0)): if dia < 1 or dia > 29: print(self.colores.red("Valor de día no válido")) else: break elif mes == 2: if dia < 1 or dia > 28: print(self.colores.red("Valor de día no válido")) else: break else: print(self.colores.red("Ese valor de día no es válido")) sql2 = ( "INSERT INTO myfitapp.usuario (id_usuario, nombre, apellido, correo, user, contra, id_genero, altura, pesoActual, pesoDeseado, nacimiento) " + f"VALUES (0, '{nombre}', '{apellido}', '{self.correo}', '{self.user}', '{self.contra}', {genero}, {altura}, {peso}, {pesoDeseado}, '{anno}-{mes}-{dia}');" ) insert = self.dbx.executeNonQueryBool(sql2) if insert: print(self.colores.green("Usuario registrado correctamente")) else: print( self.colores.red("No se ha podido registrar el nuevo usuario")) # mandar peso actual como primer registro del usuario en la tabla registro diario sqlCount = f"SELECT COUNT(id_usuario) from myfitapp.usuario where user = '******';" countDic = self.dbx.executeQueryOneRow(sqlCount) count = countDic.get("COUNT(id_usuario)") if count == 1: sqlId = ( f"SELECT id_usuario from myfitapp.usuario where user = '******';" ) IdUsuarioDic = self.dbx.executeQueryOneRow(sqlId) idUser = IdUsuarioDic.get("id_usuario") self.medidas.ingresarPrimerPeso(peso, idUser) else: print( self.colores.red( "No se ingresó el peso actual a la tabla registros diarios" ))
class Medidas: def __init__(self): self.colores = Colores() self.database = DatabaseX() self.peso = 0.00 self.cintura = 0.00 self.cuello = 0.00 def ingresarPrimerPeso(self, peso, idUsuario): sql = ( "INSERT INTO `myfitapp`.`registrodiario`(`id_registro`,`id_usuario`,`cintura`,`cuello`,`pesoActual`,`fecha`) " + f"VALUES(0,{idUsuario},{self.cintura},{self.cuello},{peso},curdate());" ) self.database.executeNonQueryBool(sql) def ingresarPeso(self, idUsuario): peso = 0.00 while peso < 0.01 or peso > 400: try: peso = float(input("Ingrese su peso en kilogramos: ")) if peso < 0.01 or peso > 400: print(self.colores.red("Ese valor de peso no es válido")) else: break except Exception: print( self.colores.red( "El campo de peso solo acepta valores numéricos")) self.peso = peso sqlCount = f"SELECT COUNT(id_registro) from registrodiario where fecha = curdate() and id_usuario = {idUsuario};" datos = self.database.executeQueryOneRow(sqlCount) count = datos.get("COUNT(id_registro)") if count == 0: sql = ( "INSERT INTO `myfitapp`.`registrodiario`(`id_registro`,`id_usuario`,`cintura`,`cuello`,`pesoActual`,`fecha`) " + f"VALUES(0,{idUsuario},{self.cintura},{self.cuello},{self.peso},curdate());" ) self.database.executeNonQueryBool(sql) else: sql = ( "UPDATE `myfitapp`.`registrodiario` " + f"SET `pesoActual` = {self.peso} where `fecha` = curDate() AND `id_usuario` = {idUsuario};" ) self.database.executeNonQueryBool(sql) print("") print(self.colores.green("El registro se guardó correctamente")) # Actualización del campo Peso Actual en la tabla Usuario sql1 = ( "UPDATE `myfitapp`.`usuario` " + f"SET `pesoActual` = {self.peso} where `id_usuario` = {idUsuario};" ) self.database.executeNonQueryBool(sql1) def ingresarCintura(self, idUsuario): cintura = 0.00 while cintura < 0.01 or cintura > 300: try: cintura = float( input("Ingrese su medida de cintura en centímetros: ")) if cintura < 0.01 or cintura > 300: print( self.colores.red("Ese valor de cintura no es válido")) else: break except Exception: print( self.colores.red( "El campo de cintura solo acepta valores numéricos")) self.cintura = cintura sqlCount = f"SELECT COUNT(id_registro) from registrodiario where fecha = curdate() and id_usuario = {idUsuario};" datos = self.database.executeQueryOneRow(sqlCount) count = datos.get("COUNT(id_registro)") if count == 0: sql = ( "INSERT INTO `myfitapp`.`registrodiario`(`id_registro`,`id_usuario`,`cintura`,`cuello`,`pesoActual`,`fecha`) " + f"VALUES(0,{idUsuario},{self.cintura},{self.cuello},{self.peso},curdate());" ) self.database.executeNonQueryBool(sql) else: sql = ( "UPDATE `myfitapp`.`registrodiario` " + f"SET `cintura` = {self.cintura} where `fecha` = curDate() AND `id_usuario` = {idUsuario};" ) self.database.executeNonQueryBool(sql) print("") print(self.colores.green("El registro se guardó correctamente")) def ingresarCuello(self, idUsuario): cuello = 0.00 while cuello < 0.01 or cuello > 200: try: cuello = float( input("Ingrese su medida de cuello en centímetros: ")) if cuello < 0.01 or cuello > 200: print(self.colores.red("Ese valor de cuello no es válido")) else: break except Exception: print( self.colores.red( "El campo de cuello solo acepta valores numéricos")) self.cuello = cuello sqlCount = f"SELECT COUNT(id_registro) from registrodiario where fecha = curdate() and id_usuario = {idUsuario};" datos = self.database.executeQueryOneRow(sqlCount) count = datos.get("COUNT(id_registro)") if count == 0: sql = ( "INSERT INTO `myfitapp`.`registrodiario`(`id_registro`,`id_usuario`,`cintura`,`cuello`,`pesoActual`,`fecha`) " + f"VALUES(0,{idUsuario},{self.cintura},{self.cuello},{self.peso},curdate());" ) self.database.executeNonQueryBool(sql) else: sql = ( "UPDATE `myfitapp`.`registrodiario` " + f"SET `cuello` = {self.cuello} where `fecha` = curDate() AND `id_usuario` = {idUsuario};" ) self.database.executeNonQueryBool(sql) print("") print(self.colores.green("El registro se guardó correctamente"))
eleccion = int(input("Ingrese el número de la opción que desea: ")) break except Exception: print(colores.red("Este campo solo acepta valores numéricos")) print("") if eleccion == 0: break elif eleccion == 1: login = Login() usuario = input("Ingrese su nombre de usuario: ") contra = input("Ingrese su contraseña: ") comprobacion = login.comprobacion(usuario, contra) if comprobacion: print("") print(colores.green("Iniciando sesión...")) idUsuario = login.idUsuario() break else: print("") print(colores.red("Usuario o contraseña incorrectos")) elif eleccion == 2: signUp = SignUp() while True: usuario = input("Ingrese un nombre de usuario: ") compUsuario = signUp.comprobacionUsuario(usuario) if compUsuario: while True: correo = input("Ingrese su correo electronico: ") compCorreo = signUp.comprobacionCorreo(correo) if compCorreo: