77 lines
1.5 KiB
Go
77 lines
1.5 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 TowerController struct {
|
|
tu usecase.TowerUseCase
|
|
rg *gin.RouterGroup
|
|
}
|
|
|
|
func (tc *TowerController) Route() {
|
|
rg := tc.rg.Group("/tower")
|
|
rg.GET("", tc.GetTower())
|
|
rg.POST("", tc.CreateTower())
|
|
rg.GET("/:id", tc.GetTowerByID())
|
|
}
|
|
|
|
func NewTowerController(tu usecase.TowerUseCase, rg *gin.RouterGroup) *TowerController {
|
|
return &TowerController{
|
|
tu: tu,
|
|
rg: rg,
|
|
}
|
|
}
|
|
|
|
func (tc *TowerController) GetTower() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
towers, err := tc.tu.GetAll()
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
common.SingleResponses(c, "Success", towers)
|
|
}
|
|
}
|
|
|
|
func (tc *TowerController) CreateTower() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
var towerDTO req.TowerDTO
|
|
err := c.ShouldBindJSON(&towerDTO)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
err = tc.tu.Post(towerDTO)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
common.SingleResponses(c, "Tower has been created", nil)
|
|
}
|
|
}
|
|
|
|
func (tc *TowerController) GetTowerByID() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
id := c.Param("id")
|
|
tower, err := tc.tu.GetByID(id)
|
|
|
|
if err != nil {
|
|
common.ErrorResponses(c, http.StatusBadRequest, err.Error())
|
|
return
|
|
}
|
|
|
|
common.SingleResponses(c, "Success", tower)
|
|
}
|
|
} |