/
orderconsult.go
65 lines (56 loc) · 1.66 KB
/
orderconsult.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package controllers
import (
"bytes"
"fmt"
"html/template"
"os"
"path"
"strconv"
"github.com/Sirupsen/logrus"
"github.com/denisbakhtin/ginshop/config"
"github.com/denisbakhtin/ginshop/models"
"github.com/gin-gonic/gin"
gomail "gopkg.in/gomail.v2"
)
//OrderConsultPost handles GET /orderconsult route
func OrderConsultPost(c *gin.Context) {
orderconsult := models.OrderConsult{}
c.ShouldBind(&orderconsult)
//send email notification
notifyAdminOfOrderConsult(c, &orderconsult)
c.HTML(200, "orderconsult/confirm", gin.H{"OrderConsult": orderconsult})
}
func notifyAdminOfOrderConsult(c *gin.Context, orderconsult *models.OrderConsult) {
//closure is needed here, as r may be released by the time func finishes
go func() {
var b bytes.Buffer
domain := config.GetConfig().Domain
tmpl := template.New("").Funcs(getFuncMap())
workingdir, _ := os.Getwd()
tmpl, _ = tmpl.ParseFiles(path.Join(workingdir, "views", "emails", "admin_orderconsult.gohtml"))
if err := tmpl.Lookup("emails/admin_orderconsult").Execute(&b, gin.H{"OrderConsult": orderconsult}); err != nil {
logrus.Error(err)
return
}
smtp := config.GetConfig().SMTP
msg := gomail.NewMessage()
msg.SetHeader("From", smtp.From)
msg.SetHeader("To", getSetting("order_email"))
msg.SetHeader("Subject", fmt.Sprintf("Consultation order on %s", domain))
msg.SetBody(
"text/html",
b.String(),
)
port, _ := strconv.Atoi(smtp.Port)
dialer := gomail.NewPlainDialer(smtp.SMTP, port, smtp.User, smtp.Password)
sender, err := dialer.Dial()
if err != nil {
logrus.Error(err)
return
}
if err := gomail.Send(sender, msg); err != nil {
logrus.Error(err)
return
}
}()
}