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); this.getImageVisibilityTypes = this.getImageVisibilityTypes.bind(this); this.getFolderImageList = this.getFolderImageList.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 userId = req.headers.userid; const folderData = req.body; const folder = await this.socialNetworkService.createFolder(userId, 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 getFolderImageList(req, res) { try { const userId = req.headers.userid; const { folderId } = req.params; const images = await this.socialNetworkService.getFolderImageList(userId, folderId); res.status(200).json(images); } catch (error) { console.error('Error in getFolderImageList:', error); res.status(500).json({ error: error.message }); } } async uploadImage(req, res) { try { const userId = req.headers.userid; const imageData = req.body; const image = await this.socialNetworkService.uploadImage(userId, 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 }); } } async getImageVisibilityTypes(req, res) { try { const types = await this.socialNetworkService.getPossibleImageVisibilities(); res.status(200).json(types); } catch (error) { console.log(error); res.status(500).json({ error: error.message }); } } } export default SocialNetworkController;