UNPKG

skailan-core

Version:

Servicio de autenticación y multitenancy para Skailan.

119 lines 3.74 kB
import { PlanService } from "../services/PlanService"; /** * Lista todos los planes con sus features (público, para landingpage). */ export const listPublicPlans = async (req, res) => { try { if (!req.tenantPrisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const plans = await PlanService.listPublicPlans(req.tenantPrisma); return res.status(200).json(plans.map((plan) => ({ ...plan, features: plan.planFeatures?.map((f) => f.feature) || [], }))); } catch (err) { return res .status(500) .json({ error: err.message || "Error al listar planes públicos." }); } }; /** * CRUD protegido: listar todos los planes. */ export const listPlans = async (req, res) => { try { if (!req.tenantPrisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const plans = await PlanService.listPlans(req.tenantPrisma); return res.status(200).json(plans.map((plan) => ({ ...plan, features: plan.planFeatures?.map((f) => f.feature) || [], }))); } catch (err) { return res .status(500) .json({ error: err.message || "Error al listar planes." }); } }; /** * Crear un nuevo plan. */ export const createPlan = async (req, res) => { try { if (!req.tenantPrisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const { name, description, price, type, featureIds } = req.body; const plan = await PlanService.createPlan(req.tenantPrisma, name, description, price, type, featureIds); return res.status(201).json({ ...plan, features: plan.planFeatures?.map((f) => f.feature) || [], }); } catch (err) { return res .status(500) .json({ error: err.message || "Error al crear plan." }); } }; /** * Actualizar un plan. */ export const updatePlan = async (req, res) => { try { if (!req.tenantPrisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const { id } = req.params; if (!id) { return res.status(400).json({ error: "ID is required" }); } const { name, description, price, type, featureIds } = req.body; const plan = await PlanService.updatePlan(req.tenantPrisma, id, name, description, price, type, featureIds); return res.status(200).json({ ...plan, features: plan.planFeatures?.map((f) => f.feature) || [], }); } catch (err) { return res .status(500) .json({ error: err.message || "Error al actualizar plan." }); } }; /** * Eliminar un plan. */ export const deletePlan = async (req, res) => { try { if (!req.tenantPrisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const { id } = req.params; if (!id) { return res.status(400).json({ error: "ID is required" }); } await PlanService.deletePlan(req.tenantPrisma, id); return res.status(204).send(); } catch (err) { return res .status(500) .json({ error: err.message || "Error al eliminar plan." }); } }; //# sourceMappingURL=planController.js.map