package main import ( "fmt" "github.com/Masterminds/sprig" "os" "text/template" ) func CreateMotion(decision *Decision, voter *Voter) (err error) { decision.ProponentId = voter.Id err = decision.Save() if err != nil { logger.Println("Error saving motion:", err) return } type mailContext struct { Decision Name string Sender string Recipient string VoteURL string UnvotedURL string } voteURL := fmt.Sprintf("%s/vote", config.BaseURL) unvotedURL := fmt.Sprintf("%s/motions/?unvoted=1", config.BaseURL) context := mailContext{ *decision, voter.Name, config.NoticeSenderAddress, config.BoardMailAddress, voteURL, unvotedURL} t, err := template.New("create_motion_mail.txt").Funcs( sprig.GenericFuncMap()).ParseFiles("templates/create_motion_mail.txt") if err != nil { logger.Fatal(err) } t.Execute(os.Stdout, context) // TODO: implement mail sending return } func WithdrawMotion(decision *Decision, voter *Voter) (err error) { // load template, fill name, tag, title, content type mailContext struct { *Decision Name string Sender string Recipient string } context := mailContext{decision, voter.Name, config.NoticeSenderAddress, config.BoardMailAddress} // fill withdraw_mail.txt t, err := template.New("withdraw_mail.txt").Funcs( sprig.GenericFuncMap()).ParseFiles("templates/withdraw_mail.txt") if err != nil { logger.Fatal(err) } // TODO: send mail t.Execute(os.Stdout, context) // TODO: implement call decision.Close() return }