add insert data nonlab template

This commit is contained in:
2024-06-05 15:14:59 +07:00
parent 897bdc176c
commit 709fcb316d
7 changed files with 956 additions and 42 deletions

View File

@@ -13,6 +13,7 @@ import (
dev_mdnonlabtemplateview "cpone/views/dev/mdnonlabtemplate"
"fmt"
"strconv"
"strings"
"github.com/a-h/templ"
"github.com/labstack/echo/v4"
@@ -24,6 +25,12 @@ type MDNonlabTemplateServices interface {
GetListNonlabTemplate(search string, currentPage int, rowPerPage int) ([]models.MDNonlabTemplate, int, error)
GetMDNonlabTemplateByID(id string) (models.MDNonlabTemplate, error)
DeleteDataNonlabTemplate(id string) (models.MDNonlabTemplate, error)
AddNonlabTemplate(nama string, fisik string) (models.MDNonlabTemplate, error)
UpdateNonlabTemplate(id string, nama string, fisik string) (models.MDNonlabTemplate, error)
GetIDNonlabTemplate(name string) (int, error)
GetDetailByIDNonlabTemplate(id string) (models.NonlabTemplateDetail, error)
ListDetailByIDNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error)
AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) (models.NonlabTemplateDetail, error)
}
type MDNonlabTemplateHandler struct {
@@ -128,16 +135,15 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex
dialogAddBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: dialogAddBodyID,
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
},
models.CustomTextFieldv2Prm{
Label: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
@@ -145,12 +151,31 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex
ID: "nonlabtemplateinputname",
Value: "N",
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
@@ -497,10 +522,10 @@ func (nlt *MDNonlabTemplateHandler) HandleCloseFormAdd(c echo.Context) error {
Type: "hidden",
},
models.CustomTextFieldv2Prm{
Label: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
@@ -508,12 +533,31 @@ func (nlt *MDNonlabTemplateHandler) HandleCloseFormAdd(c echo.Context) error {
ID: "nonlabtemplateinputname",
Value: "N",
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSHideModal("#"+dialogAddID),
)
@@ -526,26 +570,159 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error {
dialogAddID := c.FormValue("dialogAddID")
searchID := c.FormValue("searchID")
paginationID := c.FormValue("paginationID")
logger.Info("Test Button")
fisik := c.FormValue("nonlabtemplatefisik")
name := c.FormValue("nonlabtemplatename")
id := c.FormValue("nonlabtemplateid")
logger.Info("Component ID", zap.Any("ID", id))
dialogAddBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
flagFisik := "N"
if fisik == "on" {
flagFisik = "Y"
}
formValidation := ""
namaValidation := ""
if strings.TrimSpace(name) == "" {
formValidation = "Nama tidak boleh kosong"
namaValidation = "Nama tidak boleh kosong"
}
if formValidation != "" || namaValidation != "" {
nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: id,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: name,
ErrorMsg: namaValidation,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
Name: "nonlabtemplatefisik",
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
return utils.ViewMulti(c, []templ.Component{toast, nf})
}
var respAdd models.MDNonlabTemplate
var err error
if id != "" {
respAdd, err = nlt.MDNonlabTemplateServices.UpdateNonlabTemplate(id, name, flagFisik)
} else {
respAdd, err = nlt.MDNonlabTemplateServices.AddNonlabTemplate(name, flagFisik)
}
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Any("Error", err), zap.Any("nama", name), zap.Any("fisik", flagFisik))
nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: strconv.Itoa(int(respAdd.NonlabTemplateID)),
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: name,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
Name: "nonlabtemplatefisik",
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Error", err.Error(), "danger")
return utils.ViewMulti(c, []templ.Component{toast, nf})
}
logger.Info("ADD Nonlab Template", zap.Any("response", respAdd))
returnBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: strconv.Itoa(int(respAdd.NonlabTemplateID)),
},
models.CustomTextFieldv2Prm{
Label: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: name,
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: name,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
@@ -553,14 +730,256 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error {
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
return utils.View(c, dialogAddBody)
var msg string
if id != "" {
msg = "Success update data nonlab template "
} else {
msg = "Success insert data nonlab template "
}
toast := customtoastv2.CustomToastV2Show("Success", msg+name, "success")
return utils.ViewMulti(c, []templ.Component{toast, returnBody})
}
func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error {
logger, _ := zap.NewProduction()
dialogAddBodyID := c.FormValue("dialogAddBodyID")
dialogAddID := c.FormValue("dialogAddID")
searchID := c.FormValue("searchID")
paginationID := c.FormValue("paginationID")
id := c.FormValue("nonlabtemplateid")
template := c.FormValue("nonlabtemplatename")
fisik := c.FormValue("nonlabtemplatefisik")
kode := c.FormValue("nltdetailkode")
name := c.FormValue("nltdetailname")
if fisik == "Y" {
fisik = "on"
} else {
fisik = "off"
}
// default active
flagActive := "Y"
formValidation := ""
templateValidation := ""
kodeValidation := ""
namaValidation := ""
if strings.TrimSpace(id) == "" {
formValidation = "Simpan nama template dulu"
templateValidation = "Simpan nama template dulu"
}
if strings.TrimSpace(kode) == "" {
formValidation = "Kode tidak boleh kosong"
kodeValidation = "Kode tidak boleh kosong"
}
if strings.TrimSpace(name) == "" {
formValidation = "Nama tidak boleh kosong"
namaValidation = "Nama tidak boleh kosong"
}
if formValidation != "" || templateValidation != "" || kodeValidation != "" || namaValidation != "" {
nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: id,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: template,
ErrorMsg: templateValidation,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
Name: "nonlabtemplatefisik",
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
Value: kode,
ErrorMsg: kodeValidation,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
Value: name,
ErrorMsg: namaValidation,
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning")
return utils.ViewMulti(c, []templ.Component{toast, nf})
}
resp, err := nlt.MDNonlabTemplateServices.AddDetailNonlabTemplate(id, kode, name, flagActive)
if err != nil {
defer logger.Sync()
logger.Info("Error", zap.Any("Error", err), zap.Any("id", id), zap.Any("kode", kode), zap.Any("nama", name))
nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: id,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: template,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
Name: "nonlabtemplatefisik",
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
Value: kode,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
Value: name,
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Error", err.Error(), "danger")
return utils.ViewMulti(c, []templ.Component{toast, nf})
}
logger.Info("ADD Nonlab Template Detail", zap.Any("response", resp))
returnBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate(
dialogAddBodyID,
models.CustomTextFieldv2Prm{
Name: "nonlabtemplateid",
ID: "nonlabtemplateinputid",
Type: "hidden",
Value: id,
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Template",
Name: "nonlabtemplatename",
ID: "nonlabtemplateinputname",
Type: "text",
Value: template,
},
models.CustomCheckboxv1Prm{
Text: "Template Fisik",
Name: "nonlabtemplatefisik",
ID: "nonlabtemplateinputname",
Value: fisik,
},
models.CustomTextFieldv2Prm{
Placeholder: "Kode",
Name: "nltdetailkode",
ID: "nltdetailinputkode",
Type: "text",
},
models.CustomTextFieldv2Prm{
Placeholder: "Nama Detail",
Name: "nltdetailname",
ID: "nltdetailinputkode",
Type: "text",
},
dev_mdnonlabtemplateview.BtnSimpanNama(
"/dev/md/nonlabtemplate/simpanama",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.BtnAddDetail(
"/dev/md/nonlabtemplate/adddetail",
"#"+dialogAddBodyID,
"outerHTML",
"#"+dialogAddID,
"#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID,
),
dev_mdnonlabtemplateview.JSShowModal(""),
)
toast := customtoastv2.CustomToastV2Show("Success", "success insert detail "+name, "success")
return utils.ViewMulti(c, []templ.Component{toast, returnBody})
}

View File

@@ -289,6 +289,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.POST("/md/nonlabtemplate/delete", devMDNonlabTemplateHandlers.HandleDelete)
dev.POST("/md/nonlabtemplate/simpanama", devMDNonlabTemplateHandlers.HandleSimpanNama)
dev.POST("/md/nonlabtemplate/closeaddform", devMDNonlabTemplateHandlers.HandleCloseFormAdd)
dev.POST("/md/nonlabtemplate/adddetail", devMDNonlabTemplateHandlers.HandleAddDetail)
// masterdata nat unit
devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore)