71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package utm
|
|
|
|
import (
|
|
"gitea.pena/SQuiz/common/dal"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type Deps struct {
|
|
DAL *dal.DAL
|
|
}
|
|
|
|
type UTM struct {
|
|
dal *dal.DAL
|
|
}
|
|
|
|
func NewUTMController(deps Deps) *UTM {
|
|
return &UTM{
|
|
dal: deps.DAL,
|
|
}
|
|
}
|
|
|
|
func (r *UTM) CreateQuizUTM(ctx *fiber.Ctx) error {
|
|
var req struct {
|
|
QuizID int64 `json:"quiz_id"`
|
|
UTM string `json:"utm"`
|
|
}
|
|
|
|
if err := ctx.BodyParser(&req); err != nil {
|
|
return ctx.Status(fiber.StatusBadRequest).SendString(err.Error())
|
|
}
|
|
|
|
if req.QuizID <= 0 || req.UTM == "" {
|
|
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "quiz_id and utm are required"})
|
|
}
|
|
|
|
utm, err := r.dal.QuizRepo.CreateQuizUTM(ctx.Context(), req.QuizID, req.UTM)
|
|
if err != nil {
|
|
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
|
}
|
|
|
|
return ctx.Status(fiber.StatusOK).JSON(utm)
|
|
}
|
|
|
|
func (r *UTM) GetAllQuizUtms(ctx *fiber.Ctx) error {
|
|
quizID, err := ctx.ParamsInt("quizID")
|
|
if err != nil || quizID <= 0 {
|
|
return ctx.Status(fiber.StatusBadRequest).SendString(err.Error())
|
|
}
|
|
|
|
utms, err := r.dal.QuizRepo.GetAllQuizUtms(ctx.Context(), int64(quizID))
|
|
if err != nil {
|
|
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
|
}
|
|
|
|
return ctx.JSON(utms)
|
|
}
|
|
|
|
func (r *UTM) DeleteQuizUTM(ctx *fiber.Ctx) error {
|
|
utmID, err := ctx.ParamsInt("utmID")
|
|
if err != nil || utmID <= 0 {
|
|
return ctx.Status(fiber.StatusBadRequest).SendString(err.Error())
|
|
}
|
|
|
|
err = r.dal.QuizRepo.DeleteQuizUTM(ctx.Context(), int64(utmID))
|
|
if err != nil {
|
|
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
|
}
|
|
|
|
return ctx.SendStatus(fiber.StatusOK)
|
|
}
|