#!/usr/bin/env python3
# display events for next 7 days
from __future__ import print_function
import datetime
import os.path
#import collections
from collections import ChainMap
import tkinter as tk
from tkinter.scrolledtext import ScrolledText

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)

    # 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)

    #dont use events_result. dictionary, then list of dictionaries
    eventsJ=([kind["summary"] for kind in events])+(([kind["start"] for kind in events]))
    #for eventJ in eventsJ:
        #print(events_result)
    print(eventsJ)


    #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')))
        description=event.get('description','')

        for event2 in events2:
            start2=datetime.datetime.fromisoformat(
                event2['start'].get('dateTime',event2['start'].get('date')))
            description2=event2.get('description','')

            print(start, event['summary'], description,"\n",
            start2, event2['summary'], description2,"\n")

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

window=tk.Tk()
window.title("Next 7 days")
#window.geometry('600x400+50+50')
#window.columnconfigure(0, weight=1)
#window.columnconfigure(2, weight=3)
#window.rowconfigure(0, weight=1)
#window.rowconfigure(1, weight=5)
#window.rowconfigure(2, weight=5)

idLbl1=tk.Label(window, text="Calendar User", relief="sunken")
idLbl1.grid(column=0,row=0, sticky="nsew")

idLblJ=tk.Label(window,text="Jimmy", relief="sunken")
idLblJ.grid(column=0,row=1, sticky="nsew")

idLblK=tk.Label(window,text="Katie", relief="sunken")
idLblK.grid(column=0,row=2, sticky="nsew")

strtLbl1=tk.Label(window,text="start date/time in UTC", relief="sunken")
strtLbl1.grid(column=1,row=0, sticky="nsew")

strtLblJ=tk.Label(window,text=start,relief="sunken")
strtLblJ.grid(column=1,row=1, sticky="nsew")

strtLblK=tk.Label(window,text=start2, relief="sunken",)
strtLblK.grid(column=1,row=2, sticky="nsew")

sumLbl1=tk.Label(window,text="summary", relief="sunken")
sumLbl1.grid(column=2,row=0, sticky="nsew")

sumLblJ=tk.Label(window,text=event['summary'],relief="sunken")
sumLblJ.grid(column=2,row=1,sticky="nsew")

"""sclTeventj=tk.scrolledtext.ScrolledText(window,height=2,width=30,wrap='word',
relief="sunken")
sclTeventj.insert(tk.INSERT,([kind["summary"] for kind in events]))
sclTeventj.grid(column=2,row=1,sticky="nsew")"""

"""sumTxtJ=tk.Text(window,height=10,wrap="word",relief="sunken")
sumTxtJ.grid(column=2,row=1, sticky="nsew")
sumTxtJ.insert(tk.END,eventsJ)
sumTxtJ.configure(state='disabled')
scrlBrJ=tk.Scrollbar(sumTxtJ)
scrlBrJ.pack(side="right",fill='y')
sumTxtJ.config(yscrollcommand=scrlBrJ.set)
scrlBrJ.config(command=sumTxtJ.yview)"""

sumLblK=tk.Label(window,text=event2['summary'], relief="sunken")
sumLblK.grid(column=2,row=2, sticky="nsew")

dscLbl1=tk.Label(window,text="description", relief="sunken")
dscLbl1.grid(column=3,row=0, sticky="nsew")

dscLblJ=tk.Label(window,text=description, relief="sunken")
dscLblJ.grid(column=3,row=1, sticky="nsew")

dscLblK=tk.Label(window,text=description2, relief="sunken")
dscLblK.grid(column=3,row=2, sticky="nsew")

dateLbl1=tk.Label(window,text="WEEK", relief="sunken")
dateLbl1.grid(column=0,columnspan=2, row=4, sticky="nsew")

dateLblMin=tk.Label(window,text=now,relief="sunken")
dateLblMin.grid(column=2,row=4, sticky="nsew")

dateLblmax=tk.Label(window,text=max,relief="sunken")
dateLblmax.grid(column=3,row=4,stick="nsew")
window.mainloop()