from flask import (
    Blueprint, redirect, render_template, request, session, url_for
)
from requests import get

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import CONFIG 

from create_db import Card, User

bp = Blueprint('matches', __name__, url_prefix='/matches')


engine = create_engine(CONFIG['DB_CONNECTION'])
dbsessionmaker = sessionmaker(bind=engine)
dbsession = dbsessionmaker()


def get_matches(user_id):
    list_of_matches = []

    #in all shared cards for the ones you votes yes
    all_cards = dbsession.query(Card)
    all_shared_of_user_of_ir_1 = all_cards.filter(Card.share_id != "0", Card.owner_id == user_id, Card.interest_rate == 1).all()
    if all_shared_of_user_of_ir_1 == []:
        return list_of_matches

    # see who else voted yes
    for c in all_shared_of_user_of_ir_1:
        others_yes = all_cards.filter(Card.share_id == c.share_id, Card.interest_rate == 1).all()
        if others_yes == []:
            pass
        else:
            list_of_matches.append(others_yes)

    return list_of_matches

@bp.route("/", methods=("GET", "POST"))
def index():
    if not 'user_id' in session:
        redirect(url_for('index'))
    user_id = session["user_id"]
    username = session["username"]

    list_of_matches = get_matches(user_id)
    
    #@TODO tu bi morali dodati še nek users object, da own_id pretvorimo v username
    #relevant userids, but might be uselessly duplicated
    user_ids = []
    for match in list_of_matches:
        for card in match:
            user_ids.append(card.owner_id)

    users = dbsession.query(User)
    names_by_ids = {}
    
    for id in user_ids:

        names_by_ids[id] = users.get(id).username    

    return render_template("matches.html", username=username, list_of_matches=list_of_matches, names_by_ids=names_by_ids)