Files
api-tes/pkg/handlers/retribusi/retribusi.go
2025-08-13 13:58:55 +07:00

206 lines
6.4 KiB
Go

package retribusi
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"log"
"net/http"
"template_blueprint/internal/database"
//_ "template_blueprint/cmd/api/docs"
//_ "template_blueprint/docs"
//_ "template_blueprint/docs"
//_ "template_blueprint/internal/docs"
connDatabase "template_blueprint/pkg/database/satu_data"
"template_blueprint/pkg/models/satu_data"
"time"
)
// GetDataRetribusi return list of all retribution from the database
// @Summary all retribution
// @Description return list of all retribution from the database
// @Param limit path string true "limit"
// @Param offset path string true "offset"
// @Tags Retribusi
// @Success 200 {object} satu_data.Retribusi
// @Router /retribusi/getData/Limit/{limit}/Offset/{offset} [get]
func GetDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
limit := c.Param("limit")
offset := c.Param("offset")
log.Println("limit:", limit, ",offset:", offset)
dataRetribusi, err := satudata.GetRetribusi(limit, offset)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
return
}
if len(dataRetribusi) == 0 {
//log.Println("data retribusi tidak ditemukan")
c.JSON(http.StatusNotFound, gin.H{"message": "data retribusi tidak ditemukan"})
return
}
c.JSON(http.StatusOK, dataRetribusi)
}
// InsertRetribution godoc
// @Summary Create retribution
// @Description Save retribution data in DB
// @Param data body satu_data.Retribusi true "data Retribusi"
// @Produce application/json
// @Tags Retribusi
// @Success 200 {object} map[string]string "Data Berhasil disimpan"
// @Router /retribusi/insertretribusi [post]
func InsertRetribution(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
var request *satu_data.Retribusi
err := c.Bind(&request)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
ID := uuid.New().String()
timeNow := time.Now().Format("2006-01-02 15:04:05")
reqInsert := &satu_data.Retribusi{
ID: ID,
Status: request.Status,
Sort: request.Sort,
UserCreated: request.UserCreated,
DateCreated: timeNow,
Jenis: request.Jenis,
Pelayanan: request.Pelayanan,
Dinas: request.Dinas,
KelompokObyek: request.KelompokObyek,
KodeTarif: request.KodeTarif,
Tarif: request.Tarif,
Satuan: request.Satuan,
TarifOverTime: request.TarifOverTime,
SatuanOverTime: request.SatuanOverTime,
RekeningPokok: request.RekeningPokok,
RekeningDenda: request.RekeningDenda,
Uraian1: request.Uraian1,
Uraian2: request.Uraian2,
Uraian3: request.Uraian3,
}
//log.Println("request:", request)
//fmt.Println(reflect.TypeOf(reqInsert))
errInsertData := satudata.InsertRetribusi(reqInsert)
if errInsertData != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": errInsertData.Error()})
return
}
c.JSON(http.StatusCreated, gin.H{"message": "Data Berhasil disimpan"})
}
// UpdateRetribution godoc
// @Summary Update retribution
// @Description Change retribution data in DB
// @Param data body satu_data.Retribusi true "data Retribusi"
// @Produce application/json
// @Tags Retribusi
// @Success 200 {object} map[string]string "Data Berhasil Diubah"
// @Router /retribusi/updateretribusi [put]
func UpdateRetribution(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
var request *satu_data.Retribusi
err := c.Bind(&request)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
timeNow := time.Now().Format("2006-01-02 15:04:05")
reqUpdate := &satu_data.Retribusi{
ID: request.ID,
Status: request.Status,
Sort: request.Sort,
UserUpdated: request.UserUpdated,
DateUpdated: timeNow,
Jenis: request.Jenis,
Pelayanan: request.Pelayanan,
Dinas: request.Dinas,
KelompokObyek: request.KelompokObyek,
KodeTarif: request.KodeTarif,
Tarif: request.Tarif,
Satuan: request.Satuan,
TarifOverTime: request.TarifOverTime,
SatuanOverTime: request.SatuanOverTime,
RekeningPokok: request.RekeningPokok,
RekeningDenda: request.RekeningDenda,
Uraian1: request.Uraian1,
Uraian2: request.Uraian2,
Uraian3: request.Uraian3,
}
errUpdateData := satudata.UpdateRetribusi(reqUpdate)
if errUpdateData != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": errUpdateData.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Data Berhasil Diubah", "data": reqUpdate})
}
// DeleteDataRetribusi godoc
// @Summary Delete retribution
// @Description Remove retribution data by id
// @Param ID path string true "ID"
// @Produce application/json
// @Tags Retribusi
// @Success 200 {object} map[string]string "Data Berhasil dihapus"
// @Router /retribusi/deleteretribusi/{ID} [delete]
func DeleteDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
//var request *satu_data.Retribusi
ID := c.Param("id")
//err := c.Bind(&request)
//if err != nil {
// c.JSON(http.StatusInternalServerError, gin.H{"message": err.Error})
// return
//}
errDelete := satudata.DeleteRetribusi(ID)
if errDelete != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": error.Error})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Data Berhasil dihapus"})
}
// SearchDataRetribusi godoc
// @Summary Search retribution
// @Description search retribution data by id
// @Param Kelompok_obyek path string true "Kelompok_obyek"
// @Produce application/json
// @Tags Retribusi
// @Success 200 {object} satu_data.Retribusi
// @Router /retribusi/searchData/{kelompok_obyek} [get]
func SearchDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
Kelompok_obyek := c.Param("kelompok_obyek")
//log.Println("Kelompok_obyek :", Kelompok_obyek)
dataRetribusi, err := satudata.SearchRetribusi(Kelompok_obyek)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
if len(dataRetribusi) == 0 {
//log.Println("data retribusi tidak ditemukan")
c.JSON(http.StatusNotFound, gin.H{"message": "data retribusi tidak ditemukan"})
return
}
c.JSON(http.StatusOK, dataRetribusi)
}