import requests
import settings
import json
from helpers import dates
from helpers.clear import clear
from github import repos

def count(repo='') :
    if repo == '':
        repo = repos.list()

    total_issues = 0
    repo_issue_counts = {}

    clear()

    if ( repo == 'all'):
        # Iterate over the list of repositories
        for repo_name in repos.get():
            # Count issues for the current repository
            issue_count = query_repo(repo_name)
            total_issues += issue_count

            print(f'{repo_name}: {issue_count}')

        # Print the total number of issues across all repositories
        print(f'Total number of issues created in the last week across all repositories: {total_issues}')
    else:
        # Count issues for the specified repository
        issue_count = query_repo(repo)
        print(f'Number of issues created in the last week for {repo}: {issue_count}')

    return


def summary(input_date=None):
    total_issues = 0
    repositories = repos.get()
    for repo_name in repositories:
        total_issues += query_repo(repo_name, input_date)

    if not input_date:
        print(f'Issues created last week: {total_issues}')
    else:
        print(f'Issues created the week of ({input_date}): {total_issues}')
    return


def query_repo(repo_name, input_date=None):
    # Get the date range in ISO format
    previous_monday_iso, recent_sunday_iso = dates.get_iso_date_range(input_date)

    # Define the headers
    headers = {
        'Authorization': f'token {settings.GITHUB_TOKEN}',
        'Accept': 'application/vnd.github.v3+json'
    }

    # Define the API endpoint for each repository
    url = f'https://api.github.com/repos/awesomemotive/{repo_name}/issues'

    # Define the parameters
    params = {
        'state': 'all'
    }

    # Make the request
    response = requests.get(url, headers=headers, params=params)
    issues = response.json()
    recent_issues = [issue for issue in issues if issue['created_at'] >= previous_monday_iso and issue['created_at'] <= recent_sunday_iso]

    return len(recent_issues)
