188 lines
5.5 KiB
Go
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),
|
|
})
|
|
}
|