package kpi_c_title import ( "net/http" "strings" "be.ems/lib/services" "be.ems/src/framework/datasource" "github.com/gin-gonic/gin" ) func (k *KpiCTitle) GetToalList(c *gin.Context) { var titles []KpiCTitle var conditions []string var params []any // construct condition to get if neType := c.Query("neType"); neType != "" { conditions = append(conditions, "ne_type = ?") params = append(params, strings.ToUpper(neType)) } if status := c.Query("status"); status != "" { conditions = append(conditions, "status = ?") params = append(params, status) } whereSql := "" if len(conditions) > 0 { whereSql += strings.Join(conditions, " and ") } if err := datasource.DefaultDB().Where(whereSql, params...).Find(&titles).Error; err != nil { c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) return } var total int64 = 0 if err := datasource.DefaultDB().Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil { c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) return } c.JSON(http.StatusOK, services.TotalDataResp(titles, total)) //c.JSON(http.StatusOK, titles) } func (k *KpiCTitle) Get(c *gin.Context) { var titles []KpiCTitle var conditions []string var params []any // construct condition to get if neType := c.Query("neType"); neType != "" { conditions = append(conditions, "ne_type = ?") params = append(params, strings.ToUpper(neType)) } if status := c.Query("status"); status != "" { conditions = append(conditions, "status = ?") params = append(params, status) } whereSql := "" if len(conditions) > 0 { whereSql += strings.Join(conditions, " and ") } if err := datasource.DefaultDB().Where(whereSql, params...).Find(&titles).Error; err != nil { c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) return } c.JSON(http.StatusOK, services.DataResp(titles)) //c.JSON(http.StatusOK, titles) } func (k *KpiCTitle) Total(c *gin.Context) { var conditions []string var params []any // construct condition to get if neType := c.Query("neType"); neType != "" { conditions = append(conditions, "ne_type = ?") params = append(params, strings.ToUpper(neType)) } if status := c.Query("status"); status != "" { conditions = append(conditions, "status = ?") params = append(params, status) } whereSql := "" if len(conditions) > 0 { whereSql += strings.Join(conditions, " and ") } var total int64 = 0 if err := datasource.DefaultDB().Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil { c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) return } c.JSON(http.StatusOK, services.TotalResp(total)) } func (k *KpiCTitle) Post(c *gin.Context) { var title KpiCTitle if err := c.ShouldBindJSON(&title); err != nil { c.JSON(http.StatusBadRequest, services.ErrResp(err.Error())) return } if err := datasource.DefaultDB().Create(&title).Error; err != nil { c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error())) return } c.JSON(http.StatusCreated, services.DataResp(title)) } func (k *KpiCTitle) Put(c *gin.Context) { var title KpiCTitle id := c.Param("id") if err := datasource.DefaultDB().First(&title, id).Error; err != nil { c.JSON(http.StatusNotFound, services.ErrResp("Title not found")) return } if err := c.ShouldBindJSON(&title); err != nil { c.JSON(http.StatusBadRequest, services.ErrResp(err.Error())) return } datasource.DefaultDB().Save(&title) c.JSON(http.StatusOK, title) } func (k *KpiCTitle) Delete(c *gin.Context) { id := c.Param("id") if err := datasource.DefaultDB().Delete(&KpiCTitle{}, id).Error; err != nil { c.JSON(http.StatusNotFound, services.ErrResp("Title not found")) return } c.JSON(http.StatusNoContent, nil) // 204 No Content } func GetActiveKPICList(neType string) []KpiCTitle { k := new([]KpiCTitle) err := datasource.DefaultDB().Where("`ne_type` = ? and `status` = 'Active'", neType).Find(&k).Error if err != nil { return nil } return *k }