codeword/internal/controllers/promocode.go
2024-11-15 14:21:04 +03:00

136 lines
3.8 KiB
Go

package controllers
import (
"codeword/internal/models"
"codeword/internal/service"
"github.com/gofiber/fiber/v2"
)
type PromocodeController struct {
PromocodeService *service.PromocodeService
}
func NewPromocodeController(service *service.PromocodeService) *PromocodeController {
return &PromocodeController{
PromocodeService: service,
}
}
func (c *PromocodeController) Register(router fiber.Router) {
router.Post("/promocode/activate", c.Activate)
router.Post("/promocode/getList", c.Getlist)
router.Delete("/promocode/{promocodeID}", c.Delete)
router.Post("/promocode/create", c.Createpromocode)
router.Put("/promocode/edit", c.Editpromocode)
router.Post("/promocode/fastlink", c.Createfastlink)
}
func (c *PromocodeController) Name() string {
return ""
}
func (c *PromocodeController) Activate(ctx *fiber.Ctx) error {
// Обработчик для метода Activate
var request models.ActivateReq
if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
response, err := c.PromocodeService.Activate(ctx.Context(), &request)
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.Status(fiber.StatusOK).JSON(response)
}
func (c *PromocodeController) Getlist(ctx *fiber.Ctx) error {
// Обработчик для метода Getlist
var request models.GetPromoCodesListReq
if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
response, err := c.PromocodeService.Getlist(ctx.Context(), &request)
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.Status(fiber.StatusOK).JSON(response)
}
func (c *PromocodeController) Delete(ctx *fiber.Ctx) error {
// Обработчик для метода Delete
err := c.PromocodeService.Delete(ctx.Context())
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.SendStatus(fiber.StatusOK)
}
func (c *PromocodeController) Createpromocode(ctx *fiber.Ctx) error {
// Обработчик для метода Createpromocode
var request models.PromoCodeReq
if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
response, err := c.PromocodeService.Createpromocode(ctx.Context(), &request)
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.Status(fiber.StatusOK).JSON(response)
}
func (c *PromocodeController) Editpromocode(ctx *fiber.Ctx) error {
// Обработчик для метода Editpromocode
var request models.EditPromoCodeReq
if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
response, err := c.PromocodeService.Editpromocode(ctx.Context(), &request)
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.Status(fiber.StatusOK).JSON(response)
}
func (c *PromocodeController) Createfastlink(ctx *fiber.Ctx) error {
// Обработчик для метода Createfastlink
var request models.CreateFastLinkReq
if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
}
response, err := c.PromocodeService.Createfastlink(ctx.Context(), &request)
if err != nil {
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
return ctx.Status(fiber.StatusOK).JSON(response)
}