Skip to content

Commit 6d27c85

Browse files
committed
feat: prepared email
1 parent 0511969 commit 6d27c85

File tree

4 files changed

+137
-0
lines changed

4 files changed

+137
-0
lines changed

cmd/email.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var (
1616
Short: "send email",
1717
Long: `Send emails.
1818
constraints --- ask for constraints,
19+
prepared --- announce exams to plan and constraints,
1920
nta-with-room-alone --- send emails to students with room alone before planning,
2021
nta-planned --- send emails about rooms to all students with nta after planning,
2122
primuss-data [all|<ancode>] --- send emails to teachers about primuss data and nta.`,
@@ -28,6 +29,11 @@ primuss-data [all|<ancode>] --- send emails to teachers about primuss data and n
2829
if err != nil {
2930
log.Fatalf("got error: %v\n", err)
3031
}
32+
case "prepared":
33+
err := plexams.SendEmailPrepared(context.Background(), run)
34+
if err != nil {
35+
log.Fatalf("got error: %v\n", err)
36+
}
3137
case "nta-with-room-alone":
3238
err := plexams.SendHandicapsMailsNTARoomAlone(context.Background(), run)
3339
if err != nil {

plexams/email_constraints.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,79 @@ func (p *Plexams) SendEmailConstraints(ctx context.Context, run bool) error {
9696
true,
9797
)
9898
}
99+
func (p *Plexams) SendEmailPrepared(ctx context.Context, run bool) error {
100+
cfg := yacspin.Config{
101+
Frequency: 100 * time.Millisecond,
102+
CharSet: yacspin.CharSets[69],
103+
Suffix: aurora.Sprintf(aurora.Cyan(" sending email announcing prepared exams and constraints")),
104+
SuffixAutoColon: true,
105+
StopCharacter: "✓",
106+
StopColors: []string{"fgGreen"},
107+
StopFailMessage: "error happend",
108+
StopFailCharacter: "✗",
109+
StopFailColors: []string{"fgRed"},
110+
}
111+
spinner, err := yacspin.New(cfg)
112+
if err != nil {
113+
log.Debug().Err(err).Msg("cannot create spinner")
114+
}
115+
err = spinner.Start()
116+
if err != nil {
117+
log.Debug().Err(err).Msg("cannot start spinner")
118+
}
119+
120+
feedbackDate := time.Now().Add(7 * 24 * time.Hour).Format("02.01.06")
121+
122+
contraintsEmailData := &ConstraintsEmail{
123+
FromDate: p.semesterConfig.From.Format("02.01.06"),
124+
FromFK07Date: p.semesterConfig.FromFk07.Format("02.01.06"),
125+
UntilDate: p.semesterConfig.Until.Format("02.01.06"),
126+
PlanerName: p.planer.Name,
127+
FeedbackDate: feedbackDate,
128+
}
129+
130+
tmpl, err := template.ParseFiles("tmpl/preparedEmail.tmpl")
131+
if err != nil {
132+
return err
133+
}
134+
bufText := new(bytes.Buffer)
135+
err = tmpl.Execute(bufText, contraintsEmailData)
136+
if err != nil {
137+
return err
138+
}
139+
140+
tmpl, err = template.ParseFiles("tmpl/preparedEmailHTML.tmpl")
141+
if err != nil {
142+
return err
143+
}
144+
bufHTML := new(bytes.Buffer)
145+
err = tmpl.Execute(bufHTML, contraintsEmailData)
146+
if err != nil {
147+
return err
148+
}
149+
150+
subject := fmt.Sprintf("[Prüfungsplanung %s] Informationen zu den zu planenden Prüfungen und Besonderheiten",
151+
p.semester)
152+
153+
err = spinner.Stop()
154+
155+
if err != nil {
156+
log.Debug().Err(err).Msg("cannot stop spinner")
157+
}
158+
159+
var to []string
160+
if run {
161+
to = []string{p.semesterConfig.Emails.Profs, p.semesterConfig.Emails.Lbas}
162+
} else {
163+
to = []string{"[email protected]"}
164+
}
165+
166+
return p.sendMail(to,
167+
nil,
168+
subject,
169+
bufText.Bytes(),
170+
bufHTML.Bytes(),
171+
nil,
172+
true,
173+
)
174+
}

tmpl/preparedEmail.tmpl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[Antworten bitte nicht via E-Mail, sondern via JIRA]
2+
3+
Liebe Prüfende,
4+
5+
unter https://collab.dvb.bayern/spaces/HMFK07/pages/1162186223/Prüfungsplanung+im+aktuellen+Semester
6+
finden Sie ab sofort die aktuellen Informationen zur Prüfungsplanung.
7+
8+
Im PDF PrüfungenImPrüfungszeitraum.pdf sehen Sie alle Prüfungen, die ich plane. Sollte Ihre Prüfung nicht
9+
in der Liste sein, dann gehe ich davon aus, dass Sie diese selbst außerhalb des Prüfungszeitraumes planen.
10+
11+
Im PDF Constraints.pdf sehen Sie alle Constraints, die ich bei der Planung Ihrer Prüfung beachten muss.
12+
13+
Wenn die, in den PDFs vorliegenden, Informationen nicht stimmen oder nicht vollständig sind,
14+
öffnen Sie bitte ein JIRA-Ticket unter https://jira.cc.hm.edu/servicedesk/customer/portal/13
15+
und teilen Sie mir mit, was ich ändern soll.
16+
Verwenden Sie als Ticket-Art, je nach Anforderung, "Anforderungen an die Raumplanung" oder "allgemeine Anforderungen an Prüfungen".
17+
Rückmeldung bitte so schnell wie möglich.
18+
19+
Mit freundlichen Grüßen
20+
{{ .PlanerName }}
21+
Prüfungsplaner der FK07
22+
23+
--
24+
Diese E-Mail wurde generiert und gesendet von https://github.com/obcode/plexams.go

tmpl/preparedEmailHTML.tmpl

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<p>[Antworten bitte nicht via E-Mail,
2+
sondern via <a href="https://jira.cc.hm.edu/servicedesk/customer/portal/13">JIRA</a>]</p>
3+
4+
<p>Liebe Prüfende,</p>
5+
6+
<p>unter
7+
<a href="https://collab.dvb.bayern/spaces/HMFK07/pages/1162186223/Prüfungsplanung+im+aktuellen+Semester">https://collab.dvb.bayern/spaces/HMFK07/pages/1162186223/Prüfungsplanung+im+aktuellen+Semester</a>
8+
finden Sie ab sofort die aktuellen Informationen zur Prüfungsplanung.
9+
</p>
10+
<p>
11+
Im PDF <code>PrüfungenImPrüfungszeitraum.pdf</code> sehen Sie alle Prüfungen, die ich plane. Sollte Ihre Prüfung nicht
12+
in der Liste sein, dann gehe ich davon aus, dass Sie diese selbst <b>außerhalb des Prüfungszeitraumes</b> planen.
13+
</p>
14+
<p>
15+
Im PDF <code>Constraints.pdf</code> sehen Sie alle Constraints, die ich bei der Planung Ihrer Prüfung beachten muss.
16+
</p>
17+
18+
<p>Wenn die, in den PDFs vorliegenden, Informationen nicht stimmen oder nicht vollständig sind,
19+
öffnen Sie bitte ein JIRA-Ticket unter <a href="https://jira.cc.hm.edu/servicedesk/customer/portal/13">https://jira.cc.hm.edu/servicedesk/customer/portal/13</a>
20+
und teilen Sie mir mit, was ich ändern soll.
21+
Verwenden Sie als Ticket-Art, je nach Anforderung, "Anforderungen an die Raumplanung" oder "allgemeine Anforderungen an Prüfungen".</p>
22+
<p>Rückmeldung bitte so schnell wie möglich.</p>
23+
<p>Mit freundlichen Grüßen</p>
24+
<p>{{ .PlanerName }}<br />
25+
Prüfungsplaner der FK07
26+
</p>
27+
28+
<pre>
29+
--
30+
Diese E-Mail wurde generiert und gesendet von https://github.com/obcode/plexams.go
31+
</pre>

0 commit comments

Comments
 (0)