mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
feat: email reports (resolve #124)
This commit is contained in:
@ -3,8 +3,10 @@ package mail
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/muety/wakapi/models"
|
||||
"github.com/muety/wakapi/routes"
|
||||
"html/template"
|
||||
"io/ioutil"
|
||||
"text/template"
|
||||
|
||||
conf "github.com/muety/wakapi/config"
|
||||
"github.com/muety/wakapi/services"
|
||||
@ -14,8 +16,10 @@ import (
|
||||
const (
|
||||
tplNamePasswordReset = "reset_password"
|
||||
tplNameImportNotification = "import_finished"
|
||||
tplNameReport = "report"
|
||||
subjectPasswordReset = "Wakapi – Password Reset"
|
||||
subjectImportNotification = "Wakapi – Data Import Finished"
|
||||
subjectReport = "Wakapi – Your Latest Report"
|
||||
)
|
||||
|
||||
type PasswordResetTplData struct {
|
||||
@ -28,6 +32,10 @@ type ImportNotificationTplData struct {
|
||||
NumHeartbeats int
|
||||
}
|
||||
|
||||
type ReportTplData struct {
|
||||
Report *models.Report
|
||||
}
|
||||
|
||||
// Factory
|
||||
func NewMailService() services.IMailService {
|
||||
config := conf.Get()
|
||||
@ -65,6 +73,18 @@ func getImportNotificationTemplate(data ImportNotificationTplData) (*bytes.Buffe
|
||||
return &rendered, nil
|
||||
}
|
||||
|
||||
func getReportTemplate(data ReportTplData) (*bytes.Buffer, error) {
|
||||
tpl, err := loadTemplate(tplNameReport)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var rendered bytes.Buffer
|
||||
if err := tpl.Execute(&rendered, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &rendered, nil
|
||||
}
|
||||
|
||||
func loadTemplate(tplName string) (*template.Template, error) {
|
||||
tplFile, err := views.TemplateFiles.Open(fmt.Sprintf("mail/%s.tpl.html", tplName))
|
||||
if err != nil {
|
||||
@ -77,5 +97,8 @@ func loadTemplate(tplName string) (*template.Template, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return template.New(tplName).Parse(string(tplData))
|
||||
return template.
|
||||
New(tplName).
|
||||
Funcs(routes.DefaultTemplateFuncs()).
|
||||
Parse(string(tplData))
|
||||
}
|
||||
|
Reference in New Issue
Block a user