def get_filter_values(table, column):

    if table == 'groups':
        values = MongoDBConnection.get_groups_collection().distinct(column)
    elif table == 'students':
        values = MongoDBConnection.get_students_collection().distinct(column)
    elif table == 'test':
        values = MongoDBConnection.get_tests_collection().distinct(column)
    elif table == 'saved_state':
        values = MongoDBConnection.get_saved_state_collection().distinct(
            column)
    elif table == 'games':
        values = MongoDBConnection.get_games_collection().distinct(column)
    elif table == 'chapters':
        values = MongoDBConnection.get_chapters_collection().distinct(column)
    elif table == 'events':
        values = MongoDBConnection.get_events_collection().distinct(column)
    elif table == 'decisions':
        values = MongoDBConnection.get_decisions_collection().distinct(column)

    try:
        values = list(map(int, values))
        return [min(values), max(values)]
    except:
        return values
def get_decisions(student_ids: List[str],
                  event_ids: List[str]) -> pymongo.cursor.Cursor:
    db = MongoDBConnection.get_decisions_collection()
    decisions = db.find({
        'studentCode': {
            '$in': student_ids
        },
        'eventCode': {
            '$in': event_ids
        }
    })
    return decisions
def get_game_students(game_code: str, version: str) -> List[str]:
    db = MongoDBConnection.get_events_collection()
    events = [
        r['eventCode']
        for r in db.find({
            'gameCode': game_code,
            'version': version
        }, {'eventCode': 1})
    ]

    db = MongoDBConnection.get_decisions_collection()
    return db.find({
        'eventCode': {
            '$in': events
        }
    }, {
        'studentCode': 1
    }).distinct('studentCode')
def post_decision(student_code: str, event_code: str, decision: Decision):

    ids = MongoDBConnection.get_decisions_collection().find().distinct('decisionCode')

    finalDecision = {}
    for dec in decision._decision:
        finalDecision[dec._key] = dec._value

    _existing = MongoDBConnection.get_decisions_collection().find_one({'eventCode':event_code, 'studentCode':student_code})

    if _existing is not None:
        MongoDBConnection.get_decisions_collection().update_one({'eventCode':event_code, 'studentCode':student_code},{'$set': {'fields':finalDecision}})
    else:
        MongoDBConnection.get_decisions_collection().insert_one({'eventCode':event_code, 'studentCode':student_code,'fields':finalDecision})