def registrar_us():
    form_us={}
    print("")
    print("=============== REGISTRACION DE USUARIO ===================")
    form_us["nombre"]=input("Inserte su nombre: ")
    form_us["apellido"]=input("inserte su apellido: ")
    form_us["fecha_nac"]=input("Inserte su fecha de nacimiento (año/mes/dia): ")
    form_us["interes"]=input("¿Que producto es de su interes? : ")
    form_us["celular"]=input("Inserte su celular: ")
    form_us["email"]=input("inserte su email de contacto: ")
    form_us["password"]=getpass.getpass("(Recuerda que tiene que tener mas de 6 caracteres, al menos una mayuscula,un numero y un caracter especial)\n inserte una contraseña: ")
    form_us["cpassword"]=getpass.getpass("confirme su contraseña: ")
    form_us["genero"]=input("Inserte su genero: ")
    form_us["ciudad"]=input("Inserte su ciudad: ")
    form_us["banco"]=input("Inserte el nombre de su banco: ")
    if validator.validar_us(form_us) == {}:
        if len(form_us["ciudad"]) > 3:
            sql="select nombre from ciudades"
            dba.get_cursor().execute(sql)
            result=dba.get_cursor().fetchall()
            for i in result:
                lista_ciudades.append(i[0])
            if (form_us["ciudad"] in lista_ciudades) == True:
                sql="select ID from ciudades where nombre=%s"
                val=(form_us["ciudad"],)
                dba.get_cursor().execute(sql,val)
                result=dba.get_cursor().fetchone()
                ciu1=Ciudad(form_us["ciudad"])
                ciu1.set_id(result[0])
            else:
                ciu1=Ciudad(form_us["ciudad"])
                sql="INSERT INTO ciudades (nombre) values (%s)"
                val=((form_us["ciudad"]),)
                dba.get_cursor().execute(sql,val)
                dba.get_conexion().commit()
                ciu1.set_id(dba.get_cursor().lastrowid)
        if len (form_us["banco"]) > 6:
            sql="select nombre from bancos"
            dba.get_cursor().execute(sql)
            result=dba.get_cursor().fetchall()
            for n in result:
                lista_bancos.append(n[0])
            if (form_us["banco"] in lista_bancos) == True:
                sql="select ID from bancos where nombre=%s"
                val=(form_us["banco"],)
                dba.get_cursor().execute(sql,val)
                result=dba.get_cursor().fetchone()
                ban1=Banco(form_us["banco"])
                ban1.set_id(result[0])
            else:
                ban1=Banco(form_us["banco"])
                sql="INSERT INTO bancos (nombre) values (%s)"
                val=((form_us["banco"]),)
                dba.get_cursor().execute(sql,val)
                dba.get_conexion().commit()
                ban1.set_id(dba.get_cursor().lastrowid)
       
        u1=Usuario(0,form_us["nombre"],form_us["apellido"],form_us["fecha_nac"],form_us["interes"],form_us["celular"],form_us["email"],form_us["password"],form_us["genero"],ciu1.get_id(),ban1.get_id())
        u1.save()
        print("Usuario registrado exitosamente!")
        print("==================================================")
    else:
        print(validator.validar_us(form_us))
def ejecutarOpcion1(opcion,user,bank):
    if opcion == 1:
        listar_cat(user)
    elif opcion ==2:
        finalizar(user,bank)
    elif opcion == 3:
        print(f"\nModificaras tus datos {user.get_nombre()} {user.get_apellido()} \n")
        form_modif={}
        form_modif["nombre"]=input("Inserte su nombre: ")
        form_modif["apellido"]=input("inserte su apellido: ")
        form_modif["fecha_nac"]=input("Inserte su fecha de nacimiento (año/mes/dia): ")
        form_modif["interes"]=input("¿Que producto es de su interes? : ")
        form_modif["celular"]=input("Inserte su celular: ")
        form_modif["email"]=input("inserte su email de contacto: ")
        form_modif["password"]=getpass.getpass("(Recuerda que tiene que tener mas de 6 caracteres, al menos una mayuscula,un numero y un caracter especial)\n inserte una contraseña: ")
        form_modif["cpassword"]=getpass.getpass("confirme su contraseña: ")
        form_modif["genero"]=input("Inserte su genero: ")
        form_modif["ciudad"]=input("Inserte su ciudad: ")
        form_modif["banco"]=input("Inserte el nombre de su banco: ")
        if validator.validar_us_modif(form_modif) == {}:
            if len(form_modif["ciudad"]) > 3:
                sql="select nombre from ciudades"
                dba.get_cursor().execute(sql)
                result=dba.get_cursor().fetchall()
                for i in result:
                    lista_ciudades1.append(i[0])
                if (form_modif["ciudad"] in lista_ciudades1) == True:
                    sql="select ID from ciudades where nombre=%s"
                    val=(form_modif["ciudad"],)
                    dba.get_cursor().execute(sql,val)
                    result=dba.get_cursor().fetchone()
                    ciu1=Ciudad(form_modif["ciudad"])
                    ciu1.set_id(result[0])
                else:
                    ciu1=Ciudad(form_modif["ciudad"])
                    sql="INSERT INTO ciudades (nombre) values (%s)"
                    val=((form_modif["ciudad"]),)
                    dba.get_cursor().execute(sql,val)
                    dba.get_conexion().commit()
                    ciu1.set_id(dba.get_cursor().lastrowid)
            
            if len (form_modif["banco"]) > 6:
                sql="select nombre from bancos"
                dba.get_cursor().execute(sql)
                result=dba.get_cursor().fetchall()
                for n in result:
                    lista_bancos1.append(n[0])
                if (form_modif["banco"] in lista_bancos1) == True:
                    sql="select ID from bancos where nombre=%s"
                    val=(form_modif["banco"],)
                    dba.get_cursor().execute(sql,val)
                    result=dba.get_cursor().fetchone()
                    ban1=Banco(form_modif["banco"])
                    ban1.set_id(result[0])
                else:
                    ban1=Banco(form_modif["banco"])
                    sql="INSERT INTO bancos (nombre) values (%s)"
                    val=((form_modif["banco"]),)
                    dba.get_cursor().execute(sql,val)
                    dba.get_conexion().commit()
                    ban1.set_id(dba.get_cursor().lastrowid)
            
            user=Usuario(0,form_modif["nombre"],form_modif["apellido"],form_modif["fecha_nac"],form_modif["interes"],form_modif["celular"],form_modif["email"],form_modif["password"],form_modif["genero"],ciu1.get_id(),ban1.get_id())
            user.update(form_modif)
        else:
            print(validator.validar_us(form_modif))

    elif opcion == 4:
        bille=int(input(f"\nActualmente tienes ${bank.get_balance()}. ¿Cuanto dinero deseas acreditar?: "))
        bank.set_balance((bank.get_balance()+bille))
        print(f"\nMuchas gracias {user.get_nombre()}, fueron acreditados tus ${bank.get_balance()} \n")

    else:
        print("\nOpcion incorrecta, intente nuevamente\n")