import SocialNetworkService from '../services/socialnetworkService.js'; class SocialNetworkController { constructor() { this.socialNetworkService = new SocialNetworkService(); this.userSearch = this.userSearch.bind(this); this.profile = this.profile.bind(this); this.createFolder = this.createFolder.bind(this); this.getFolders = this.getFolders.bind(this); this.uploadImage = this.uploadImage.bind(this); this.getImage = this.getImage.bind(this); } async userSearch(req, res) { try { const { username, ageFrom, ageTo, genders } = req.body; const users = await this.socialNetworkService.searchUsers({ username, ageFrom, ageTo, genders }); res.status(200).json(users); } catch (error) { console.error('Error in userSearch:', error); res.status(500).json({ error: error.message }); } } async profile(req, res) { try { const { userId } = req.params; const requestingUserId = req.headers.userid; if (!userId || !requestingUserId) { return res.status(400).json({ error: 'Invalid user or requesting user ID.' }); } const profile = await this.socialNetworkService.getProfile(userId, requestingUserId); res.status(200).json(profile); } catch (error) { console.error('Error in profile:', error); res.status(500).json({ error: error.message }); } } async createFolder(req, res) { try { const folderData = req.body; const folder = await this.socialNetworkService.createFolder(folderData); res.status(201).json(folder); } catch (error) { console.error('Error in createFolder:', error); res.status(500).json({ error: error.message }); } } async getFolders(req, res) { try { const userId = req.headers.userid; const folders = await this.socialNetworkService.getFolders(userId); res.status(200).json(folders); } catch (error) { console.error('Error in getFolders:', error); res.status(500).json({ error: error.message }); } } async uploadImage(req, res) { try { const imageData = req.body; const image = await this.socialNetworkService.uploadImage(imageData); res.status(201).json(image); } catch (error) { console.error('Error in uploadImage:', error); res.status(500).json({ error: error.message }); } } async getImage(req, res) { try { const { imageId } = req.params; const image = await this.socialNetworkService.getImage(imageId); res.status(200).json(image); } catch (error) { console.error('Error in getImage:', error); res.status(500).json({ error: error.message }); } } } export default SocialNetworkController;