from app.main import main
from app.main.utils.common import response_message, read_data, read_rules, write_validations
from rulemall import RulesGroup
import pandas as pd
from datetime import datetime


@main.route('/validate/<dsid>/<rgid>', methods=['GET', 'POST'])
def validate(dsid, rgid):
    configs = read_rules(rgid, where='db')
    print('got rules')
    rg = RulesGroup()
    rg.from_dict(configs)
    # cols = rg.get_target()
    data = read_data(dsid)
    print('got data')
    rg.reset_data(data)
    validation, responsible = rg.validate()
    print('validated')
    validation = pd.concat([validation.rename('validated'), responsible], axis=1)
    validation = validation.reset_index().rename(columns={'index': 'rid'})
    # TODO return rule group id
    validation['rgid'] = rgid
    validation['dsid'] = dsid
    validation['created_date'] = datetime.now()
    validation['modified_date'] = datetime.now()
    result = write_validations(validation, where='db')
    return response_message(result)
