UNPKG

skailan-crm

Version:

Servicio de CRM y gestión de ventas para Skailan

166 lines 6.01 kB
import { CreateCompetitor } from "../../app/use-cases/CreateCompetitor"; import { GetCompetitorById } from "../../app/use-cases/GetCompetitorById"; import { ListCompetitors } from "../../app/use-cases/ListCompetitors"; import { UpdateCompetitor } from "../../app/use-cases/UpdateCompetitor"; import { DeleteCompetitor } from "../../app/use-cases/DeleteCompetitor"; import { CompetitorPrismaRepository } from "../../infra/database/prisma/CompetitorPrismaRepository"; export const createCompetitor = async (req, res) => { try { const { name, notes } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const competitorRepository = new CompetitorPrismaRepository(prisma); const createCompetitorUseCase = new CreateCompetitor(competitorRepository); const newCompetitor = await createCompetitorUseCase.execute({ organizationId, name, notes, }); res.status(201).json(newCompetitor); } catch (error) { res .status(500) .json({ error: error.message || "Error creating competitor." }); } }; export const getCompetitorById = async (req, res) => { try { const { id } = req.params; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!id) { return res.status(400).json({ error: "Competitor ID is required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const competitorRepository = new CompetitorPrismaRepository(prisma); const getCompetitorByIdUseCase = new GetCompetitorById(competitorRepository); const competitor = await getCompetitorByIdUseCase.execute({ id, organizationId, }); if (!competitor) { return res.status(404).json({ error: "Competitor not found." }); } res.status(200).json(competitor); } catch (error) { res .status(500) .json({ error: error.message || "Error retrieving competitor." }); } }; export const listCompetitors = async (req, res) => { try { const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const competitorRepository = new CompetitorPrismaRepository(prisma); const listCompetitorsUseCase = new ListCompetitors(competitorRepository); const competitors = await listCompetitorsUseCase.execute({ organizationId, }); res.status(200).json(competitors); } catch (error) { res .status(500) .json({ error: error.message || "Error listing competitors." }); } }; export const updateCompetitor = async (req, res) => { try { const { id } = req.params; const { name, notes } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!id) { return res.status(400).json({ error: "Competitor ID is required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const competitorRepository = new CompetitorPrismaRepository(prisma); const updateCompetitorUseCase = new UpdateCompetitor(competitorRepository); const updatedCompetitor = await updateCompetitorUseCase.execute({ id, organizationId, name, notes, }); res.status(200).json(updatedCompetitor); } catch (error) { res .status(500) .json({ error: error.message || "Error updating competitor." }); } }; export const deleteCompetitor = async (req, res) => { try { const { id } = req.params; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } if (!id) { return res.status(400).json({ error: "Competitor ID is required." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const competitorRepository = new CompetitorPrismaRepository(prisma); const deleteCompetitorUseCase = new DeleteCompetitor(competitorRepository); await deleteCompetitorUseCase.execute({ id, organizationId, }); res.status(204).send(); } catch (error) { res .status(500) .json({ error: error.message || "Error deleting competitor." }); } }; //# sourceMappingURL=competitorController.js.map