NAM-APJATEL-BACKEND/delivery/controller/devices_controller.go

77 lines
1.6 KiB
Go

package controller
import (
"net/http"
"users_management/m/model/dto/req"
"users_management/m/usecase"
"users_management/m/utils/common"
"github.com/gin-gonic/gin"
)
type DeviceController struct {
du usecase.DeviceUseCase
rg *gin.RouterGroup
}
func (dc *DeviceController) Route() {
rg := dc.rg.Group("/devices")
rg.POST("", dc.CreateDevice())
rg.GET("", dc.GetAllDevices())
rg.GET("/:id", dc.GetDeviceByID())
}
func NewDeviceController(du usecase.DeviceUseCase, rg *gin.RouterGroup) *DeviceController {
return &DeviceController{
du: du,
rg: rg,
}
}
func (dc *DeviceController) CreateDevice() gin.HandlerFunc {
return func(c *gin.Context) {
var deviceDTO req.DeviceDTO
err := c.ShouldBindJSON(&deviceDTO)
if err != nil {
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
return
}
err = dc.du.CreateDevice(deviceDTO)
if err != nil {
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
return
}
common.SingleResponses(c, "Device has been created", nil)
}
}
func (dc *DeviceController) GetAllDevices() gin.HandlerFunc {
return func(c *gin.Context) {
devices, err := dc.du.GetAllDevices()
if err != nil {
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
return
}
common.SingleResponses(c, "Success", devices)
}
}
func (dc *DeviceController) GetDeviceByID() gin.HandlerFunc {
return func(c *gin.Context) {
id := c.Param("id")
device, err := dc.du.GetByID(id)
if err != nil {
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
return
}
common.SingleResponses(c, "Success", device)
}
}