Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
d3cb4bc375 | |||
3ccbe8ec74 |
9 changed files with 39 additions and 33 deletions
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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}}
|
||||
|
|
|
@ -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}}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue