"""
Created by Gotham on 25-08-2018.
"""
from datetime import datetime, timedelta
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from utility import Utility


class ContestUtility(Utility):

    @staticmethod
    def contest_parser(contest):
        title = contest['event']
        start = contest['start']
        sec = timedelta(seconds=int(contest['duration']))
        d = datetime(1, 1, 1) + sec
        duration = ("%d days %d hours %d min" % (d.day - 1, d.hour, d.minute))
        host = contest['resource']['name']
        contest1 = contest['href']
        start1 = Utility.time_converter(start, '+0530')
        return {"title": title, "start": start, "duration": duration,
                "host": host, "contest": contest1, "start1": start1}

    def ongoing_sender(self, update, contest_list):
        i = 0
        s = ""
        for er in contest_list:
            i = i + 1
            if i == 16:
                break
            parsed_contest = self.contest_parser(er)
            s = s + parsed_contest["title"] + "\n" + "Start:\n" + parsed_contest["start"].replace("T", " ") + \
                " GMT\n" + str(parsed_contest["start1"]).replace("T", " ") + \
                " IST\n" + "Duration:" + parsed_contest["duration"] + "\n" \
                + parsed_contest["host"] + "\n" + parsed_contest["contest"] + "\n\n"
        update.message.reply_text(s)

    def upcoming_sender(self, update, contest_list):
        i = 0
        s = ""
        keyboard = []
        keyboard1 = []
        for er in contest_list:
            i = i + 1
            # LIMITING NO OF EVENTS TO 20
            if i == 16:
                break
            parsed_contest = self.contest_parser(er)
            s = s + str(i) + ". " + parsed_contest["title"] + "\n" + "Start:\n" + \
                parsed_contest["start"].replace("T", " ")\
                + " GMT\n" + str(parsed_contest["start1"]).replace("T", " ") + " IST\n" + \
                "Duration: " + str(parsed_contest["duration"]) + "\n" + \
                parsed_contest["host"] + "\n" + parsed_contest["contest"] + "\n\n"
            keyboard1.append(InlineKeyboardButton(str(i), callback_data=str(i)))
            if i % 5 == 0:
                keyboard.append(keyboard1)
                keyboard1 = []
        keyboard.append(keyboard1)
        reply_markup = InlineKeyboardMarkup(keyboard)
        update.message.reply_text(s + "Select competition number to get notification" + "\n\n",
                                  reply_markup=reply_markup)