@@ -85,6 +85,9 @@ func (s *Slack) resultHappinessSurvey(userid, result string) {
85
85
s .Logger .Printf ("[DEBUG] Happiness Survey Result written in database.\n " )
86
86
}
87
87
88
+ var scheduler * gocron.Scheduler
89
+ var stop chan bool
90
+
88
91
// GetTimeAndUsersHappinessSurvey gets the time selected by a user for the Happiness survey
89
92
func (s * Slack ) GetTimeAndUsersHappinessSurvey () error {
90
93
type ScheduleData struct {
@@ -101,7 +104,11 @@ func (s *Slack) GetTimeAndUsersHappinessSurvey() error {
101
104
}
102
105
}
103
106
defer rows .Close ()
104
- gocron .Clear ()
107
+ if scheduler != nil {
108
+ stop <- true
109
+ scheduler .Clear ()
110
+ }
111
+ scheduler = gocron .NewScheduler ()
105
112
for rows .Next () {
106
113
scheduledata := ScheduleData {}
107
114
err = rows .Scan (& scheduledata .Times , & scheduledata .UserID )
@@ -111,8 +118,7 @@ func (s *Slack) GetTimeAndUsersHappinessSurvey() error {
111
118
fmt .Println (scheduledata )
112
119
s .runHappinessSurveySchedule (scheduledata .Times , scheduledata .UserID )
113
120
}
114
- channel := make (chan int )
115
- go startCron (channel )
121
+ stop = scheduler .Start ()
116
122
// get any error encountered during iteration
117
123
err = rows .Err ()
118
124
if err != nil {
@@ -130,7 +136,11 @@ func (s *Slack) runHappinessSurveySchedule(times, userid string) {
130
136
} else {
131
137
gocron .ChangeLoc (location )
132
138
}
133
- gocron .Every (1 ).Day ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
139
+ scheduler .Every (1 ).Monday ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
140
+ scheduler .Every (1 ).Tuesday ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
141
+ scheduler .Every (1 ).Wednesday ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
142
+ scheduler .Every (1 ).Thursday ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
143
+ scheduler .Every (1 ).Friday ().At (times ).Do (s .askHappinessSurveyScheduled , userid )
134
144
}
135
145
136
146
// Ask how are the users doing
@@ -179,8 +189,3 @@ func (s *Slack) askHappinessSurveyScheduled(userid string) error {
179
189
fmt .Printf ("Scheduled happyness survey for user %s posted" , userid )
180
190
return nil
181
191
}
182
-
183
- // Starts gocron
184
- func startCron (channel chan int ) {
185
- <- gocron .Start ()
186
- }
0 commit comments