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), }) } func CreatePago(c *fiber.Ctx) error { var pago services.PagoRequest // Parsear el cuerpo de la solicitud a la estructura PagoRequest if err := c.BodyParser(&pago); 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 pago response, err := services.CreatePago(*dlocalConfig, pago) if err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ "error": fmt.Sprintf("Error al crear el pago: %v", err), }) } // Devolver la respuesta exitosa return c.Status(fiber.StatusOK).JSON(fiber.Map{ "message": "Pago creado exitosamente.", "response": string(response), }) }