Skip to content

Commit 978ba60

Browse files
committed
feat: exahm email
1 parent 1ff9b58 commit 978ba60

5 files changed

Lines changed: 158 additions & 0 deletions

File tree

cmd/email.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ var (
1515
Use: "email [subcommand]",
1616
Short: "send email",
1717
Long: `Send emails.
18+
exahm --- send email about EXaHM and SEB exams NEXT semester
1819
primuss-data [all|<ancode>] --- send emails to teachers about primuss data and nta
1920
primuss-data-unplanned <program> <ancode> --- send emails to teachers about primuss data and nta
2021
constraints --- ask for constraints
@@ -34,6 +35,11 @@ cover-pages [all|<teacherid>] --- send emails with externally generated cove
3435
Run: func(cmd *cobra.Command, args []string) {
3536
plexams := initPlexamsConfig()
3637
switch args[0] {
38+
case "exahm":
39+
err := plexams.SendEmailExaHM(context.Background(), run)
40+
if err != nil {
41+
log.Fatalf("got error: %v\n", err)
42+
}
3743
case "primuss-data":
3844
if len(args) < 2 {
3945
log.Fatal("need ancode or all")

plexams/email.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414

1515
//go:embed tmpl/constraintsEmail.tmpl
1616
//go:embed tmpl/constraintsEmailHTML.tmpl
17+
//go:embed tmpl/exahmEmail.tmpl
18+
//go:embed tmpl/exahmEmailHTML.tmpl
1719
//go:embed tmpl/coverPageEmail.tmpl
1820
//go:embed tmpl/coverPageEmailHTML.tmpl
1921
//go:embed tmpl/draftEmailFS.tmpl

plexams/email_exahm.go

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package plexams
2+
3+
import (
4+
"bytes"
5+
"context"
6+
"html/template"
7+
"time"
8+
9+
"github.com/logrusorgru/aurora"
10+
"github.com/rs/zerolog/log"
11+
"github.com/theckman/yacspin"
12+
)
13+
14+
type ExahmEmail struct {
15+
PlanerName string
16+
}
17+
18+
func (p *Plexams) SendEmailExaHM(ctx context.Context, run bool) error {
19+
cfg := yacspin.Config{
20+
Frequency: 100 * time.Millisecond,
21+
CharSet: yacspin.CharSets[69],
22+
Suffix: aurora.Sprintf(aurora.Cyan(" sending email asking for exahm and seb exams")),
23+
SuffixAutoColon: true,
24+
StopCharacter: "✓",
25+
StopColors: []string{"fgGreen"},
26+
StopFailMessage: "error happend",
27+
StopFailCharacter: "✗",
28+
StopFailColors: []string{"fgRed"},
29+
}
30+
spinner, err := yacspin.New(cfg)
31+
if err != nil {
32+
log.Debug().Err(err).Msg("cannot create spinner")
33+
}
34+
err = spinner.Start()
35+
if err != nil {
36+
log.Debug().Err(err).Msg("cannot start spinner")
37+
}
38+
39+
contraintsEmailData := &ExahmEmail{
40+
PlanerName: p.planer.Name,
41+
}
42+
43+
tmpl, err := template.ParseFS(emailTemplates, "tmpl/exahmEmail.tmpl")
44+
if err != nil {
45+
return err
46+
}
47+
bufText := new(bytes.Buffer)
48+
err = tmpl.Execute(bufText, contraintsEmailData)
49+
if err != nil {
50+
return err
51+
}
52+
53+
tmpl, err = template.ParseFS(emailTemplates, "tmpl/exahmEmailHTML.tmpl")
54+
if err != nil {
55+
return err
56+
}
57+
bufHTML := new(bytes.Buffer)
58+
err = tmpl.Execute(bufHTML, contraintsEmailData)
59+
if err != nil {
60+
return err
61+
}
62+
63+
subject := "[Prüfungsplanung nächstes Semester] Prüfungen mit EXaHM und SEB - Rückmeldung bis so schnell wie möglich"
64+
65+
err = spinner.Stop()
66+
67+
if err != nil {
68+
log.Debug().Err(err).Msg("cannot stop spinner")
69+
}
70+
71+
var to []string
72+
if run {
73+
to = []string{p.semesterConfig.Emails.Profs}
74+
} else {
75+
to = []string{"galority@gmail.com"}
76+
}
77+
78+
return p.sendMail(to,
79+
nil,
80+
subject,
81+
bufText.Bytes(),
82+
bufHTML.Bytes(),
83+
nil,
84+
true,
85+
)
86+
}

plexams/tmpl/exahmEmail.tmpl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
[Antworten bitte nicht via E-Mail,
2+
sondern via https://jira.cc.hm.edu/servicedesk/customer/portal/13]
3+
4+
Liebe Prüfende,
5+
6+
der Ansturm auf die Räume im T-Bau (nur relevant für EXaHM- und SEB-Prüfungen) wird immer größer.
7+
8+
Wenn Sie oder ein von Ihnen betreuter LBA im kommenden Semester (Sommersemester 2026) eine Prüfung mit EXaHM oder SEB planen,
9+
erstellen Sie bitte <b>baldmöglichst</b> ein Ticket für die Prüfungsplanung unter
10+
https://jira.cc.hm.edu/servicedesk/customer/portal/13/create/247.
11+
12+
Es ist klar, dass Sie noch keinen Anmeldecode kennen.
13+
14+
Wichtig sind folgende Informationen:
15+
16+
- EXaHM oder SEB
17+
- Betroffener Studiengang / Studiengänge (Abkürzung reicht, z.B. IF, DE, …)
18+
- Erwartete Anzahl von zu Prüfenden (ungefähre Schätzung, interessant für die Anzahl der Räume à 30 Prüfungsplätze)
19+
20+
Die Studiengänge und Anzahl von Prüfenden brauchen wir um die Räume sinnvoll zu buchen.
21+
22+
Achtung: Das Ticket ersetzt nicht das Ticket das Sie beim KDP für Ihre Prüfung öffnen müssen.
23+
24+
Mit freundlichen Grüßen
25+
{{ .PlanerName }}
26+
Prüfungsplaner der FK07
27+
28+
--
29+
Diese E-Mail wurde generiert und gesendet von https://github.com/obcode/plexams.go

plexams/tmpl/exahmEmailHTML.tmpl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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>der Ansturm auf die Räume im T-Bau (nur relevant für EXaHM- und SEB-Prüfungen) wird immer größer.</p>
7+
8+
<p>Wenn Sie oder ein von Ihnen betreuter LBA im kommenden Semester (Sommersemester 2026) eine Prüfung mit EXaHM oder SEB planen,
9+
erstellen Sie bitte <b>baldmöglichst</b> ein Ticket für die Prüfungsplanung unter
10+
<a href="https://jira.cc.hm.edu/servicedesk/customer/portal/13/create/247">https://jira.cc.hm.edu/servicedesk/customer/portal/13/create/247</a>.</p>
11+
12+
<p>Es ist klar, dass Sie noch keinen Anmeldecode kennen.</p>
13+
14+
<p>Wichtig sind folgende Informationen:
15+
16+
<ul>
17+
<li> EXaHM oder SEB</li>
18+
<li> Betroffener Studiengang / Studiengänge (Abkürzung reicht, z.B. IF, DE, …)</li>
19+
<li> Erwartete Anzahl von zu Prüfenden (ungefähre Schätzung, interessant für die Anzahl der Räume à 30 Prüfungsplätze)</li>
20+
</ul>
21+
</p>
22+
23+
<p>Die Studiengänge und Anzahl von Prüfenden brauchen wir um die Räume sinnvoll zu buchen.</p>
24+
25+
<p>Achtung: Das Ticket ersetzt nicht das Ticket das Sie beim KDP für Ihre Prüfung öffnen müssen.</p>
26+
27+
<p>Mit freundlichen Grüßen</p>
28+
<p>{{ .PlanerName }}<br />
29+
Prüfungsplaner der FK07
30+
</p>
31+
32+
<pre>
33+
--
34+
Diese E-Mail wurde generiert und gesendet von https://github.com/obcode/plexams.go
35+
</pre>

0 commit comments

Comments
 (0)