#!/usr/bin/env python3

import subprocess
import csv
import re
import operator

def report_error():

  error_dic = {}
  error_list = subprocess.check_output(["grep","ERROR","syslog.log"]).decode()
  error_list = error_list.split('\n')

  for i in range(len(error_list)-1):
    line = error_list[i]
    value = re.search(r"ticky: ERROR ([\w ]*) ", line).group(1)

    if value in error_dic:
      error_dic[value]+=1
    else:
      error_dic[value]=1

  error_dic = sorted(error_dic.items(), key = operator.itemgetter(1), reverse=True)
  error_dic.insert(0,('Error', 'Count'))

  with open("error_message.csv", 'w', newline='') as file:
    writer = csv.writer(file)
    for row in error_dic:
      writer.writerow(row)

def report_user():
  user_dic = {}
  user_list = subprocess.check_output(["cat","syslog.log"]).decode()
  user_list = user_list.split('\n')

  for i in range(len(user_list)-1):
    line = user_list[i]
    user = re.search(r"[(](.*)[)]$", line).group(1)
    type = re.search(r"ticky: (\w*)", line).group(1)

    if user in user_dic:
      if type == 'ERROR':
        user_dic[user][1] += 1
      else:
        user_dic[user][0] += 1
    else:
      if type == 'ERROR':
        user_dic[user] = [0,1]
      else:
        user_dic[user] = [1,0]

  user_dic = sorted(user_dic.items(), key=operator.itemgetter(0))

  user_dic.insert(0,('Username', 'INFO', 'ERROR'))
  with open("user_statistics.csv", 'w', newline='') as file:
    writer = csv.writer(file)
    for row in user_dic:
      row = [row[0], row[1][0], row[1][1]]
      writer.writerow(row)

report_error()
report_user()