package controllers import ( "amocrm/internal/models" "amocrm/internal/service" "github.com/gofiber/fiber/v2" ) type AccountController struct { AccountService *service.AccountService } func NewAccountController(service *service.AccountService) *AccountController { return &AccountController{ AccountService: service, } } func (c *AccountController) Register(router fiber.Router) { router.Patch("/users", c.UpdateListUsers) router.Get("/users", c.GettingUserFromCash) router.Delete("/utms/:quizID", c.DeletingUserUtm) router.Post("/utms/:quizID", c.SavingUserUtm) router.Get("/utms/:quizID", c.GettingUserUtm) router.Delete("/account", c.SoftDeleteAccount) router.Get("/account", c.GetCurrentAccount) router.Post("/account", c.ConnectAccount) } func (c *AccountController) Name() string { return "" } func (c *AccountController) UpdateListUsers(ctx *fiber.Ctx) error { err := c.AccountService.UpdateListUsers(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.SendStatus(fiber.StatusOK) } func (c *AccountController) GettingUserFromCash(ctx *fiber.Ctx) error { req, err := extractParams(ctx) if err != nil { return err } response, err := c.AccountService.GettingUserFromCash(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.Status(fiber.StatusOK).JSON(response) } func (c *AccountController) DeletingUserUtm(ctx *fiber.Ctx) error { quizID := ctx.Params("quizID") if quizID == "" { return ctx.Status(fiber.StatusBadRequest).SendString("quizID is nil") } var request models.ListDeleteUTMIDsReq if err := ctx.BodyParser(&request); err != nil { return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"}) } err := c.AccountService.DeletingUserUtm(ctx.Context(), &request) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.SendStatus(fiber.StatusOK) } func (c *AccountController) SavingUserUtm(ctx *fiber.Ctx) error { quizID := ctx.Params("quizID") if quizID == "" { return ctx.Status(fiber.StatusBadRequest).SendString("quizID is nil") } var request models.SaveUserListUTMReq if err := ctx.BodyParser(&request); err != nil { return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"}) } response, err := c.AccountService.SavingUserUtm(ctx.Context(), &request) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.Status(fiber.StatusOK).JSON(response) } func (c *AccountController) GettingUserUtm(ctx *fiber.Ctx) error { quizID := ctx.Params("quizID") if quizID == "" { return ctx.Status(fiber.StatusBadRequest).SendString("quizID is nil") } req, err := extractParams(ctx) if err != nil { return err } response, err := c.AccountService.GettingUserUtm(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.Status(fiber.StatusOK).JSON(response) } func (c *AccountController) SoftDeleteAccount(ctx *fiber.Ctx) error { err := c.AccountService.SoftDeleteAccount(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.SendStatus(fiber.StatusOK) } func (c *AccountController) GetCurrentAccount(ctx *fiber.Ctx) error { response, err := c.AccountService.GetCurrentAccount(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.Status(fiber.StatusOK).JSON(response) } func (c *AccountController) ConnectAccount(ctx *fiber.Ctx) error { response, err := c.AccountService.ConnectAccount(ctx.Context()) if err != nil { return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error") } return ctx.Status(fiber.StatusOK).JSON(response) }