module_notify_mail.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package modules
  2. import (
  3. "html"
  4. "golang-fave/assets"
  5. "golang-fave/consts"
  6. "golang-fave/engine/builder"
  7. "golang-fave/engine/sqlw"
  8. "golang-fave/engine/wrapper"
  9. "golang-fave/utils"
  10. )
  11. func (this *Modules) RegisterModule_NotifyMail() *Module {
  12. return this.newModule(MInfo{
  13. WantDB: true,
  14. Mount: "notify-mail",
  15. Name: "Mail notifier",
  16. Order: 803,
  17. System: true,
  18. Icon: assets.SysSvgIconEmail,
  19. Sub: &[]MISub{
  20. {Mount: "default", Name: "All", Show: true, Icon: assets.SysSvgIconList},
  21. {Mount: "success", Name: "Success", Show: true, Icon: assets.SysSvgIconList},
  22. {Mount: "in-progress", Name: "In progress", Show: true, Icon: assets.SysSvgIconList},
  23. {Mount: "error", Name: "Error", Show: true, Icon: assets.SysSvgIconList},
  24. },
  25. }, nil, func(wrap *wrapper.Wrapper) (string, string, string) {
  26. content := ""
  27. sidebar := ""
  28. if wrap.CurrSubModule == "" || wrap.CurrSubModule == "default" || wrap.CurrSubModule == "success" || wrap.CurrSubModule == "in-progress" || wrap.CurrSubModule == "error" {
  29. ModuleName := "All"
  30. ModulePagination := "/cp/" + wrap.CurrModule + "/"
  31. ModuleSqlWhere := ""
  32. if wrap.CurrSubModule == "success" {
  33. ModuleName = "Success"
  34. ModulePagination = "/cp/" + wrap.CurrModule + "/success/"
  35. ModuleSqlWhere = " WHERE notify_mail.status = 1"
  36. } else if wrap.CurrSubModule == "in-progress" {
  37. ModuleName = "In progress"
  38. ModulePagination = "/cp/" + wrap.CurrModule + "/in-progress/"
  39. ModuleSqlWhere = " WHERE notify_mail.status = 2 OR notify_mail.status = 3"
  40. } else if wrap.CurrSubModule == "error" {
  41. ModuleName = "Error"
  42. ModulePagination = "/cp/" + wrap.CurrModule + "/error/"
  43. ModuleSqlWhere = " WHERE notify_mail.status = 0"
  44. }
  45. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  46. {Name: ModuleName},
  47. })
  48. content += builder.DataTable(
  49. wrap,
  50. "notify_mail",
  51. "id",
  52. "DESC",
  53. &[]builder.DataTableRow{
  54. {
  55. DBField: "id",
  56. },
  57. {
  58. DBField: "email",
  59. NameInTable: "Email / Subject",
  60. CallBack: func(values *[]string) string {
  61. subject := html.EscapeString((*values)[2])
  62. if subject != "" {
  63. subject = `<div><small>` + subject + `</small></div>`
  64. }
  65. return `<div>` + html.EscapeString((*values)[1]) + `</div>` + subject
  66. },
  67. },
  68. {
  69. DBField: "subject",
  70. },
  71. {
  72. DBField: "datetime",
  73. DBExp: "UNIX_TIMESTAMP(`datetime`)",
  74. NameInTable: "Date / Time",
  75. Classes: "d-none d-md-table-cell",
  76. CallBack: func(values *[]string) string {
  77. t := int64(utils.StrToInt((*values)[3]))
  78. return `<div>` + utils.UnixTimestampToFormat(t, "02.01.2006") + `</div>` +
  79. `<div><small>` + utils.UnixTimestampToFormat(t, "15:04:05") + `</small></div>`
  80. },
  81. },
  82. {
  83. DBField: "status",
  84. NameInTable: "Status",
  85. Classes: "d-none d-sm-table-cell",
  86. CallBack: func(values *[]string) string {
  87. return builder.CheckBox(utils.StrToInt((*values)[4]))
  88. },
  89. },
  90. },
  91. nil,
  92. ModulePagination,
  93. func() (int, error) {
  94. var count int
  95. return count, wrap.DB.QueryRow(
  96. "SELECT COUNT(*) FROM `notify_mail`" + ModuleSqlWhere + ";",
  97. ).Scan(&count)
  98. },
  99. func(limit_offset int, pear_page int) (*sqlw.Rows, error) {
  100. return wrap.DB.Query(
  101. `SELECT
  102. notify_mail.id,
  103. notify_mail.email,
  104. notify_mail.subject,
  105. UNIX_TIMESTAMP(`+"`notify_mail`.`datetime`"+`) AS datetime,
  106. notify_mail.status
  107. FROM
  108. notify_mail
  109. `+ModuleSqlWhere+`
  110. ORDER BY
  111. notify_mail.id DESC
  112. LIMIT ?, ?;`,
  113. limit_offset,
  114. pear_page,
  115. )
  116. },
  117. true,
  118. )
  119. }
  120. return this.getSidebarModules(wrap), content, sidebar
  121. })
  122. }