-
Notifications
You must be signed in to change notification settings - Fork 0
/
getPaid.py
53 lines (39 loc) · 1.86 KB
/
getPaid.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from __future__ import print_function
from pyrfc3339 import generate, parse
import pytz
from datetime import datetime
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
def revenue(periodStart, periodEnd, payRate): # Strings in form MM/DD/YY
service = build('calendar', 'v3', credentials=creds)
fullStart = (periodStart + " 00:00:00")
fullEnd = (periodEnd + " 23:59:59")
periodStartDateTime = datetime.strptime(fullStart, "%m/%d/%Y %H:%M:%S")
periodEndDateTime = datetime.strptime(fullEnd, "%m/%d/%Y %H:%M:%S")
rfcStart = generate(periodStartDateTime, accept_naive=True)
rfcEnd = generate(periodEndDateTime, accept_naive=True)
events_result = service.events().list(calendarId='primary', timeMin=rfcStart,
timeMax=rfcEnd,
maxResults=50, singleEvents=True,
orderBy='startTime').execute()
events = events_result.get('items', [])
total = 0
for event in events:
if (event['summary'] == "Event Title"):
startTime = event['start']['dateTime']
endTime = event['end']['dateTime']
startDateTime = parse(startTime)
endDateTime = parse(endTime)
dateTimeDifference = endDateTime - startDateTime
dateTimeDifferenceInHours = dateTimeDifference.total_seconds() / 3600
total += dateTimeDifferenceInHours
return(total*payRate)
pStart = input("Enter pay period start (mm/dd/yyyy): ")
pEnd = input("Enter pay period end (mm/dd/yyyy): ")
print("You should earn $"+str(revenue(pStart, pEnd, payRate)))