#!/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()

    if args.users_file:
        print(
            "After filtering there are {} active users out of {} for {} activities.".format(
                n_act_users, len(cdat.users), len(cdat.activity)
            )
        )
    else:
        print(
            "There are {} active users for {} activities.".format(
                n_act_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)
