#!/usr/bin/env python3
"""
Read Moodle activity .csv files and output requested lists or interactive plots

"""
import sys
import argparse
import mootler.src.course_data as cd

def main(args):
    # read in files, option to filter by users
    if args.users_file:
        cdat = cd.read_cd_csvs(args.activity_file, args.users_file)
        cdat.filter_users()
    else:
        cdat = cd.read_cd_csvs(args.activity_file)

    # filter by substring
    if args.string:
        cdat.filter_by_string(args.string, args.colstring, incomplete=True)

    # count active users
    n_act_users = cdat.count_unique_active_users()

    print("After filtering there are {} active users out of {} for {} activities.".format(n_act_users,len(cdat.users), len(cdat.activity)))

    # inactive user info
    if args.inactive == False:
        pass
    else:
        if args.inactive == None:
            inac_file_name = "inactive.csv"
        else:
            inac_file_name = args.inactive
        cdat.inactive_users().to_csv(inac_file_name)

    # plotting
    if args.plot:
        cdat.plot_by_activity()

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("activity_file", help="CSV file of the activities.")
    parser.add_argument("-u", "--users_file", default=None, help="CSV file of users whose activity is analised. (optional)")
    parser.add_argument("-s","--string", default=None, help="Substring to be searched for.")
    parser.add_argument("-c","--colstring", default="Event context", help="Substring of the column title in which activities are searched.")
    parser.add_argument("-i","--inactive", default=False, help="Output CSV file of inactive students. If no name specified, it will be `inactive.csv`.", nargs='?')
    parser.add_argument("-p","--plot", help="Plot a histogram of user activity.", action="store_true")

    user_input = sys.argv[1:]
    args = parser.parse_intermixed_args(user_input)
    main(args)
