Files
soft_usite/rest/controllers/api/dlocal_controller.go
T
2025-05-12 14:36:23 -05:00

188 lines
5.5 KiB
Go

package controllers
import (
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
)
// Función para manejar la solicitud de creación de un plan
func CreatePlan(c *fiber.Ctx) error {
var plan models.PlanRequest
// Parsear el cuerpo de la solicitud a la estructura PlanRequest
if err := c.BodyParser(&plan); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": fmt.Sprintf("Error al parsear el cuerpo de la solicitud: %v", err),
})
}
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para crear el plan
response, err := services.CreatePlan(*dlocalConfig, plan)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al crear el plan: %v", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Plan creado exitosamente.",
"response": string(response),
})
}
func SeePlan(c *fiber.Ctx) error {
planID := c.Params("planID")
// Verifica si se recibió correctamente
if planID == "" {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "PlanID es requerido.",
})
}
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para ver el plan
response, err := services.SeePlan(*dlocalConfig, planID)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al obtener el plan: %v", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Plan obtenido exitosamente.",
"response": string(response),
})
}
func UpdatedPlan(c *fiber.Ctx) error {
planID := c.Params("planID")
var plan services.PlanUpdated
// Parsear el cuerpo de la solicitud a la estructura PlanRequest
if err := c.BodyParser(&plan); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": fmt.Sprintf("Error al parsear el cuerpo de la solicitud: %v", err),
})
}
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para crear el plan
response, err := services.UpdatedPlan(*dlocalConfig, plan, planID)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al crear el plan: %v", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Plan actualizado exitosamente.",
"response": string(response),
})
}
func DeactivatePlan(c *fiber.Ctx) error {
planID := c.Params("planID")
subscriptionId := c.Params("subscriptionId")
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para crear el plan
response, err := services.DeactivatePlan(*dlocalConfig, planID, subscriptionId)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al crear el plan: %v", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Suscripción cancelada exitosamente.",
"response": string(response),
})
}
func SeePlanes(c *fiber.Ctx) error {
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para ver el plan
response, err := services.SeePlanes(*dlocalConfig)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al obtener los planes", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Planes obtenido exitosamente.",
"response": string(response),
})
}
func SeeSubscription(c *fiber.Ctx) error {
subscriptionId := c.Params("subscriptionId")
invoiceId := c.Params("invoiceId")
// Obtener la configuración activa de DlocalApi
dlocalConfig, err := models.GetLastActiveDlocalApi()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al obtener la configuración activa de DlocalApi.",
})
}
// Llamar al servicio para ver suscripción
response, err := services.SeeSubscription(*dlocalConfig, subscriptionId, invoiceId)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": fmt.Sprintf("Error al obtener la suscripción: %v", err),
})
}
// Devolver la respuesta exitosa
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"message": "Suscripción obtenida exitosamente.",
"response": string(response),
})
}