Compare commits

..

No commits in common. "5901846d22cd7a3a6824b37130edc4d95c0044fd" and "50b9f0c756c16e96ce3c2b68319ce79e8804b84a" have entirely different histories.

12 changed files with 24 additions and 43 deletions

3
.gitignore vendored
View file

@ -20,6 +20,3 @@ vendor/
# Go workspace file # Go workspace file
go.work go.work
#IDE files
*.geany

View file

@ -32,7 +32,6 @@ type maskData struct {
Roomname string Roomname string
Name string Name string
Email string Email string
SubscribeToMailinglist bool
Info string Info string
Errors []string Errors []string
Config config.Config Config config.Config
@ -130,9 +129,6 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
} else if !(b.config.Tutor.MailSuffix == "" || strings.HasSuffix(email.Address, "@"+b.config.Tutor.MailSuffix) || strings.HasSuffix(email.Address, "."+b.config.Tutor.MailSuffix)) { } else if !(b.config.Tutor.MailSuffix == "" || strings.HasSuffix(email.Address, "@"+b.config.Tutor.MailSuffix) || strings.HasSuffix(email.Address, "."+b.config.Tutor.MailSuffix)) {
errors = append(errors, fmt.Sprintf("Mailaddresse muss auf „%s“ enden.", b.config.Tutor.MailSuffix)) errors = append(errors, fmt.Sprintf("Mailaddresse muss auf „%s“ enden.", b.config.Tutor.MailSuffix))
} }
subscribeToMailinglist := req.FormValue("subscribeToMailinglist") == "subscribe"
info := req.FormValue("info") info := req.FormValue("info")
allowed, err := b.officeHourRepo.AllowedAt(date, duration, room, true) allowed, err := b.officeHourRepo.AllowedAt(date, duration, room, true)
@ -159,7 +155,6 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
roomname, roomname,
name, name,
email.Address, email.Address,
subscribeToMailinglist,
info, info,
errors, errors,
b.config, b.config,
@ -169,7 +164,7 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
// if the data for a new office hour was sent correctly, save it. // if the data for a new office hour was sent correctly, save it.
officeHour := models.OfficeHour{Id: 0, officeHour := models.OfficeHour{Id: 0,
Tutor: models.Tutor{Id: 0, Name: name, Email: email.Address, SubscribeToMailinglist: subscribeToMailinglist}, Tutor: models.Tutor{Id: 0, Name: name, Email: email.Address},
Date: date, Date: date,
Room: room, Room: room,
RoomName: roomname, RoomName: roomname,

View file

@ -37,7 +37,7 @@ func (b *BaseHandler) GetTimetable(officeHours []models.OfficeHour) (map[models.
} }
} }
slots := []int{1, 1, 1, 1, 1} slots := []int{1, 1, 1, 1, 1}
for date := range timetable { for date, _ := range timetable {
if slots[date.Day] < len(timetable[date]) { if slots[date.Day] < len(timetable[date]) {
slots[date.Day] = len(timetable[date]) slots[date.Day] = len(timetable[date])
} }

2
go.mod
View file

@ -2,6 +2,6 @@ module officeHours
go 1.18 go 1.18
require github.com/mattn/go-sqlite3 v1.14.19 require github.com/mattn/go-sqlite3 v1.14.18
require github.com/go-sql-driver/mysql v1.7.1 require github.com/go-sql-driver/mysql v1.7.1

2
go.sum
View file

@ -2,5 +2,3 @@ github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrt
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI= github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI=
github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI=
github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=

View file

@ -5,7 +5,6 @@ type Tutor struct {
Id int Id int
Name string Name string
Email string Email string
SubscribeToMailinglist bool // Wants to subscribe to the mailinglist for student assistents
} }
type TutorRepository interface { type TutorRepository interface {

View file

@ -21,8 +21,7 @@ CREATE TABLE `room` (
CREATE TABLE `tutor` ( CREATE TABLE `tutor` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT, `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`name` tinytext DEFAULT NULL, `name` tinytext DEFAULT NULL,
`email` tinytext DEFAULT NULL, `email` tinytext DEFAULT NULL
`subscribeToMailinglist` BOOL DEFAULT false
); );
-- --

View file

@ -53,8 +53,7 @@ DROP TABLE IF EXISTS `tutor`;
CREATE TABLE `tutor` ( CREATE TABLE `tutor` (
`id` INTEGER PRIMARY KEY, `id` INTEGER PRIMARY KEY,
`name` tinytext DEFAULT NULL, `name` tinytext DEFAULT NULL,
`email` tinytext DEFAULT NULL, `email` tinytext DEFAULT NULL
`subscribeToMailinglist` BOOL DEFAULT false
); );
-- --

View file

@ -50,7 +50,7 @@ func (r *TutorRepo) Add(tutor models.Tutor) (int, error) {
//Don't add identical tutors //Don't add identical tutors
existentTutor, err := r.FindByNameAndEmail(tutor.Name, tutor.Email) existentTutor, err := r.FindByNameAndEmail(tutor.Name, tutor.Email)
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
sqlResult, err := r.db.Exec("INSERT INTO `tutor` (name, email, subscribeToMailinglist) VALUES (?,?,?)", tutor.Name, tutor.Email, tutor.SubscribeToMailinglist) sqlResult, err := r.db.Exec("INSERT INTO `tutor` (name, email) VALUES (?,?)", tutor.Name, tutor.Email)
if err != nil { if err != nil {
err = fmt.Errorf("SQL-error inserting new tutor: %w", err) err = fmt.Errorf("SQL-error inserting new tutor: %w", err)
log.Println(err.Error()) log.Println(err.Error())
@ -67,7 +67,7 @@ func (r *TutorRepo) Add(tutor models.Tutor) (int, error) {
func (r *TutorRepo) getFromRow(row *sql.Row) (models.Tutor, error) { func (r *TutorRepo) getFromRow(row *sql.Row) (models.Tutor, error) {
var tutor models.Tutor var tutor models.Tutor
if err := row.Scan(&tutor.Id, &tutor.Name, &tutor.Email, &tutor.SubscribeToMailinglist); err != nil { if err := row.Scan(&tutor.Id, &tutor.Name, &tutor.Email); err != nil {
err = fmt.Errorf("SQL-error scanning tutor row: %w", err) err = fmt.Errorf("SQL-error scanning tutor row: %w", err)
log.Println(err.Error()) log.Println(err.Error())
return models.Tutor{}, err return models.Tutor{}, err
@ -79,7 +79,7 @@ func (r *TutorRepo) getFromRows(rows *sql.Rows) ([]models.Tutor, error) {
var tutors []models.Tutor var tutors []models.Tutor
for rows.Next() { for rows.Next() {
var tutor models.Tutor var tutor models.Tutor
if err := rows.Scan(&tutor.Id, &tutor.Name, &tutor.Email, &tutor.SubscribeToMailinglist); err != nil { if err := rows.Scan(&tutor.Id, &tutor.Name, &tutor.Email); err != nil {
err = fmt.Errorf("Error scanning tutor row: %w", err) err = fmt.Errorf("Error scanning tutor row: %w", err)
log.Println(err.Error()) log.Println(err.Error())
return tutors, err return tutors, err

View file

@ -31,13 +31,7 @@
{{end}} {{end}}
Die Email-Adresse dient der Vermeidung von Spam und wird nicht veröffentlicht. Die Email-Adresse dient der Vermeidung von Spam und wird nicht veröffentlicht.
</div> </div>
<div class="form-check">
<input class="form-check-input" name="subscribeToMailinglist" id="subscribeToMailinglist" type="checkbox" value="subscribe" {{if eq .SubscribeToMailinglist true}}checked{{end}}>
<label class="form-check-label" for="subscribeToMailinglist"><a href="https://lists.mathebau.de/postorius/lists/shk.mathebau.de/">Mailingliste für SHK abbonieren</a></label>
</div> </div>
</div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
<select class="form-control form-select required" required name="veranstaltung" id="veranstaltung"> <select class="form-control form-select required" required name="veranstaltung" id="veranstaltung">

View file

@ -1,7 +1,7 @@
From: {{.Config.Mailer.FromName}} From: {{.Config.Mailer.FromName}}
To: {{.Request.OfficeHour.Tutor.Email}} To: {{.Request.OfficeHour.Tutor.Email}}
Subject: Sprechstunde {{if eq .Request.Action 0}}anlegen{{end}}{{if eq .Request.Action 1}}löschen{{end}} Subject: Sprechstunde {{if eq .Request.Action 0}}anlegen{{end}}{{if eq .Request.Action 1}}löschen{{end}}
Message-ID: {{.MessageId}} Message-Id: {{.MessageId}}
Hallo {{.Request.OfficeHour.Tutor.Name}}, Hallo {{.Request.OfficeHour.Tutor.Name}},