package controller import ( "codeword/internal/models" "codeword/internal/services" "github.com/gofiber/fiber/v2" "go.uber.org/zap" ) type PromoCodeController struct { logger *zap.Logger promoCodeService *services.PromoCodeService } func NewPromoCodeController(logger *zap.Logger, promoCodeService *services.PromoCodeService) *PromoCodeController { return &PromoCodeController{ logger: logger, promoCodeService: promoCodeService, } } func (p *PromoCodeController) CreatePromoCode(c *fiber.Ctx) error { var reqCreatePromoCode models.PromoCode if err := c.BodyParser(&reqCreatePromoCode); err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"}) } createdPromoCode, err := p.promoCodeService.CreatePromoCode(c.Context(), &reqCreatePromoCode) if err != nil { p.logger.Error("Failed to create promocode", zap.Error(err)) return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Internal Server Error"}) } return c.Status(fiber.StatusCreated).JSON(createdPromoCode) }