socialMediaService = $socialMediaService; } /** * Get all active social media platforms */ public function getSocialMedia(): JsonResponse { try { $socialMedia = $this->socialMediaService->getActiveSocialMedia(); return response()->json([ 'success' => true, 'data' => $socialMedia, 'message' => 'Social media platforms retrieved successfully' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to retrieve social media platforms', 'error' => $e->getMessage() ], 500); } } /** * Update social media settings (Admin only) */ public function updateSocialMedia(Request $request): JsonResponse { $request->validate([ 'social_media' => 'required|array', 'social_media.*.platform' => 'required|string|max:50', 'social_media.*.name' => 'required|string|max:100', 'social_media.*.url' => 'required|url|max:255', 'social_media.*.icon' => 'nullable|string|max:100', 'social_media.*.is_active' => 'boolean', 'social_media.*.sort_order' => 'integer|min:0' ]); try { DB::beginTransaction(); $result = $this->socialMediaService->updateSocialMediaSettings($request->social_media); DB::commit(); return response()->json([ 'success' => true, 'data' => $result, 'message' => 'Social media settings updated successfully' ]); } catch (\Exception $e) { DB::rollBack(); return response()->json([ 'success' => false, 'message' => 'Failed to update social media settings', 'error' => $e->getMessage() ], 500); } } /** * Get social media settings for admin (including inactive) */ public function getSocialMediaSettings(): JsonResponse { try { $settings = $this->socialMediaService->getAllSocialMediaSettings(); return response()->json([ 'success' => true, 'data' => $settings, 'message' => 'Social media settings retrieved successfully' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to retrieve social media settings', 'error' => $e->getMessage() ], 500); } } /** * Add a new social media platform (Admin only) */ public function addSocialMedia(Request $request): JsonResponse { $request->validate([ 'platform' => 'required|string|max:50', 'name' => 'required|string|max:100', 'url' => 'required|url|max:255', 'icon' => 'nullable|string|max:100', 'is_active' => 'boolean', 'sort_order' => 'integer|min:0' ]); try { $result = $this->socialMediaService->addSocialMediaPlatform($request->all()); return response()->json([ 'success' => true, 'data' => $result, 'message' => 'Social media platform added successfully' ], 201); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to add social media platform', 'error' => $e->getMessage() ], 500); } } /** * Update a specific social media platform (Admin only) */ public function updateSocialMediaPlatform(Request $request, int $id): JsonResponse { $request->validate([ 'platform' => 'required|string|max:50', 'name' => 'required|string|max:100', 'url' => 'required|url|max:255', 'icon' => 'nullable|string|max:100', 'is_active' => 'boolean', 'sort_order' => 'integer|min:0' ]); try { $result = $this->socialMediaService->updateSocialMediaPlatform($id, $request->all()); return response()->json([ 'success' => true, 'data' => $result, 'message' => 'Social media platform updated successfully' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to update social media platform', 'error' => $e->getMessage() ], 500); } } /** * Delete a social media platform (Admin only) */ public function deleteSocialMediaPlatform(int $id): JsonResponse { try { $result = $this->socialMediaService->deleteSocialMediaPlatform($id); return response()->json([ 'success' => true, 'data' => $result, 'message' => 'Social media platform deleted successfully' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to delete social media platform', 'error' => $e->getMessage() ], 500); } } /** * Toggle active status of a social media platform (Admin only) */ public function toggleSocialMediaPlatform(int $id): JsonResponse { try { $result = $this->socialMediaService->toggleSocialMediaPlatform($id); return response()->json([ 'success' => true, 'data' => $result, 'message' => 'Social media platform status toggled successfully' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Failed to toggle social media platform status', 'error' => $e->getMessage() ], 500); } } }