Add custom activity support and clear booking data on submission
This commit is contained in:
@@ -14,9 +14,10 @@ import (
|
||||
)
|
||||
|
||||
type Activity struct {
|
||||
Name string `json:"name"`
|
||||
Icon string `json:"icon"`
|
||||
Type string `json:"type"`
|
||||
Name string `json:"name"`
|
||||
Icon string `json:"icon"`
|
||||
Type string `json:"type"`
|
||||
CustomDescription string `json:"customDescription,omitempty"`
|
||||
}
|
||||
|
||||
type SurveyPayload struct {
|
||||
@@ -233,12 +234,19 @@ func sendEmail(payload SurveyPayload) error {
|
||||
bodyBuilder.WriteString("Es gibt eine neue Date-Reservierung über deinen Date-Planer:\r\n\r\n")
|
||||
bodyBuilder.WriteString(fmt.Sprintf("👤 Name: %s\r\n", payload.Name))
|
||||
bodyBuilder.WriteString(fmt.Sprintf("📅 Datum: %s (%s)\r\n", payload.Date, payload.DateType))
|
||||
bodyBuilder.WriteString(fmt.Sprintf("💌 Aktivität(en): %s\r\n\r\n", payload.Activity))
|
||||
bodyBuilder.WriteString(fmt.Sprintf("💌 Aktivität(en): %s\r\n\r\n", cleanActivityName(payload.Activity)))
|
||||
|
||||
if len(payload.Activities) > 0 {
|
||||
bodyBuilder.WriteString("Details der Aktivitäten:\r\n")
|
||||
for _, act := range payload.Activities {
|
||||
bodyBuilder.WriteString(fmt.Sprintf(" - %s %s (%s)\r\n", act.Icon, act.Name, act.Type))
|
||||
actName := cleanActivityName(act.Name)
|
||||
if act.CustomDescription != "" {
|
||||
cleanDesc := cleanActivityName(act.CustomDescription)
|
||||
if !strings.Contains(actName, cleanDesc) {
|
||||
actName = cleanDesc
|
||||
}
|
||||
}
|
||||
bodyBuilder.WriteString(fmt.Sprintf(" - %s %s (%s)\r\n", act.Icon, actName, act.Type))
|
||||
}
|
||||
bodyBuilder.WriteString("\r\n")
|
||||
}
|
||||
@@ -263,6 +271,14 @@ func sendEmail(payload SurveyPayload) error {
|
||||
return smtp.SendMail(addr, auth, fromEmail, []string{toEmail}, bodyBuilder.Bytes())
|
||||
}
|
||||
|
||||
func cleanActivityName(s string) string {
|
||||
s = strings.TrimPrefix(s, "Etwas eigenes: ")
|
||||
s = strings.TrimPrefix(s, "Etwas eigenes:")
|
||||
s = strings.TrimPrefix(s, "Sonstiges: ")
|
||||
s = strings.TrimPrefix(s, "Sonstiges:")
|
||||
return strings.TrimSpace(s)
|
||||
}
|
||||
|
||||
func generateICS(payload SurveyPayload) string {
|
||||
parsedDate, err := time.Parse("2006-01-02", payload.Date)
|
||||
dtStart := strings.ReplaceAll(payload.Date, "-", "")
|
||||
@@ -275,8 +291,18 @@ func generateICS(payload SurveyPayload) string {
|
||||
dtStamp := time.Now().UTC().Format("20060102T150405Z")
|
||||
uid := fmt.Sprintf("date-wizard-%s-%d@date-wizard", dtStart, time.Now().UnixNano())
|
||||
|
||||
summary := fmt.Sprintf("Date: %s", payload.Activity)
|
||||
description := fmt.Sprintf("Date mit %s\\nAktivität(en): %s", payload.Name, payload.Activity)
|
||||
activityText := cleanActivityName(payload.Activity)
|
||||
for _, act := range payload.Activities {
|
||||
if act.CustomDescription != "" {
|
||||
cleanDesc := cleanActivityName(act.CustomDescription)
|
||||
if !strings.Contains(activityText, cleanDesc) {
|
||||
activityText = cleanDesc
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
summary := fmt.Sprintf("Date: %s", activityText)
|
||||
description := fmt.Sprintf("Date mit %s\\nAktivität(en): %s", payload.Name, activityText)
|
||||
|
||||
var sb strings.Builder
|
||||
sb.WriteString("BEGIN:VCALENDAR\r\n")
|
||||
|
||||
Reference in New Issue
Block a user