init
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/models"
|
||||
"apskel-pos-be/internal/service"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type OutletSettingHandlerImpl struct {
|
||||
outletSettingService service.OutletSettingService
|
||||
}
|
||||
|
||||
func NewOutletSettingHandlerImpl(outletSettingService service.OutletSettingService) *OutletSettingHandlerImpl {
|
||||
return &OutletSettingHandlerImpl{
|
||||
outletSettingService: outletSettingService,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *OutletSettingHandlerImpl) CreateSetting(c *gin.Context) {
|
||||
var req models.CreateOutletSettingRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid request body",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
req.OutletID = outletID
|
||||
|
||||
setting, err := h.outletSettingService.CreateSetting(c.Request.Context(), &req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, contract.ErrorResponse{
|
||||
Error: "Failed to create setting",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusCreated, contract.SuccessResponse{
|
||||
Data: setting,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *OutletSettingHandlerImpl) UpdateSetting(c *gin.Context) {
|
||||
var req models.UpdateOutletSettingRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid request body",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Validate outlet ID from URL
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Get key from URL
|
||||
key := c.Param("key")
|
||||
if key == "" {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Missing setting key",
|
||||
Message: "Setting key is required",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
setting, err := h.outletSettingService.UpdateSetting(c.Request.Context(), outletID, key, &req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, contract.ErrorResponse{
|
||||
Error: "Failed to update setting",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, contract.SuccessResponse{
|
||||
Data: setting,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *OutletSettingHandlerImpl) GetSetting(c *gin.Context) {
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Get key from URL
|
||||
key := c.Param("key")
|
||||
if key == "" {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Missing setting key",
|
||||
Message: "Setting key is required",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
setting, err := h.outletSettingService.GetSetting(c.Request.Context(), outletID, key)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusNotFound, contract.ErrorResponse{
|
||||
Error: "Setting not found",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, contract.SuccessResponse{
|
||||
Data: setting,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *OutletSettingHandlerImpl) GetPrinterSettings(c *gin.Context) {
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
settings, err := h.outletSettingService.GetPrinterSettings(c.Request.Context(), outletID)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, contract.ErrorResponse{
|
||||
Error: "Failed to get printer settings",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, contract.SuccessResponse{
|
||||
Data: settings,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *OutletSettingHandlerImpl) UpdatePrinterSettings(c *gin.Context) {
|
||||
var req models.UpdateOutletPrinterSettingsRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid request body",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
settings, err := h.outletSettingService.UpdatePrinterSettings(c.Request.Context(), outletID, &req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, contract.ErrorResponse{
|
||||
Error: "Failed to update printer settings",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, contract.SuccessResponse{
|
||||
Data: settings,
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteSetting deletes a specific outlet setting
|
||||
func (h *OutletSettingHandlerImpl) DeleteSetting(c *gin.Context) {
|
||||
// Validate outlet ID from URL
|
||||
outletID, err := uuid.Parse(c.Param("outlet_id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Invalid outlet ID",
|
||||
Message: "Outlet ID must be a valid UUID",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Get key from URL
|
||||
key := c.Param("key")
|
||||
if key == "" {
|
||||
c.JSON(http.StatusBadRequest, contract.ErrorResponse{
|
||||
Error: "Missing setting key",
|
||||
Message: "Setting key is required",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err = h.outletSettingService.DeleteSetting(c.Request.Context(), outletID, key)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, contract.ErrorResponse{
|
||||
Error: "Failed to delete setting",
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, contract.SuccessResponse{
|
||||
Message: "Setting deleted successfully",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user