def result_generator():
    matches = get_id_list('Sport.Matches WHERE status = \'Finished\' AND result IS NULL')
    f = open(dir() + "Dic/all-euro-data-2017-2018.csv")
    csv_f = csv.reader(f, delimiter=';')
    statistic = []
    result = []
    list = ['id', 'home_team_goals','away_team_goals','result', 'half_time_home_team_goals', 'half_time_away_team_goals',
            'Referee','home_team_shots', 'away_team_shots', 'home_team_shots_on_target', 'away_team_shots_on_target',
            'home_team_fouls', 'away_team_fouls', 'home_team_corners' , 'away_team_corners', 'home_team_yellow_cards',
            'away_team_yellow_cards', 'home_team_red_cards' , 'away_team_red_cards']
    for row in csv_f:
        statistic.append(row[4:23])
    conn = connection()
    cursor = conn.cursor()
    for row in matches:
        print(row)
        stat = random.choice(statistic[1:])
        result.append(stat)
        print(len(str(stat[6])))
        if len(str(stat[6])) > 4:
            referee = str(stat[6])
        else:
            referee = 'unknown'
        red_card = ['0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','1','1','1','2']
        cursor.execute("INSERT INTO Sport.FullStatistic VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,getdate())"
                       % (row, stat[0], stat[1], '\'' + referee + '\'', stat[7], stat[8], stat[3], stat[4], stat[9],
                          stat[10], stat[11], stat[12], stat[13], stat[14], stat[15], stat[16], random.choice(red_card), random.choice(red_card)))
        cursor.commit()
    conn.close()
    return result
def user_information_generator(num):
    f = open(dir() + "Dic/users.csv")
    csv_f = csv.reader(f)
    first_name = []
    last_name = []
    for row in csv_f:
         first_name.append(row[0])
         last_name.append(row[1])
    location = ['ua', 'us', 'fr', 'pl']
    email = ['@gmail.com', '@mail.ru', '@i.ua', '@yahoo.com', '@hotmail.com', '@aol.com', '@hotmail.co.uk']
    characters = string.ascii_letters + string.digits
    list = []
    cnxn = connection()
    cursor = cnxn.cursor()
    for num in range(num):
        firstn = random.choice(first_name[1:])
        lastn = random.choice(last_name[1:])
        phone = "+%d-(%d)-%d-%d" % (random.randint(1, 381), random.randint(10, 99), random.randint(000, 999), random.randint(1000, 9999))
        loc = random.choice(location)
        mail = firstn.lower() + lastn.lower() + random.choice(email)
        tax = float(random.randrange(10, 100))/1000
        password = "".join(random.choice(characters) for x in range(random.randint(8, 16)))
        list.append([firstn, lastn, mail, password, loc, tax, phone])
        cursor.execute("exec Finances.AddUser \'%s\', \'%s\',\'%s\',\'%s\',\'%s\',%f,\'%s\'"
        % (firstn, lastn,mail,password, loc, tax, phone))
        cursor.commit()
    cnxn.close()
    return list
def get_max_id(table):
    cnxn = connection()
    cursor = cnxn.cursor()
    cursor.execute("SELECT max(id) FROM %s" % table)
    row = cursor.fetchone()
    r = row[0]
    if r == None:
        r = 0
    cnxn.close()
    return r
def get_id_list(table):
    cnxn = connection()
    cursor = cnxn.cursor()
    cursor.execute("SELECT id FROM %s" % table)
    list = []
    while 1:
        row = cursor.fetchone()
        if not row:
            break
        list.append(row[0])
    cnxn.close()
    if list is None:
        list = [0]
    return list
def payin_generator(num):
    conn = connection()
    cursor = conn.cursor()
    ids = get_id_list('Finances.UserAccount')
    res = []
    for num in range(num):
        user_id = random.choice(ids)
        ccnumber = str(random.randint(1111111111111111, 9999999999999999))
        sum = float(random.randrange(10000, 70000)) / 100
        cursor.execute("exec  Finances.PayIn  %s,%i,%f" % ('\'' + ccnumber + '\'', user_id, sum))
        list1 = [user_id, ccnumber, sum]
        res.append(list1)
        cursor.commit()
    conn.close()
    return res
def bet_generator():
    users = get_id_list('Finances.UserAccount')
    conn = connection()
    cursor = conn.cursor()
    cursor.execute("SELECT top(1) id FROM Sport.Event WHERE deadline > getdate() ORDER BY NEWID()")
    events = cursor.fetchone()
    if events is None:
        return [0, 0, "0", 0]
    event_id = events[0]
    user_id = random.choice(users)
    bet = random.choice(['h', 'a', 'd'])
    ante = float(random.randrange(1000, 10000))/100
    result = [event_id, user_id, bet, ante]
    conn.close()
    return result
def credit_card_generator(num):
    user_list = get_id_list('Finances.UserAccount')
    if user_list == []:
        return 0
    type_list = ['Visa', 'Mastercard', 'American Express', 'UnionPay', 'Diners Club']
    cnxn = connection()
    cursor = cnxn.cursor()
    for num in range(num):
        card_type = random.choice(type_list)
        user_id = random.choice(user_list)
        ccnumber = random.randint(1111111111111111, 9999999999999999)
        exp_month = random.randint(1, 12)
        exp_year = random.randint(2000, 2022)
        cursor.execute("INSERT INTO Finances.CreditCard VALUES (%i,\'%s\',%i,%i,\'%i\', getdate())" % (user_id,card_type,exp_month,exp_year,ccnumber))
        cursor.commit()
    cnxn.close()
    return list
def delete_bet(num):
    conn = connection()
    cursor = conn.cursor()
    result = []
    for num in range(num):
        cursor.execute("SELECT top(1) id ,user_id FROM Finances.BetsHistory  ORDER BY NEWID()")
        BetsHistory = cursor.fetchone()
        if BetsHistory is None:
            return 0
        else:
            user_id = BetsHistory[1]
            bh_id = BetsHistory[0]
        cursor.execute("exec Finances.DeleteBetv2 %i,%i" % (bh_id, user_id))
        res = cursor.fetchone()
        result.append(res[0])
        cursor.commit()
    conn.close()
    return result.count(1)
def payout_generator(num):
    conn = connection()
    cursor = conn.cursor()
    res = []
    for num in range(num):
        cursor.execute("SELECT top(1) id ,user_id FROM Finances.CreditCard  ORDER BY NEWID()")
        cc = cursor.fetchone()
        if cc is None:
            return "no users or credit card"
        else:
            cc_id = cc[0]
            user_id = cc[1]
        sum = float(random.randrange(10000, 70000)) / 100
        cursor.execute("exec Finances.PayOut %i,%i,%f" % (cc_id, user_id, sum))
        list1 = [user_id, cc_id, sum]
        res.append(list1)
        cursor.commit()
    conn.close()
    return res
def change_bet(num):
    conn = connection()
    cursor = conn.cursor()
    result = []
    for num in range(num):
        cursor.execute("SELECT top(1) id ,user_id FROM Finances.BetsHistory  ORDER BY NEWID()")
        BetsHistory = cursor.fetchone()
        if BetsHistory is None:
            return 0
        else:
            user_id = BetsHistory[1]
            bh_id = BetsHistory[0]
        bet = random.choice(['h', 'a', 'd'])
        ante = float(random.randrange(50, 10000)) / 100
        cursor.execute("exec Finances.UpdateBetv2 %i,%i,%s,%f" % (bh_id, user_id, bet, ante))
        res = cursor.fetchone()
        result.append(res[0])
        cursor.commit()
    conn.close()
    return result.count(1)