diff --git a/controllers/addOfficeHourHandler.go b/controllers/addOfficeHourHandler.go index 4e498e1..20c3b8d 100644 --- a/controllers/addOfficeHourHandler.go +++ b/controllers/addOfficeHourHandler.go @@ -73,8 +73,8 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ if err != nil { errors = append(errors, "Die Vorlesungswoche muss eine ganze Zahl sein.") } - if !(week >= 0 && week <= 5) { - errors = append(errors, "Bitte wähle eine der vorgegebenen Optionen für Vorlesungswochen.") + if !(week >= 0 && week <= 2) { + errors = append(errors, "Sprechstunden müssen jede, jede gerade oder jede ungerade Vorlesungswoche stattfinden.") } day, err := strconv.Atoi(req.FormValue("tag")) if err != nil { diff --git a/models/date.go b/models/date.go index bea4dc4..61ce6a3 100644 --- a/models/date.go +++ b/models/date.go @@ -5,7 +5,7 @@ import ( ) type Date struct { - Week int // Set whether the date is all weeks (0), weeks with exercise session (1) or weeks without exercise session (2), even weeks (3), odd weeks (4) or other (5). + Week int // Set whether the date is all weeks (0), odd weeks (1) or even weeks (2). Day int Hour int Minute int diff --git a/repositories/officeHour.go b/repositories/officeHour.go index 4a0243a..27ccd86 100644 --- a/repositories/officeHour.go +++ b/repositories/officeHour.go @@ -245,7 +245,9 @@ func (r *OfficeHourRepo) NumberByTimeSpanAndRoom(date models.Date, duration int, for _, officeHour := range officeHours { // increase count if officehour starts before this point in time and ends later if models.DateLess(officeHour.Date, models.GetEndDate(date, minute, false)) && models.DateLess(models.GetEndDate(date, minute, false), models.GetEndDate(officeHour.Date, officeHour.Duration, false)) { - minuteCount += 1 + if date.Week == 0 || officeHour.Week == 0 || date.Week == officeHour.Week { // office hours in alternating weeks should not collide + minuteCount += 1 + } } } if minuteCount > count { diff --git a/repositories/request.go b/repositories/request.go index 011f015..315388f 100644 --- a/repositories/request.go +++ b/repositories/request.go @@ -7,9 +7,10 @@ import ( "database/sql" "errors" "fmt" - "github.com/wneessen/go-mail" + "html/template" "log" "math/big" + "github.com/wneessen/go-mail" "officeHours/config" "officeHours/models" "officeHours/templating" @@ -133,9 +134,10 @@ func (r *RequestRepo) newSecret() (string, error) { func (r *RequestRepo) sendConfirmationMail(request models.Request) error { var messageText bytes.Buffer var data = struct { - Config config.Config - Request models.Request - }{r.config, request} + Config config.Config + Request models.Request + MessageId template.HTML + }{r.config, request, template.HTML("<" + randomString(15) + "@" + r.config.Server.Domain + ">")} err := templating.WriteTemplate(&messageText, "confirmationMail", data) if err != nil { err = fmt.Errorf("error parsing confirmation Mail: %w", err) @@ -154,32 +156,34 @@ func (r *RequestRepo) sendConfirmationMail(request models.Request) error { } if err := message.To(request.OfficeHour.Tutor.Email); err != nil { log.Println(err.Error()) - return err + return err; } switch request.Action { - case models.RequestActivate: - message.Subject("Sprechstunde anlegen") - case models.RequestDelete: - message.Subject("Sprechstunde löschen") + case models.RequestActivate: + message.Subject("Sprechstunde anlegen") + case models.RequestDelete: + message.Subject("Sprechstunde löschen") } message.SetBodyString(mail.TypeTextPlain, messageText.String()) - - var options []mail.Option - options = append(options, mail.WithPort(r.config.Mailer.SmtpPort)) - if r.config.Mailer.SmtpUseAuth { - options = append(options, mail.WithSMTPAuth(mail.SMTPAuthPlain)) - options = append(options, mail.WithUsername(r.config.Mailer.SmtpIdentity)) - options = append(options, mail.WithPassword(r.config.Mailer.SmtpPassword)) - } - client, err := mail.NewClient(r.config.Mailer.SmtpHost, options...) + client, err := mail.NewClient(r.config.Mailer.SmtpHost, mail.WithPort(r.config.Mailer.SmtpPort))/*, mail.WithSMTPAuth(mail.SMTPAuthPlain), + mail.WithUsername(r.config.Mailer.SmtpIdentity), mail.WithPassword(r.config.Mailer.SmtpPassword))*/ if err != nil { log.Println(err.Error()) - return err + return err; } if err := client.DialAndSend(message); err != nil { log.Println(err.Error()) - return err + return err; } +/* var auth smtp.Auth + if r.config.Mailer.SmtpUseAuth { + auth = smtp.PlainAuth(r.config.Mailer.SmtpIdentity, r.config.Mailer.FromAddress, r.config.Mailer.SmtpPassword, r.config.Mailer.SmtpHost) + } + err = smtp.SendMail(fmt.Sprintf("%s:%d", r.config.Mailer.SmtpHost, r.config.Mailer.SmtpPort), auth, string(r.config.Mailer.FromName), to, message.Bytes()) + if err != nil { + err = fmt.Errorf("error sending mail by smtp: %w", err) + log.Println(err.Error()) + }*/ } return nil } diff --git a/templating/templates/addMask.html b/templating/templates/addMask.html index 634a4f4..98152d7 100644 --- a/templating/templates/addMask.html +++ b/templating/templates/addMask.html @@ -59,12 +59,9 @@
diff --git a/templating/templates/addSuccess.html b/templating/templates/addSuccess.html index ef4c343..849a20f 100644 --- a/templating/templates/addSuccess.html +++ b/templating/templates/addSuccess.html @@ -6,5 +6,9 @@ Du solltest eine Mail mit einem Aktivierungslink erhalten haben. Klicke auf diesen, um die Sprechstunde öffentlich anzuzeigen. +
+ Wir haben vermehrt erfahren, dass Mails, die an GMX oder Web.de weitergeleitet werden, nicht zugestellt werden. + Falls du davon betroffen bist, melde dich bei sprechstundentool@mathebau.de. +
{{end}} diff --git a/templating/templates/confirmationMail b/templating/templates/confirmationMail index 1d61fdb..30205e1 100644 --- a/templating/templates/confirmationMail +++ b/templating/templates/confirmationMail @@ -5,7 +5,6 @@ mit deiner Emailadresse soll eine Sprechstunde mit folgenden Daten {{if eq .Requ {{.Request.OfficeHour.Course.Name}} {{DayName .Request.OfficeHour.Date.Day}} {{printf "%02d" .Request.OfficeHour.Date.Hour}}:{{printf "%02d" .Request.OfficeHour.Date.Minute}} Uhr bis {{printf "%02d" .Request.OfficeHour.EndDate.Hour}}:{{printf "%02d" .Request.OfficeHour.EndDate.Minute}} Uhr -{{if eq 0 .Request.OfficeHour.Date.Week}}Jede Woche{{end}}{{if eq 1 .Request.OfficeHour.Date.Week}}In Wochen mit Übung{{end}}{{if eq 2 .Request.OfficeHour.Date.Week}}In Wochen ohne Übung{{end}}{{if eq 3 .Request.OfficeHour.Date.Week}}In geraden Vorlesungswochen{{end}}{{if eq 4 .Request.OfficeHour.Date.Week}}In ungeraden Vorlesungswochen{{end}} {{.Request.OfficeHour.Tutor.Name}} {{.Request.OfficeHour.Room.Name}} diff --git a/templating/templates/deleteMailForm.html b/templating/templates/deleteMailForm.html index 11a8119..378e6e7 100644 --- a/templating/templates/deleteMailForm.html +++ b/templating/templates/deleteMailForm.html @@ -11,7 +11,7 @@

Willst du die Sprechstunde
{{printf "%02d" .OfficeHour.Date.Hour}}:{{printf "%02d" .OfficeHour.Date.Minute}} - {{printf "%02d" .OfficeHour.EndDate.Hour}}:{{printf "%02d" .OfficeHour.EndDate.Minute}}
- {{if eq 0 $.Date.Week}}>Jede Woche
{{end}}{{if eq 1 $.Date.Week}}In Wochen mit Übung
{{end}}{{if eq 2 $.Date.Week}}In Wochen ohne Übung
{{end}}{{if eq 3 $.Date.Week}}In geraden Vorlesungswochen
{{end}}{{if eq 4 $.Date.Week}}In ungeraden Vorlesungswochen
{{end}} + {{if eq .OfficeHour.Date.Week 1}}in ungeraden Vorlesungswochen
{{end}}{{if eq .OfficeHour.Date.Week 2}}in geraden Vorlesungswochen
{{end}} {{.OfficeHour.Course.Name}}
{{.OfficeHour.Tutor.Name}}
{{.OfficeHour.Room.Name}}
diff --git a/templating/templates/td.html b/templating/templates/td.html index 76fc5e1..cb1f041 100644 --- a/templating/templates/td.html +++ b/templating/templates/td.html @@ -1,7 +1,7 @@ {{if .DeleteIcons}}

{{end}} {{printf "%02d" .OfficeHour.Date.Hour}}:{{printf "%02d" .OfficeHour.Date.Minute}} - {{printf "%02d" .OfficeHour.EndDate.Hour}}:{{printf "%02d" .OfficeHour.EndDate.Minute}}
- {{if eq 1 .OfficeHour.Date.Week}}In Wochen mit Übung
{{end}}{{if eq 2 .OfficeHour.Date.Week}}In Wochen ohne Übung
{{end}}{{if eq 3 .OfficeHour.Date.Week}}In geraden Vorlesungswochen
{{end}}{{if eq 4 .OfficeHour.Date.Week}}In ungeraden Vorlesungswochen
{{end}} + {{if eq .OfficeHour.Date.Week 1}}in ungeraden Vorlesungswochen
{{end}}{{if eq .OfficeHour.Date.Week 2}}in geraden Vorlesungswochen
{{end}} {{.OfficeHour.Course.Name}}
{{.OfficeHour.Tutor.Name}}
{{.OfficeHour.Room.Name}}