Compare commits

..

2 commits

9 changed files with 39 additions and 33 deletions

View file

@ -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 {

View file

@ -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

View file

@ -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 {

View file

@ -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
}

View file

@ -59,12 +59,9 @@
<div class="form-floating mb-3">
<select class="form-control form-select required" required name="woche" id="woche">
<option value="0"{{if eq 0 $.Date.Week}} selected{{end}}>Jede Woche</option>
<option value="1"{{if eq 1 $.Date.Week}} selected{{end}}>In Wochen mit Übung</option>
<option value="2"{{if eq 2 $.Date.Week}} selected{{end}}>In Wochen ohne Übung</option>
<option value="3"{{if eq 3 $.Date.Week}} selected{{end}}>In geraden Vorlesungswochen</option>
<option value="4"{{if eq 4 $.Date.Week}} selected{{end}}>In ungeraden Vorlesungswochen</option>
<option value="5"{{if eq 5 $.Date.Week}} selected{{end}}>Etwas anderes (nutze Infofeld)</option>
<option value="0"{{if eq 0 $.Date.Week}} selected{{end}}>Jede</option>
<option value="1"{{if eq 1 $.Date.Week}} selected{{end}}>Ungerade</option>
<option value="2"{{if eq 2 $.Date.Week}} selected{{end}}>Gerade</option>
</select>
<label for="woche">Vorlesungswoche</label>
</div>

View file

@ -6,5 +6,9 @@
Du solltest eine Mail mit einem Aktivierungslink erhalten haben.
Klicke auf diesen, um die Sprechstunde öffentlich anzuzeigen.
</div>
<div class="col-md-8 offset-md-2 alert alert-warning">
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 <a href="mailto:sprechstundentool@mathebau.de">sprechstundentool@mathebau.de</a>.
</div>
{{end}}

View file

@ -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}}

View file

@ -11,7 +11,7 @@
<p>
Willst du die Sprechstunde<br>
{{printf "%02d" .OfficeHour.Date.Hour}}:{{printf "%02d" .OfficeHour.Date.Minute}} - {{printf "%02d" .OfficeHour.EndDate.Hour}}:{{printf "%02d" .OfficeHour.EndDate.Minute}}<br>
{{if eq 0 $.Date.Week}}>Jede Woche<br>{{end}}{{if eq 1 $.Date.Week}}In Wochen mit Übung<br>{{end}}{{if eq 2 $.Date.Week}}In Wochen ohne Übung<br>{{end}}{{if eq 3 $.Date.Week}}In geraden Vorlesungswochen<br>{{end}}{{if eq 4 $.Date.Week}}In ungeraden Vorlesungswochen<br>{{end}}
{{if eq .OfficeHour.Date.Week 1}}in ungeraden Vorlesungswochen<br>{{end}}{{if eq .OfficeHour.Date.Week 2}}in geraden Vorlesungswochen<br>{{end}}
{{.OfficeHour.Course.Name}}<br>
{{.OfficeHour.Tutor.Name}}<br>
{{.OfficeHour.Room.Name}}<br>

View file

@ -1,7 +1,7 @@
<td class="officeHour" rowspan="{{divide .OfficeHour.Duration .MinuteGranularity}}">
{{if .DeleteIcons}}<div style="text-align: right;"><a href="/deleteOfficeHour?id={{.OfficeHour.Id}}"></a></div>{{end}}
{{printf "%02d" .OfficeHour.Date.Hour}}:{{printf "%02d" .OfficeHour.Date.Minute}} - {{printf "%02d" .OfficeHour.EndDate.Hour}}:{{printf "%02d" .OfficeHour.EndDate.Minute}}<br>
{{if eq 1 .OfficeHour.Date.Week}}In Wochen mit Übung<br>{{end}}{{if eq 2 .OfficeHour.Date.Week}}In Wochen ohne Übung<br>{{end}}{{if eq 3 .OfficeHour.Date.Week}}In geraden Vorlesungswochen<br>{{end}}{{if eq 4 .OfficeHour.Date.Week}}In ungeraden Vorlesungswochen<br>{{end}}
{{if eq .OfficeHour.Date.Week 1}}in ungeraden Vorlesungswochen<br>{{end}}{{if eq .OfficeHour.Date.Week 2}}in geraden Vorlesungswochen<br>{{end}}
{{.OfficeHour.Course.Name}}<br>
{{.OfficeHour.Tutor.Name}}<br>
{{.OfficeHour.Room.Name}}