This commit is contained in:
teddy
2025-04-18 18:15:59 +07:00
parent f7db944b97
commit d20ff0b41b
10 changed files with 306 additions and 92 deletions

123
route/route.go Normal file
View File

@@ -0,0 +1,123 @@
package route
import (
"email-notification/app"
"email-notification/helper"
"email-notification/middleware"
"email-notification/model"
"email-notification/query"
"fmt"
"log"
"net/http"
"time"
"gorm.io/gorm"
)
func Route(db *gorm.DB) {
http.HandleFunc("/birthday-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
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.Fatalf("%+v %+v response %+v", sessionID, module, err.Error())
w.WriteHeader(500)
w.Write([]byte(err.Error()))
}
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 := app.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
if err != nil {
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
w.WriteHeader(500)
w.Write([]byte(err.Error()))
} else {
log.Fatalf("%+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) {
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.Fatalf("%+v %+v response %+v", sessionID, module, err.Error())
w.WriteHeader(500)
w.Write([]byte(err.Error()))
}
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)
fmt.Println("durasi", duration)
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 := app.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
if err != nil {
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
w.WriteHeader(500)
w.Write([]byte(err.Error()))
} else {
log.Fatalf("%+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("/test", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("success"))
}))
}