243 lines
7.1 KiB
Go
243 lines
7.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"kemendagri/sipd/services/master-sipd/controllers"
|
|
"log"
|
|
"strconv"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type SubKegiatanHandler struct {
|
|
Controller *controllers.SubKegiatanController
|
|
Validate *validator.Validate
|
|
}
|
|
|
|
func NewSubKegiatanHandler(app *fiber.App, vld *validator.Validate, controller *controllers.SubKegiatanController) {
|
|
handler := &SubKegiatanHandler{
|
|
Controller: controller,
|
|
Validate: vld,
|
|
}
|
|
|
|
// public route
|
|
rpub := app.Group("/subkegiatan")
|
|
rpub.Get("/", handler.Index)
|
|
rpub.Get("/:id/:tahun", handler.View)
|
|
// rpub.Post("/", handler.Create)
|
|
// rpub.Put("/:id", handler.Update)
|
|
// rpub.Delete("/:id", handler.Delete)
|
|
}
|
|
|
|
// Index func for get lists of Sub Kegiatan.
|
|
//
|
|
// @Summary get lists of Sub Kegiatan
|
|
// @Description get lists of Sub Kegiatan
|
|
// @Tags Master Sub Kegiatan
|
|
// @Accept json
|
|
// @Param page query int false "Halaman yang ditampilkan"
|
|
// @Param limit query int false "Jumlah data per halaman, maksimal 50 data"
|
|
// @param filter query string false "Key value pencarian ([kode_sub_kegiatan,nama_sub_kegiatan,tahun,daerah_khusus,jenis_pemda]). Contoh: kode_sub_kegiatan.1.01.02.1.01.01 -> (akan menampilkan data dengan kode sub kegiatan = '1.01.02.1.01.01')"
|
|
// @Produce json
|
|
// @success 200 {array} models.MstSubKegiatanModel "Success"
|
|
// @Failure 400 {object} utils.RequestError "Bad request"
|
|
// @Failure 401 {object} utils.RequestError "Unauthorized"
|
|
// @Failure 404 {object} utils.RequestError "Not found"
|
|
// @Failure 422 {array} utils.RequestError "Data validation failed"
|
|
// @Failure 500 {object} utils.RequestError "Server error"
|
|
// @Router /subkegiatan [get]
|
|
func (h *SubKegiatanHandler) Index(c *fiber.Ctx) error {
|
|
|
|
page, err := strconv.Atoi(c.Query("page", "1"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log.Println("page: ", page)
|
|
|
|
var limit int
|
|
limit, err = strconv.Atoi(c.Query("limit", "20"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log.Println("page: ", page)
|
|
|
|
//limit max 50
|
|
if limit > 50 {
|
|
limit = 50
|
|
}
|
|
|
|
resp, totalCount, pageCount, err := h.Controller.Index(page, limit, c.Query("filter", ""))
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Printf("totalCount: %d, perPage: %d, pageCount: %d\n", totalCount, limit, pageCount)
|
|
|
|
c.Append("x-pagination-total-count", strconv.Itoa(totalCount))
|
|
c.Append("x-pagination-page-count", strconv.Itoa(pageCount))
|
|
c.Append("x-pagination-page-size", strconv.Itoa(limit))
|
|
if page > 1 {
|
|
c.Append("x-pagination-previous-page", strconv.Itoa(page-1))
|
|
}
|
|
c.Append("x-pagination-current-page", strconv.Itoa(page))
|
|
if page < pageCount {
|
|
c.Append("x-pagination-next-page", strconv.Itoa(page+1))
|
|
}
|
|
|
|
return c.JSON(resp)
|
|
|
|
}
|
|
|
|
// Index func for get detail of Sub Kegiatan.
|
|
//
|
|
// @Summary get detail of Sub Kegiatan
|
|
// @Description get detail of Sub Kegiatan
|
|
// @Tags Master Sub Kegiatan
|
|
// @Accept json
|
|
// @Param id path int false "data yang dipilih berdasarkan id sub kegiatan"
|
|
// @Param tahun path int false "data yang dipilih berdasarkan tahun"
|
|
// @Produce json
|
|
// @success 200 {object} models.MstSubKegiatanDetilModel "Success"
|
|
// @Failure 400 {object} utils.RequestError "Bad request"
|
|
// @Failure 401 {object} utils.RequestError "Unauthorized"
|
|
// @Failure 404 {object} utils.RequestError "Not found"
|
|
// @Failure 422 {array} utils.RequestError "Data validation failed"
|
|
// @Failure 500 {object} utils.RequestError "Server error"
|
|
// @Router /subkegiatan/{id}/{tahun} [get]
|
|
func (h *SubKegiatanHandler) View(c *fiber.Ctx) error {
|
|
id, err := c.ParamsInt("id", 0)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
tahun, err := c.ParamsInt("tahun", 0)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
resp, err := h.Controller.View(id, tahun)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.JSON(resp)
|
|
}
|
|
|
|
// // Create func for create new daerah.
|
|
// //
|
|
// // @Summary create new daerah
|
|
// // @Description create new daerah.
|
|
// // @Tags Ref Daerah
|
|
// // @Accept json
|
|
// // @Param payload body models.RefDaerahModelPayload true "Payload"
|
|
// // @Produce json
|
|
// // @success 200 {object} bool "Create success"
|
|
// // @Failure 400 {object} utils.RequestError "Bad request"
|
|
// // @Failure 401 {object} utils.RequestError "Unauthorized"
|
|
// // @Failure 404 {object} utils.RequestError "Not found"
|
|
// // @Failure 422 {array} utils.DataValidationError "Data validation failed"
|
|
// // @Failure 500 {object} utils.RequestError "Server error"
|
|
// // @Security ApiKeyAuth
|
|
// // @Router /daerah [post]
|
|
// func (h *DaerahHandler) Create(c *fiber.Ctx) error {
|
|
// // siapkan penampung payload dari fe
|
|
// payloadl := new(models.RefDaerahModelPayload)
|
|
|
|
// // baca kiriman dari fe
|
|
// err := c.BodyParser(payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// // Validate form input
|
|
// err = h.Validate.Struct(payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// err = h.Controller.Create(*payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// return c.JSON("true")
|
|
// }
|
|
|
|
// // Create func for update daerah.
|
|
// //
|
|
// // @Summary update daerah
|
|
// // @Description update daerah.
|
|
// // @Tags Ref Daerah
|
|
// // @Accept json
|
|
// // @Param id path int false "data yang dipilih untuk diubah berdasarkan id daerah"
|
|
// // @Param payload body models.RefDaerahModelPayload true "Payload"
|
|
// // @Produce json
|
|
// // @success 200 {object} bool "Update success"
|
|
// // @Failure 400 {object} utils.RequestError "Bad request"
|
|
// // @Failure 401 {object} utils.RequestError "Unauthorized"
|
|
// // @Failure 404 {object} utils.RequestError "Not found"
|
|
// // @Failure 422 {array} utils.DataValidationError "Data validation failed"
|
|
// // @Failure 500 {object} utils.RequestError "Server error"
|
|
// // @Security ApiKeyAuth
|
|
// // @Router /daerah/{id} [put]
|
|
// func (h *DaerahHandler) Update(c *fiber.Ctx) error {
|
|
// id, err := c.ParamsInt("id", 0)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// // siapkan penampung payload dari fe
|
|
// payloadl := new(models.RefDaerahModelPayload)
|
|
|
|
// // baca kiriman dari fe
|
|
// err = c.BodyParser(payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// // Validate form input
|
|
// err = h.Validate.Struct(payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// err = h.Controller.Update(id, *payloadl)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// return c.JSON("true")
|
|
// }
|
|
|
|
// // Create func for delete daerah.
|
|
// //
|
|
// // @Summary delete daerah
|
|
// // @Description delete daerah.
|
|
// // @Tags Ref Daerah
|
|
// // @Accept json
|
|
// // @Param id path int false "data yang dipilih untuk dihapus berdasarkan id daerah"
|
|
// // @Produce json
|
|
// // @success 200 {object} bool "Delete success"
|
|
// // @Failure 400 {object} utils.RequestError "Bad request"
|
|
// // @Failure 401 {object} utils.RequestError "Unauthorized"
|
|
// // @Failure 404 {object} utils.RequestError "Not found"
|
|
// // @Failure 422 {array} utils.DataValidationError "Data validation failed"
|
|
// // @Failure 500 {object} utils.RequestError "Server error"
|
|
// // @Security ApiKeyAuth
|
|
// // @Router /daerah/{id} [delete]
|
|
// func (h *DaerahHandler) Delete(c *fiber.Ctx) error {
|
|
// id, err := c.ParamsInt("id", 0)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// err = h.Controller.Delete(id)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// return c.JSON("true")
|
|
// }
|