From 6cbd9c8a85a6203497daef8134216e123a55b992 Mon Sep 17 00:00:00 2001 From: ahdan15 Date: Thu, 19 Jun 2025 12:53:42 +0700 Subject: [PATCH] perbaiikan api --- Dockerfile | 10 ++-- go.sum | 1 + internal/server/routes.go | 5 +- pkg/database/simrs/data_retribusi.go | 46 +++++++++++++++-- pkg/handlers/data_retribusi/data_retribusi.go | 51 +++++++++++++++++-- 5 files changed, 98 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2cb3b61..fc5faff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,12 @@ FROM golang:1.23-alpine AS builder -# Set timezone ke Asia/Jakarta -ENV TZ=Asia/Jakarta - WORKDIR /app -COPY go.mod go.sum ./ - -RUN go mod tidy +COPY go.mod ./ +COPY go.sum ./ +RUN go mod download COPY . . - RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/api # RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . diff --git a/go.sum b/go.sum index 80b5b5a..aacb48d 100644 --- a/go.sum +++ b/go.sum @@ -237,6 +237,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/internal/server/routes.go b/internal/server/routes.go index 41a6d50..352b328 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -36,8 +36,9 @@ func (s *Server) RegisterRoutes() http.Handler { admin.POST("/delete", dataretribusiHandler.DeleteDataRetribusi) } - data_retribusi.GET("/getdataall/Limit/:limit/Offset/:offset", dataretribusiHandler.GetAllDataRetribusi) - data_retribusi.GET("/getdata/Kodetarif/:kodetarif/Limit/:limit/Offset/:offset", dataretribusiHandler.Dataretribusiget) + data_retribusi.GET("/getdata/Limit/:limit/Offset/:offset", dataretribusiHandler.GetAllDataRetribusi) + data_retribusi.GET("/kodetarif/:kodetarif", dataretribusiHandler.Dataretribusiget) + data_retribusi.GET("/kelompokobyek/:kelompok", dataretribusiHandler.DataretribusigetbyKel) } return r diff --git a/pkg/database/simrs/data_retribusi.go b/pkg/database/simrs/data_retribusi.go index 28f1b52..03b78c4 100644 --- a/pkg/database/simrs/data_retribusi.go +++ b/pkg/database/simrs/data_retribusi.go @@ -51,10 +51,10 @@ func (s *DatabaseService) GetAlldataretribusi(Limit, Offset string) ([]*satudata } /* *todo get data by kode tarif*/ -func (s *DatabaseService) Getdataretribusi(Kodetarif, Limit, Offset string) ([]*satudata_models.DataRetribusiGet, error) { +func (s *DatabaseService) Getdataretribusi(Kodetarif string) ([]*satudata_models.DataRetribusiGet, error) { var dataretribusi []*satudata.DataRetribusiGet - query := `select * from data_retribusi where "Kode_tarif" = ? LIMIT ? Offset ? ` - errQuery := s.DB.Debug().Raw(query, Kodetarif, Limit, Offset).Scan(&dataretribusi).Error + query := `select * from data_retribusi where "Kode_tarif" = ? ` + errQuery := s.DB.Debug().Raw(query, Kodetarif).Scan(&dataretribusi).Error if errQuery != nil { if errors.Is(errQuery, gorm.ErrRecordNotFound) { errMsg := errors.New("Data Tidak Ditemukan") @@ -67,6 +67,46 @@ func (s *DatabaseService) Getdataretribusi(Kodetarif, Limit, Offset string) ([]* return dataretribusi, nil } +/* *todo get data by kelompok obyek*/ +func (s *DatabaseService) GetdataretribusibyKelompok(kel string) ([]*satudata_models.DataRetribusiGet, error) { + var dataretribusi []*satudata.DataRetribusiGet + query := `select * from data_retribusi where "Kelompok_obyek" = ? ` + errQuery := s.DB.Debug().Raw(query, kel).Scan(&dataretribusi).Error + if errQuery != nil { + if errors.Is(errQuery, gorm.ErrRecordNotFound) { + errMsg := errors.New("Data Tidak Ditemukan") + log.Println(errMsg) + return nil, errMsg + } + log.Println(errQuery) + return nil, errQuery + } + return dataretribusi, nil +} + +/* *todo get data kelompok obyek*/ +func (s *DatabaseService) Validasikelompok(kel string) (bool, error) { + var count int + query := `SELECT COUNT(DISTINCT "Kelompok_obyek") FROM data_retribusi WHERE "Kelompok_obyek" = ?` + errQuery := s.DB.Debug().Raw(query, kel).Scan(&count).Error + if errQuery != nil { + log.Println(errQuery) + return false, errQuery + } + return count > 0, nil +} + +func (s *DatabaseService) Validasikode(kodetarif string) (bool, error) { + var count int + query := `SELECT COUNT(DISTINCT "Kode_tarif") FROM data_retribusi WHERE "Kode_tarif" = ?` + errQuery := s.DB.Debug().Raw(query, kodetarif).Scan(&count).Error + if errQuery != nil { + log.Println(errQuery) + return false, errQuery + } + return count > 0, nil +} + func (s *DatabaseService) Putdataretribusi(req *satudata_models.DataRetribusiPut) error { query := ` update data_retribusi set "status" = ?,"Jenis"=?,"Pelayanan" = ?,"Dinas"=?,"Kelompok_obyek"=? ,"Kode_tarif"=? ,"Uraian_1"=? ,"Uraian_2"=? ,"Uraian_3"=? ,"Tarif"=? ,"Satuan"=?,"Tarif_overtime"=?,"Satuan_overtime"=? ,"Rekening_pokok"=? ,"Rekening_denda"=? where "id" = ? ` errUpdate := s.DB.Debug().Exec(query, diff --git a/pkg/handlers/data_retribusi/data_retribusi.go b/pkg/handlers/data_retribusi/data_retribusi.go index 61cde18..e3a4742 100644 --- a/pkg/handlers/data_retribusi/data_retribusi.go +++ b/pkg/handlers/data_retribusi/data_retribusi.go @@ -53,16 +53,61 @@ func GetAllDataRetribusi(c *gin.Context) { } c.JSON(http.StatusOK, dataallretribusi) } +func DataretribusigetbyKel(c *gin.Context) { + db := database.New().GetDB("satudata") + satudata := connDatabase.NewDatabaseService(db) + kel := c.Param("kelompok") + + log.Println("REQUEST", kel) + + validasi, err := satudata.Validasikelompok(kel) + if err != nil { + log.Println("Error validating kelompok_obyek:", err) + c.JSON(http.StatusInternalServerError, gin.H{ + "message": "Failed to validate kelompok_obyek", + }) + return + } + if !validasi { + c.JSON(http.StatusBadRequest, gin.H{ + "message": "Tidak di Temukan Kelompok Obyek", + }) + return + } + + dataRetribusi, errData := satudata.GetdataretribusibyKelompok(kel) + if errData != nil { + log.Println(errData) + c.JSON(http.StatusBadRequest, gin.H{ + "message": errData.Error(), + }) + return + } + c.JSON(http.StatusOK, dataRetribusi) +} func Dataretribusiget(c *gin.Context) { db := database.New().GetDB("satudata") satudata := connDatabase.NewDatabaseService(db) kodetarif := c.Param("kodetarif") - limit := c.Param("limit") - offset := c.Param("offset") log.Println("REQUEST", kodetarif) - dataRetribusi, errData := satudata.Getdataretribusi(kodetarif, limit, offset) + validasi, err := satudata.Validasikode(kodetarif) + if err != nil { + log.Println("Error validating kodetarif:", err) + c.JSON(http.StatusInternalServerError, gin.H{ + "message": "Failed to validate kodetarif", + }) + return + } + if !validasi { + c.JSON(http.StatusBadRequest, gin.H{ + "message": "Tidak di Temukan Kode Tarif", + }) + return + } + + dataRetribusi, errData := satudata.Getdataretribusi(kodetarif) if errData != nil { log.Println(errData) c.JSON(http.StatusBadRequest, gin.H{