149 lines
4.3 KiB
Go
149 lines
4.3 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/pahmiudahgede/senggoldong/internal/services"
|
|
"github.com/pahmiudahgede/senggoldong/utils"
|
|
)
|
|
|
|
type WilayahIndonesiaHandler struct {
|
|
WilayahService services.WilayahIndonesiaService
|
|
}
|
|
|
|
func NewWilayahImportHandler(wilayahService services.WilayahIndonesiaService) *WilayahIndonesiaHandler {
|
|
return &WilayahIndonesiaHandler{WilayahService: wilayahService}
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) ImportWilayahData(c *fiber.Ctx) error {
|
|
|
|
err := h.WilayahService.ImportDataFromCSV()
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusInternalServerError, err.Error())
|
|
}
|
|
|
|
return utils.GenericErrorResponse(c, fiber.StatusCreated, "Data imported successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetAllProvinces(c *fiber.Ctx) error {
|
|
page, err := strconv.Atoi(c.Query("page", "1"))
|
|
if err != nil {
|
|
page = 1
|
|
}
|
|
|
|
limit, err := strconv.Atoi(c.Query("limit", "10"))
|
|
if err != nil {
|
|
limit = 10
|
|
}
|
|
|
|
provinces, err := h.WilayahService.GetAllProvinces(page, limit)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusInternalServerError, fmt.Sprintf("Failed to fetch provinces: %v", err))
|
|
}
|
|
|
|
return utils.PaginatedResponse(c, provinces, page, limit, len(provinces), "Provinces fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetProvinceByID(c *fiber.Ctx) error {
|
|
provinceID := c.Params("id")
|
|
|
|
province, err := h.WilayahService.GetProvinceByID(provinceID)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusNotFound, fmt.Sprintf("Province not found: %v", err))
|
|
}
|
|
|
|
return utils.LogResponse(c, province, "Province fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetAllRegencies(c *fiber.Ctx) error {
|
|
page, err := strconv.Atoi(c.Query("page", "1"))
|
|
if err != nil {
|
|
page = 1
|
|
}
|
|
|
|
limit, err := strconv.Atoi(c.Query("limit", "10"))
|
|
if err != nil {
|
|
limit = 10
|
|
}
|
|
|
|
regencies, err := h.WilayahService.GetAllRegencies(page, limit)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusInternalServerError, fmt.Sprintf("Failed to fetch regencies: %v", err))
|
|
}
|
|
|
|
return utils.PaginatedResponse(c, regencies, page, limit, len(regencies), "Regencies fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetRegencyByID(c *fiber.Ctx) error {
|
|
regencyID := c.Params("id")
|
|
|
|
regency, err := h.WilayahService.GetRegencyByID(regencyID)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusNotFound, fmt.Sprintf("Regency not found: %v", err))
|
|
}
|
|
|
|
return utils.LogResponse(c, regency, "Regency fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetAllDistricts(c *fiber.Ctx) error {
|
|
page, err := strconv.Atoi(c.Query("page", "1"))
|
|
if err != nil {
|
|
page = 1
|
|
}
|
|
|
|
limit, err := strconv.Atoi(c.Query("limit", "10"))
|
|
if err != nil {
|
|
limit = 10
|
|
}
|
|
|
|
districts, err := h.WilayahService.GetAllDistricts(page, limit)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusInternalServerError, fmt.Sprintf("Failed to fetch districts: %v", err))
|
|
}
|
|
|
|
return utils.PaginatedResponse(c, districts, page, limit, len(districts), "Districts fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetDistrictByID(c *fiber.Ctx) error {
|
|
districtID := c.Params("id")
|
|
|
|
district, err := h.WilayahService.GetDistrictByID(districtID)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusNotFound, fmt.Sprintf("District not found: %v", err))
|
|
}
|
|
|
|
return utils.LogResponse(c, district, "District fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetAllVillages(c *fiber.Ctx) error {
|
|
page, err := strconv.Atoi(c.Query("page", "1"))
|
|
if err != nil {
|
|
page = 1
|
|
}
|
|
|
|
limit, err := strconv.Atoi(c.Query("limit", "10"))
|
|
if err != nil {
|
|
limit = 10
|
|
}
|
|
|
|
villages, err := h.WilayahService.GetAllVillages(page, limit)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusInternalServerError, fmt.Sprintf("Failed to fetch villages: %v", err))
|
|
}
|
|
|
|
return utils.PaginatedResponse(c, villages, page, limit, len(villages), "Villages fetched successfully")
|
|
}
|
|
|
|
func (h *WilayahIndonesiaHandler) GetVillageByID(c *fiber.Ctx) error {
|
|
villageID := c.Params("id")
|
|
|
|
village, err := h.WilayahService.GetVillageByID(villageID)
|
|
if err != nil {
|
|
return utils.GenericErrorResponse(c, fiber.StatusNotFound, fmt.Sprintf("Village not found: %v", err))
|
|
}
|
|
|
|
return utils.LogResponse(c, village, "Village fetched successfully")
|
|
}
|