package helper import ( "bytes" "email-notification/config" "fmt" "html/template" "log" "net/smtp" "time" "github.com/google/uuid" ) func GenerateSessionID() string { return uuid.New().String() } func ParseHTML(filePath string, v any) string { tmpl, err := template.ParseFiles(filePath) if err != nil { log.Printf("Error parsing template: %v", err) } // type Data struct { // Name string // } // data := Data{Name: name} var buf bytes.Buffer if err := tmpl.Execute(&buf, v); err != nil { log.Printf("Error executing template: %v", err) } return buf.String() } func FormatSince(t time.Time) string { now := time.Now() dur := now.Sub(t) years := int(dur.Hours() / 24 / 365) if years > 0 { return fmt.Sprintf("%d", years) } // months := int(dur.Hours() / 24 / 30) // if months > 0 { // return fmt.Sprintf("%d bulan yang lalu", months) // } // days := int(dur.Hours() / 24) // if days > 0 { // return fmt.Sprintf("%d hari yang lalu", days) // } // hours := int(dur.Hours()) // if hours > 0 { // return fmt.Sprintf("%d jam yang lalu", hours) // } // minutes := int(dur.Minutes()) // if minutes > 0 { // return fmt.Sprintf("%d menit yang lalu", minutes) // } return "baru saja" } func SendEmail(to []string, cc []string, name, subject, message, htmlString string) error { sender := "From: " + config.Mail().SMTPSenderName + "\n" subjectt := "Subject: " + subject + "\n" mime := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n" body := htmlString messages := []byte(sender + subjectt + mime + body) auth := smtp.PlainAuth("", config.Mail().AuthEmail, config.Mail().AuthPassword, config.Mail().SMTPHost) smtpAddr := fmt.Sprintf("%s:%d", config.Mail().SMTPHost, config.Mail().SMTPPort) err := smtp.SendMail(smtpAddr, auth, config.Mail().AuthEmail, append(to, cc...), messages) if err != nil { return err } return nil }