diff --git a/Startup-app/backend/controllers/ideaController.js b/Startup-app/backend/controllers/ideaController.js index ec6b112e5acd7c78750e9e31576712e2cfa049ec..f4c5deb475c6dfdd93c48a6b460156c76f0e9dd6 100644 --- a/Startup-app/backend/controllers/ideaController.js +++ b/Startup-app/backend/controllers/ideaController.js @@ -1,7 +1,6 @@ const Idea = require('../models/idea'); const mongoose = require('mongoose'); - // Helper function for validating required fields const validateFields = (fields, res) => { for (const field of fields) { @@ -102,4 +101,58 @@ exports.getLikedPosts = async (req, res) => { console.error('Error fetching liked posts:', err.message); res.status(500).json({ msg: 'Failed to fetch liked posts' }); } +}; + +// Add or remove a collaborator +exports.toggleCollaboration = async (req, res) => { + try { + //console.log('Request body:', req.body); + //console.log('Authenticated user:', req.user); + + const { ideaId } = req.body; + const userId = req.user.id; + + const idea = await Idea.findById(ideaId); + if (!idea) { + console.error('Idea not found:', ideaId); + return res.status(404).json({ msg: 'Idea not found' }); + } + + const isCollaborating = idea.collaborators.includes(userId); + + if (isCollaborating) { + // Remove collaborator + idea.collaborators = idea.collaborators.filter(id => id.toString() !== userId); + } else { + // Add collaborator + idea.collaborators.push(userId); + } + + await idea.save(); + + res.status(200).json({ + msg: isCollaborating ? 'Collaboration reverted' : 'Collaboration requested', + collaborators: idea.collaborators, + }); + } catch (error) { + console.error('Error toggling collaboration:', error.message); + res.status(500).json({ msg: 'Server error' }); + } +}; + +// Get collaborators for an idea +exports.getCollaborators = async (req, res) => { + try { + const { ideaId } = req.params; + + const idea = await Idea.findById(ideaId).populate('collaborators', 'name email'); + if (!idea) { + return res.status(404).json({ msg: 'Idea not found' }); + } + + res.status(200).json(idea.collaborators); + } catch (error) { + console.error('Error fetching collaborators:', error.message); + res.status(500).json({ msg: 'Server error' }); + } }; \ No newline at end of file