"""
Educational Extracurricular Activities
College and extracurricular activities (ages 13+)

Events:
- extracurricular: High school extracurricular activities
- collegeExtracurricular: Continuing activities in college
- chooseMajor: Choosing a college major
- chooseCollege: Choosing a college to attend
"""

import random
from events.base import messageFunction, questionFunction, answerOption


def extracurricular(player, type='message', message=False, response=False):
    """High school extracurricular activities"""
    fname = 'extracurricular'
    check = fname not in player.askedQuestions and player.c.ageYears >= 13 and player.c.ageYears < 18 and 1 >= random.random()*1000000
    message = "What extra curricular activity would you like to join?"
    if (type != 'answer'):
        extracurriculars = player.extraCurriculars
        answerOptions = []
        for extracurricular in extracurriculars:
            answerOptions.append(extracurricular.title)

        return questionFunction(fname,message,player,check,answerOptions)
    elif(type == 'answer'):
        if (response['option'] != 'None'):
            from functions import find_where,ActivityRecord
            extracurriculars = player.extraCurriculars
            extracurricular = find_where(extracurriculars,{'title':response['option']})
            player.c.activities.append(extracurricular)
            player.c.activityRecords.append(ActivityRecord(extracurricular.id,extracurricular.type,player.date))


def collegeExtracurricular(player, type='message', message=False, response=False):
    """Continuing activities in college"""
    fname = 'collegeExtracurricular'
    check = fname not in player.askedQuestions and len(player.c.activities) > 0 and 'college' in player.c.education and player.c.occupation == 'student' and 1 >= random.random()*100
    if (check and type != 'answer'):
        message = 'Would you like to continue your extracurricular activities in college?'
        answerOptions = ['Yes','No']
        return questionFunction(fname,message,player,check,answerOptions)
    elif (type == 'answer'):
        if (response['option'] != 'Yes'):
            player.c.activities = []
            player.c.happiness -= 10
            player.messageQueue.append("You have decided to quit your extracurricular activities.")


def chooseMajor(player, type='message', message=False, response=False):
    """Choosing a college major"""
    fname = 'chooseMajor'
    check = player.c.actScore and fname not in player.askedQuestions and not getattr(player.c,'major',False) and 1 >= random.random()*100
    message = "Your guidance counselor reminds you that college is coming! What would you like to major in?"
    if (type != 'answer' and check):

        answerOptions = []
        for major in player.majors:
            answerOptions.append(answerOption(major.title,str(major.id))) #ids need to be strings for javascript
        answerOptions.append(answerOption("None"))
        return questionFunction(fname,message,player,check,answerOptions)
    if (type == 'answer'):
        if (response['data'] != 'None'):
            for major in player.majors:
                if (major.id == response['data']):
                    player.c.major = major
                    player.messageQueue.append("You have chosen to major in "+major.title)
                    break


def chooseCollege(player, type='message', message=False, response=False):
    """Choosing a college to attend"""
    fname = 'chooseCollege'
    check = player.c.actScore and fname not in player.askedQuestions and not getattr(player.c,'college',False) and 1 >= random.random()*100
    message = "Your guidance counselor reminds you that it's time to start applying to colleges. Where would you like to apply?"
    if (type != 'answer' and check):

        answerOptions = []
        for college in player.colleges:
            answerOptions.append(answerOption(college.title + " GPA: "+str(college.GPA_req)+" ACT: "+str(college.ACT_req) + "<br> "+college.description,data=college.title))
        answerOptions.append(answerOption("None"))
        return questionFunction(fname,message,player,check,answerOptions)
    elif (type == 'answer'):
        if (response['option'] != 'None'):
            from functions import oneTimeEvent
            player.c.oneTimeEvents.append(
                oneTimeEvent(
                    title="College Acceptance",
                    message="You have been accepted to "+response['data'],
                    date=player.date,
                    dateType="daysFromNow",
                    dateModifier=14,
                    completionFunc=chooseCollege,
                    completionArgs=('complete', False),
                    completionKwargs={'response': response['data']}
                )
            )

    elif type == 'complete':
        # accepted into college, add to player.c.college
        from functions import find_where
        player.c.college = find_where(player.colleges,{'title':response})
        player.messageQueue.append('You were accepted!')


__all__ = [
    'extracurricular',
    'collegeExtracurricular',
    'chooseMajor',
    'chooseCollege',
]
