Skip to content

Instantly share code, notes, and snippets.

@vedharish
Last active January 26, 2018 11:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vedharish/d7abca6add1d9465a48a30e753761ee0 to your computer and use it in GitHub Desktop.
Save vedharish/d7abca6add1d9465a48a30e753761ee0 to your computer and use it in GitHub Desktop.
package activity
import (
"fmt"
"strconv"
"time"
)
type Activity struct {
yearContributions map[string]weekContributions
}
type dayContributions struct {
Date time.Time
Contribution int
}
type weekContributions struct {
Notation string
AllDays []dayContributions
}
func (currentWeekContribution *weekContributions) addContribution(additionalDayContribution dayContributions) {
currentWeekContribution.AllDays = append(currentWeekContribution.AllDays, additionalDayContribution)
}
func (currentActivity *Activity) restore() {
currentActivity.yearContributions = map[string]weekContributions{
"Sunday": weekContributions{Notation: "S", AllDays: make([]dayContributions, 0)},
"Monday": weekContributions{Notation: "M", AllDays: make([]dayContributions, 0)},
"Tuesday": weekContributions{Notation: "T", AllDays: make([]dayContributions, 0)},
"Wednesday": weekContributions{Notation: "W", AllDays: make([]dayContributions, 0)},
"Thursday": weekContributions{Notation: "T", AllDays: make([]dayContributions, 0)},
"Friday": weekContributions{Notation: "F", AllDays: make([]dayContributions, 0)},
"Saturday": weekContributions{Notation: "S", AllDays: make([]dayContributions, 0)},
}
}
func (currentActivity *Activity) Recalibrate() {
currentActivity.restore()
endDate := time.Now().UTC()
startDate := endDate.AddDate(-1, 0, 0)
for d := startDate; endDate.After(d); d = d.AddDate(0, 0, 1) {
stringWeekday := d.Weekday().String()
currentWeekContribution := currentActivity.yearContributions[stringWeekday]
currentWeekContribution.addContribution(dayContributions{Date: d, Contribution: 1})
fmt.Println(currentWeekContribution) // prints : {T [{2017-01-26 09:39:45.711238257 +0000 UTC 1}]}
}
fmt.Println(currentActivity.yearContributions) // prints : map[Tuesday:{T []} Wednesday:{W []} Thursday:{T []} Friday:{F []} Saturday:{S []} Sunday:{S []} Monday:{M []}]
}
func (singleDayContribution dayContributions) ReadableDate() string {
singleDate := singleDayContribution.Date
return singleDate.Month().String() + " " + strconv.Itoa(singleDate.Day()) + ", " + strconv.Itoa(singleDate.Year())
}
func (currentActivity Activity) GetContributionsForYear() map[string]weekContributions {
return currentActivity.yearContributions
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment