217 lines
5.9 KiB
Go
217 lines
5.9 KiB
Go
package route
|
|
|
|
import (
|
|
"email-notification/helper"
|
|
"email-notification/middleware"
|
|
"email-notification/model"
|
|
"email-notification/query"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func Route(db *gorm.DB) {
|
|
http.HandleFunc("/birthday-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
sessionID := helper.GenerateSessionID()
|
|
module := "BIRTHDAY NOTIFICATION"
|
|
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
|
|
|
data := new([]model.Birthday)
|
|
|
|
month := int(time.Now().Month())
|
|
day := time.Now().Day()
|
|
subject := "Happy Birthday 🎉🎂🥳"
|
|
|
|
err := query.GetBirthday(db, data, fmt.Sprint(month), fmt.Sprint(day))
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
w.WriteHeader(500)
|
|
w.Write([]byte(err.Error()))
|
|
return
|
|
}
|
|
|
|
for _, v := range *data {
|
|
fmt.Println("Birthday", v.Fullname)
|
|
|
|
sendTo := []string{v.Email}
|
|
|
|
type Data struct {
|
|
Name string
|
|
}
|
|
|
|
data := Data{Name: v.Fullname}
|
|
|
|
htmlString := helper.ParseHTML("template/birthday.html", data)
|
|
|
|
go func(v model.Birthday) {
|
|
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, v.Email)
|
|
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
} else {
|
|
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, v.Email)
|
|
}
|
|
}(v)
|
|
}
|
|
|
|
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
|
w.Write([]byte("success"))
|
|
}))
|
|
|
|
http.HandleFunc("/workanniversary-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
sessionID := helper.GenerateSessionID()
|
|
module := "WORKANNIVERSARY NOTIFICATION"
|
|
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
|
|
|
data := new([]model.Workanniversary)
|
|
|
|
month := int(time.Now().Month())
|
|
day := time.Now().Day()
|
|
|
|
err := query.GetWorkanniversary(db, data, fmt.Sprint(month), fmt.Sprint(day))
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
w.WriteHeader(500)
|
|
w.Write([]byte(err.Error()))
|
|
return
|
|
}
|
|
|
|
subject := "Work Anniversary 🎉"
|
|
|
|
for _, v := range *data {
|
|
fmt.Println("Workanniversary", v.Fullname)
|
|
|
|
sendTo := []string{v.Email}
|
|
|
|
type Data struct {
|
|
Name string
|
|
Year string
|
|
}
|
|
|
|
duration := helper.FormatSince(v.HireDate)
|
|
// duration := time.Since(v.HireDate).String()
|
|
|
|
data := Data{Name: v.Fullname, Year: duration}
|
|
|
|
htmlString := helper.ParseHTML("template/workanniversary.html", data)
|
|
|
|
go func(v model.Workanniversary) {
|
|
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, v.Email)
|
|
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
} else {
|
|
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, v.Email)
|
|
}
|
|
}(v)
|
|
}
|
|
|
|
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
|
w.Write([]byte("success"))
|
|
}))
|
|
|
|
http.HandleFunc("/server-down-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
sessionID := helper.GenerateSessionID()
|
|
module := "SERVER DOWN NOTIFICATION"
|
|
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
|
|
|
subject := "Server Down 🚨"
|
|
|
|
sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",")
|
|
|
|
type Data struct {
|
|
TimeAt string
|
|
Host string
|
|
}
|
|
|
|
data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"}
|
|
|
|
htmlString := helper.ParseHTML("template/server-down.html", data)
|
|
|
|
go func() {
|
|
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo)
|
|
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
} else {
|
|
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo)
|
|
}
|
|
}()
|
|
|
|
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
|
w.Write([]byte("success"))
|
|
}))
|
|
|
|
http.HandleFunc("/high-memory-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
sessionID := helper.GenerateSessionID()
|
|
module := "HIGH MEMORY USAGE NOTIFICATION"
|
|
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
|
|
|
subject := "High Memory Usage 🚨"
|
|
|
|
sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",")
|
|
|
|
type Data struct {
|
|
TimeAt string
|
|
Host string
|
|
}
|
|
|
|
data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"}
|
|
|
|
htmlString := helper.ParseHTML("template/high-memory-usage.html", data)
|
|
|
|
go func() {
|
|
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo)
|
|
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
|
if err != nil {
|
|
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
|
} else {
|
|
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo)
|
|
}
|
|
}()
|
|
|
|
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
|
w.Write([]byte("success"))
|
|
}))
|
|
|
|
http.Handle("/", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
if r.URL.Path != "/" {
|
|
w.WriteHeader(404)
|
|
w.Write([]byte("What are you looking for?!"))
|
|
return
|
|
}
|
|
|
|
w.Write([]byte("Welcome!"))
|
|
}))
|
|
}
|