step 8 : templ and handling submit except saran mcu

This commit is contained in:
sindhu
2024-05-21 16:11:20 +07:00
parent 7d6e8cc687
commit 79d736884e
7 changed files with 1035 additions and 0 deletions

View File

@@ -0,0 +1,154 @@
package public_handlers
import (
"cpone/models"
"cpone/utils"
surveymcu "cpone/views/public/surveymcu"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
"go.uber.org/zap"
)
type SurveyMcuService interface {
GetSurveyMcuByNoreg(nomorRegistrasi string) ([]models.SurveyMcu, error)
}
func NewSurveyMcuHandler(us SurveyMcuService) *SurveyMcuHandler {
return &SurveyMcuHandler{
SurveyMcuService: us,
}
}
type SurveyMcuHandler struct {
SurveyMcuService SurveyMcuService
}
func (lh *SurveyMcuHandler) HandlerShowSurveyMcu(c echo.Context) error {
nomorRegistrasi := c.Param("nomorRegistrasi")
// nomorRegistrasi := "1"
logger, _ := zap.NewProduction()
defer logger.Sync()
dataSurveyMcu, err := lh.SurveyMcuService.GetSurveyMcuByNoreg(nomorRegistrasi)
if err != nil {
logger.Info("Error",
zap.Any("Error", err),
zap.Any("prm", nomorRegistrasi),
)
return err
}
logger.Info("SHOW DATA SURVEY MCU handler",
zap.Any("return", dataSurveyMcu),
zap.Any("prm", nomorRegistrasi),
)
stringUrl := "surveymcuproses/" + nomorRegistrasi
var hxInclude string = ""
var idClearMsg []models.IdClearErrorMessage
if len(dataSurveyMcu) > 0 {
for _, v := range dataSurveyMcu {
if len(v.DataListItemSurveyMcu) > 0 {
hxInclude = utils.ConcatHxIncludeSurveyMcu(v.DataListItemSurveyMcu)
}
}
}
si := surveymcu.ShowSurveyMcu("Survey Mcu",
surveymcu.MainContentSurveyMcuLayout(dataSurveyMcu, stringUrl, surveymcu.ErrorMessageSurveyMcu("", "", idClearMsg, "alertSaranMcu"), hxInclude), surveymcu.CssSurveyMcu(), surveymcu.JsSurveyMcu())
return utils.View(c, si)
}
func (lh *SurveyMcuHandler) HandlerProcessSurveyMcu(c echo.Context) error {
nomorRegistrasi := c.Param("nomorRegistrasi")
// nomorRegistrasi := "1"
logger, _ := zap.NewProduction()
defer logger.Sync()
dataSurveyMcu, err := lh.SurveyMcuService.GetSurveyMcuByNoreg(nomorRegistrasi)
if err != nil {
logger.Info("Error",
zap.Any("Error", err),
zap.Any("prm", nomorRegistrasi),
)
return err
}
logger.Info("SHOW DATA SURVEY MCU handler",
zap.Any("return", dataSurveyMcu),
zap.Any("prm", nomorRegistrasi),
)
form := c.Request().PostForm
// stringUrl := "surveymcuproses/" + nomorRegistrasi
logger.Info("CEK POST handler",
zap.Any("c.FormValue", c.FormValue(form.Get("radio-1"))),
zap.Any("name dari inputan", form.Get("radio-1")),
)
// proses validasi
var si templ.Component
var idFormKosong string = ""
var stringMessage string = ""
var isFormEmpty bool = false
var idClearMsg []models.IdClearErrorMessage
var idSaranMcuAlert string = ""
// var idSaranMcuClear string = ""
if len(dataSurveyMcu) > 0 {
for _, v := range dataSurveyMcu {
if len(v.DataListItemSurveyMcu) > 0 {
for _, x := range v.DataListItemSurveyMcu {
if len(c.FormValue("radio-"+x.IDItemSurvey)) > 0 {
idClearMsg = append(idClearMsg, models.IdClearErrorMessage{IdItem: x.IDItemSurvey})
}
if "default-"+x.NameRadioButton == c.FormValue("default-"+x.NameRadioButton) && len(c.FormValue("radio-"+x.IDItemSurvey)) == 0 {
stringMessage += "Pertanyaan ke-" + x.IDItemSurvey + " wajib diisi,"
idFormKosong += utils.GetIdSurveyMcu(x.IDItemSurvey)
isFormEmpty = true
break
}
}
}
}
}
// if len(c.FormValue("saranMcu")) == 0 {
// isFormEmpty = true
// stringMessage += " Kemudian Saran Mcu Wajib Diisi"
// idSaranMcuAlert = "alertSaranMcu"
// }
// if len(c.FormValue("saranMcu")) > 0 {
// isFormEmpty = false
// stringMessage += ""
// idSaranMcuAlert = "alertSaranMcu"
// }
if isFormEmpty {
si = surveymcu.ErrorMessageSurveyMcu(stringMessage, idFormKosong, idClearMsg, idSaranMcuAlert)
// si = surveymcu.ShowSurveyMcu("Survey Mcu",
// surveymcu.MainContentSurveyMcuLayout(dataSurveyMcu, nomorRegistrasi, surveymcu.ErrorMessageSurveyMcu(stringMessage, idFormKosong)), surveymcu.CssSurveyMcu(), surveymcu.JsSurveyMcu())
// si = surveymcu.FormSurvey(dataSurveyMcu, stringUrl)
} else {
// var idClearMsgEmpty []models.IdClearErrorMessage
si = surveymcu.ErrorMessageSurveyMcu("", "", idClearMsg, "")
}
// stringMessage += fmt.Sprintf("Pertanyaan ke-%s", x.IDItemSurvey, " wajib diisi")
// si := surveymcu.ShowSurveyMcu("Survey Mcu",
// surveymcu.MainContentSurveyMcuLayout(dataSurveyMcu, nomorRegistrasi), surveymcu.CssSurveyMcu(), surveymcu.JsSurveyMcu())
return utils.View(c, si)
}

View File

@@ -9,6 +9,7 @@ import (
corporate_services "cpone/services/corporate"
dev_services "cpone/services/dev"
public_services "cpone/services/public"
"net/http"
"cpone/db"
@@ -76,6 +77,19 @@ func SetupRoutesPublic(app *echo.Echo, appStore db.AppStore) {
publicKartuKontrolhandlers := public_handlers.NewKartuKontrolHandler(publicKartuKontrolServices)
public.GET("kartukontrol/:nomorRegistrasi", publicKartuKontrolhandlers.HandlerShowKartuKontrol)
public.GET("modalsurveykartukontrol", publicKartuKontrolhandlers.HandlerShowWordingModalSurveyMcu)
// survey mcu page (pertanyaan dan jawaban)
publicSurveyMcuServices := public_services.NewServicesSurveyMcu(appStore)
publicSurveyMcuhandlers := public_handlers.NewSurveyMcuHandler(publicSurveyMcuServices)
public.GET("surveymcu/:nomorRegistrasi", publicSurveyMcuhandlers.HandlerShowSurveyMcu)
// contoh penggunaan header location spt php
app.GET("/redirectsurveymcu", func(c echo.Context) error {
return c.Redirect(http.StatusFound, "surveymcu/:nomorRegistrasi")
})
// surveymcuproses
public.POST("surveymcuproses/:nomorRegistrasi", publicSurveyMcuhandlers.HandlerProcessSurveyMcu)
}
func SetupRoutesCorporate(app *echo.Echo, appStore db.AppStore) {
public := app.Group("/corp")