46 lines
1017 B
Go
46 lines
1017 B
Go
package controllers
|
|
|
|
import (
|
|
"codeword/internal/models"
|
|
"codeword/internal/service"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type StatsController struct {
|
|
StatsService *service.StatsService
|
|
}
|
|
|
|
func NewStatsController(service *service.StatsService) *StatsController {
|
|
return &StatsController{
|
|
StatsService: service,
|
|
}
|
|
}
|
|
|
|
func (c *StatsController) Register(router fiber.Router) {
|
|
|
|
router.Get("/promocode/stats", c.Getstats)
|
|
|
|
}
|
|
|
|
func (c *StatsController) Name() string {
|
|
return ""
|
|
}
|
|
|
|
func (c *StatsController) Getstats(ctx *fiber.Ctx) error {
|
|
// Обработчик для метода Getstats
|
|
|
|
var request models.PromoCodeStatsReq
|
|
if err := ctx.BodyParser(&request); err != nil {
|
|
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
|
}
|
|
|
|
response, err := c.StatsService.Getstats(ctx.Context(), &request)
|
|
|
|
if err != nil {
|
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
|
}
|
|
return ctx.Status(fiber.StatusOK).JSON(response)
|
|
|
|
}
|