#!/usr/bin/env python3
# display events for next 7 days
from __future__ import print_function
import datetime
import os.path

import tkinter as tk
from tkinter import ttk

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

SCOPES=['https://www.googleapis.com/auth/calendar.readonly']

"""Shows basic usage of the Google Calendar API.
Prints the start and name of the next 7 days on the user's calendar
"""
creds=None
if os.path.exists('token.json'):
    creds=Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow=InstalledAppFlow.from_client_secrets_file(
            'credentials-sheets.json',SCOPES)
        creds=flow.run_local_server(port=0)
    with open('token.json','w') as token:
        token.write(creds.to_json())

try:
    service=build('calendar','v3',credentials=creds)
    window=tk.Tk()
    window.title('next 7 days')

    # Call the Calendar API
    now=datetime.datetime.utcnow().isoformat()+'Z' #datetime in crrct frmt
    today=datetime.datetime.now()
    max=(today+datetime.timedelta(days=7)).isoformat()+'Z'
    print("Getting the week's events")
    events_result=service.events().list(calendarId='primary',
    timeMin=now,timeMax=max,singleEvents=True,
    orderBy='startTime',prettyPrint=True).execute()
    events=events_result.get('items',[]) #list of dict (event=dict)
    #second calendar
    events_result2=service.events().list(calendarId='greendaygirl0123@gmail.com',
    timeMin=now,timeMax=max,singleEvents=True,
    orderBy='startTime').execute()
    events2=events_result2.get('items',[])

    if not events:
        print('No upcoming events found.')

    if not events2:
        print('No upcoming events2 found.')



    for event in events:
        start=datetime.datetime.fromisoformat(
            event['start'].get('dateTime',event['start'].get('date')))
        Start=start.strftime("%a %m-%d %I:%M %p")
        description=event.get('description','')
        eventLblJ=tk.Label(window,text=(Start, event['summary'], description),
        fg='cyan',bg='black',relief='sunken')
        eventLblJ.grid(stick='nsew')

    keyLblJ=tk.Label(window,text="Jimmy",bg='black',fg='cyan',
    relief='sunken')
    keyLblJ.grid(sticky='nsew')
    keyLblK=tk.Label(window,text="Katie",bg='cyan',relief='sunken')
    keyLblK.grid(sticky='nsew')

    for event2 in events2:
        start2=datetime.datetime.fromisoformat(
            event2['start'].get('dateTime',event2['start'].get('date')))
        Start2=start2.strftime("%a %m-%d %I:%M %p")
        description2=event2.get('description','')
        eventLblK=tk.Label(window,text=(Start2, event2['summary'], description2),
        bg='cyan',relief='sunken')
        eventLblK.grid(sticky='nsew')

        print(Start, event['summary'], description,"\n",
            Start2, event2['summary'], description2,"\n")


    window.mainloop()
except HttpError as error:
    print('An error occurred: %s' % error)