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) } }