113 lines
2.0 KiB
Go
113 lines
2.0 KiB
Go
|
|
package controller
|
||
|
|
|
||
|
|
import (
|
||
|
|
"strconv"
|
||
|
|
|
||
|
|
"web-qudo-be/app/module/hero_section_image/service"
|
||
|
|
|
||
|
|
"github.com/gofiber/fiber/v2"
|
||
|
|
)
|
||
|
|
|
||
|
|
type HeroSectionImageController struct {
|
||
|
|
Service *service.HeroSectionImageService
|
||
|
|
}
|
||
|
|
|
||
|
|
type Controller struct {
|
||
|
|
HeroSectionImage *HeroSectionImageController
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewController(service *service.HeroSectionImageService) *Controller {
|
||
|
|
return &Controller{
|
||
|
|
HeroSectionImage: &HeroSectionImageController{
|
||
|
|
Service: service,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// GET by hero_id
|
||
|
|
func (c *HeroSectionImageController) GetByHeroID(ctx *fiber.Ctx) error {
|
||
|
|
heroId, err := strconv.Atoi(ctx.Params("heroId"))
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
data, err := c.Service.GetByHeroID(ctx.Context(), heroId)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return ctx.JSON(fiber.Map{
|
||
|
|
"data": data,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// CREATE (UPLOAD)
|
||
|
|
func (c *HeroSectionImageController) Upload(ctx *fiber.Ctx) error {
|
||
|
|
heroId, err := strconv.Atoi(ctx.Params("heroId"))
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
file, err := ctx.FormFile("image")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
path := "./uploads/" + file.Filename
|
||
|
|
ctx.SaveFile(file, path)
|
||
|
|
|
||
|
|
url := "/uploads/" + file.Filename
|
||
|
|
|
||
|
|
err = c.Service.Upload(ctx.Context(), heroId, path, url)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return ctx.JSON(fiber.Map{
|
||
|
|
"message": "uploaded",
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// UPDATE
|
||
|
|
func (c *HeroSectionImageController) Update(ctx *fiber.Ctx) error {
|
||
|
|
id, err := strconv.Atoi(ctx.Params("id"))
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
file, err := ctx.FormFile("image")
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
path := "./uploads/" + file.Filename
|
||
|
|
ctx.SaveFile(file, path)
|
||
|
|
|
||
|
|
url := "/uploads/" + file.Filename
|
||
|
|
|
||
|
|
err = c.Service.Update(ctx.Context(), id, path, url)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return ctx.JSON(fiber.Map{
|
||
|
|
"message": "updated",
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// DELETE
|
||
|
|
func (c *HeroSectionImageController) Delete(ctx *fiber.Ctx) error {
|
||
|
|
id, err := strconv.Atoi(ctx.Params("id"))
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
err = c.Service.Delete(ctx.Context(), id)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return ctx.JSON(fiber.Map{
|
||
|
|
"message": "deleted",
|
||
|
|
})
|
||
|
|
}
|