diff --git a/handlers/dev/kesimpulan.handlers.go b/handlers/dev/kesimpulan.handlers.go index 781cd66..aa30944 100644 --- a/handlers/dev/kesimpulan.handlers.go +++ b/handlers/dev/kesimpulan.handlers.go @@ -12,6 +12,7 @@ import ( type KesimpulanService interface { GetListKesimpulanLab(id string) ([]models.ModelKesimpulanLab, error) + GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) } func NewKesimpulanHandler(us KesimpulanService) *KesimpulanHandler { @@ -28,6 +29,7 @@ func (h *KesimpulanHandler) HandleShowKesimpulanScreen(c echo.Context) error { logger, _ := zap.NewProduction() tableID := utils.GenerateRandomID("tablebody") + tableIDNonLab := utils.GenerateRandomID("tablebody") id := c.Param("id") // table component @@ -46,8 +48,25 @@ func (h *KesimpulanHandler) HandleShowKesimpulanScreen(c echo.Context) error { tableComponentLab := dev_kesimpulan.CardTableKesimpulan("3 Kelainan Pemeriksaan Lab terbesar :", dataLab, tableID) + // table component non lab + dataNonLab, err := h.KesimpulanService.GetListKesimpulanNonLab(id) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET LIST NON LAB", + zap.Any("error", err), + ) + fmt.Println(dataNonLab) + return err + } + + logger.Info("CEK DATA", + zap.Any("data lab", dataNonLab)) + tableComponentNonLab := dev_kesimpulan.CardTableKesimpulanNonLab("3 Kelainan Pemeriksaan Non Lab terbesar :", dataNonLab, tableIDNonLab) + content := dev_kesimpulan.MainKesimpulan(tableID, - tableComponentLab) + tableIDNonLab, + tableComponentLab, + tableComponentNonLab) view := dev_kesimpulan.ShowKesimpulan("KESIMPULAN", content, dev_kesimpulan.CssKesimpulan(), dev_kesimpulan.JsKesimpulan()) return utils.View(c, view) diff --git a/services/dev/kesimpulan.services.go b/services/dev/kesimpulan.services.go index c8abfd8..b4c6e80 100644 --- a/services/dev/kesimpulan.services.go +++ b/services/dev/kesimpulan.services.go @@ -90,3 +90,75 @@ func (k *KesimpulanServices) GetListKesimpulanLab(id string) ([]models.ModelKesi ) return listLab, nil } + +func (k *KesimpulanServices) GetListKesimpulanNonLab(id string) ([]models.ModelKesimpulanLab, error) { + logger, _ := zap.NewProduction() + var listNonLab []models.ModelKesimpulanLab + var dataTot []models.ModelKesimpulanLab + + qryTot := `select '' as nomor, + '' as Test, sum(total) as total + from( + select count(*) as total + FROM mgm_header + join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y' + join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID + left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode + + where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL' + and Mgm_HeaderIsNormal = 'N' + group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ) x` + + err := dbx.Handlex.Select(&dataTot, qryTot, id) + if err != nil { + defer logger.Sync() + logger.Error("Error get total", + zap.Any("id", id), + zap.Any("total data", dataTot), + ) + // return dataTot, fmt.Errorf("QUERY_FAILED") + } + + // Extracting the Total value + var totalLab string + if len(dataTot) > 0 { + totalLab = dataTot[0].Total + } + + logger.Info("data", + zap.Any("id", id), + zap.Any("cek total", totalLab), + ) + query := `SELECT ROW_NUMBER() OVER () AS nomor, + ifnull(Nat_TestName ,Mcu_KelainanGroupName) as Test, + cast(count(Mgm_HeaderT_OrderHeaderID)/?*100 as decimal(2,0)) as total + + FROM mgm_header + join mgm_detail on Mgm_DetailMgm_HeaderID = Mgm_HeaderID and Mgm_DetailIsActive = 'Y' + join mcu_kelainan on Mgm_DetailMcu_KelainanID = Mcu_KelainanID + join mcu_kelainangroup on Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID + left join nat_test on Nat_TestCode = Mgm_HeaderNat_TestCode + + where Mgm_HeaderIsActive = 'Y' and Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderType = 'NL' + and Mgm_HeaderIsNormal = 'N' + group by Mgm_DetailMcu_KelainanID, Mgm_HeaderType ORDER BY count(Mgm_HeaderT_OrderHeaderID) DESC + LIMIT 3` + + err = dbx.Handlex.Select(&listNonLab, query, totalLab, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error get data NON lab", + zap.Any("id", id), + zap.Any("list data", listNonLab), + ) + return listNonLab, fmt.Errorf("QUERY_FAILED") + } + + logger.Info("data", + zap.Any("id", id), + zap.Any("cekkkk", listNonLab), + ) + return listNonLab, nil +} diff --git a/views/dev/kesimpulan/kesimpulan.templ b/views/dev/kesimpulan/kesimpulan.templ index fdc2bec..1a6566a 100644 --- a/views/dev/kesimpulan/kesimpulan.templ +++ b/views/dev/kesimpulan/kesimpulan.templ @@ -8,17 +8,24 @@ import ( templ MainKesimpulan( tableID string, + tableIDNonLab string, tablecontent templ.Component, + tablecontentnonlab templ.Component, ) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", Name: "tableID", - Type: "text", + Type: "hidden", Value: tableID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableIDNonLab", + Name: "tableIDNonLab", + Type: "hidden", + Value: tableIDNonLab})

Kesimpulan

@tablecontent + @tablecontentnonlab
} diff --git a/views/dev/kesimpulan/kesimpulan_templ.go b/views/dev/kesimpulan/kesimpulan_templ.go index 061cf7f..057d393 100644 --- a/views/dev/kesimpulan/kesimpulan_templ.go +++ b/views/dev/kesimpulan/kesimpulan_templ.go @@ -18,7 +18,9 @@ import ( func MainKesimpulan( tableID string, + tableIDNonLab string, tablecontent templ.Component, + tablecontentnonlab templ.Component, ) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) @@ -38,11 +40,18 @@ func MainKesimpulan( } templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", Name: "tableID", - Type: "text", + Type: "hidden", Value: tableID}).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableIDNonLab", + Name: "tableIDNonLab", + Type: "hidden", + Value: tableIDNonLab}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Kesimpulan

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -51,6 +60,10 @@ func MainKesimpulan( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = tablecontentnonlab.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err diff --git a/views/dev/kesimpulan/tablekesimpulannonlab.templ b/views/dev/kesimpulan/tablekesimpulannonlab.templ new file mode 100644 index 0000000..ad593fa --- /dev/null +++ b/views/dev/kesimpulan/tablekesimpulannonlab.templ @@ -0,0 +1,46 @@ +package dev_kesimpulan + +import ( + "cpone/component/table" + "cpone/models" +) + +templ CardTableKesimpulanNonLab(title string, data []models.ModelKesimpulanLab, tableIDNonLab string) { +
+
+

+ { title } +

+
+
+
+ @TableKesimpulanNonLab(data, tableIDNonLab) +
+
+
+} + +templ TableKesimpulanNonLab(data []models.ModelKesimpulanLab, + tableIDNonLab string) { +
+ @tablecomponent.TableV3([]string{"NO", "PEMERIKSAAN", "PERSENTASE"}, + []string{"5%", "70%", "25%"}, + RowKesimpulanNonLab(data), + ) +
+} + +templ RowKesimpulanNonLab(data []models.ModelKesimpulanLab) { + if len(data) == 0 { + + Data Tidak Ditemukan + + } + for _, v := range data { + + { v.Nomor } + { v.Test } + { v.Total } % + + } +} diff --git a/views/dev/kesimpulan/tablekesimpulannonlab_templ.go b/views/dev/kesimpulan/tablekesimpulannonlab_templ.go new file mode 100644 index 0000000..d758f7a --- /dev/null +++ b/views/dev/kesimpulan/tablekesimpulannonlab_templ.go @@ -0,0 +1,181 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.663 +package dev_kesimpulan + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import ( + "cpone/component/table" + "cpone/models" +) + +func CardTableKesimpulanNonLab(title string, data []models.ModelKesimpulanLab, tableIDNonLab string) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\kesimpulan\tablekesimpulannonlab.templ`, Line: 12, Col: 11} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = TableKesimpulanNonLab(data, tableIDNonLab).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func TableKesimpulanNonLab(data []models.ModelKesimpulanLab, + tableIDNonLab string) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var3 := templ.GetChildren(ctx) + if templ_7745c5c3_Var3 == nil { + templ_7745c5c3_Var3 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NO", "PEMERIKSAAN", "PERSENTASE"}, + []string{"5%", "70%", "25%"}, + RowKesimpulanNonLab(data), + ).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func RowKesimpulanNonLab(data []models.ModelKesimpulanLab) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var5 := templ.GetChildren(ctx) + if templ_7745c5c3_Var5 == nil { + templ_7745c5c3_Var5 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + if len(data) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Data Tidak Ditemukan") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + for _, v := range data { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(v.Nomor) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\kesimpulan\tablekesimpulannonlab.templ`, Line: 41, Col: 16} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(v.Test) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\kesimpulan\tablekesimpulannonlab.templ`, Line: 42, Col: 15} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(v.Total) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\kesimpulan\tablekesimpulannonlab.templ`, Line: 43, Col: 16} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" %") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +}