'error', 'message' => 'Incomplete data sent!']); exit(); } try { $screenshot_path = null; if (!empty($screenshot)) { $screenshot = preg_replace('#^data:image/\w+;base64,#i', '', $screenshot); $decoded = base64_decode($screenshot); if (strlen($decoded) > 5 * 1024 * 1024) { echo json_encode(['status' => 'error', 'message' => 'Screenshot too large!']); exit(); } $folder = base_path('storage/feedback/Images'); if (!file_exists($folder)) mkdir($folder, 0777, true); $fileName = 'feedback_' . time() . '_' . uniqid() . '.jpg'; file_put_contents("$folder/$fileName", $decoded); $screenshot_path = "storage/feedback/Images/$fileName"; } $user = Auth::user(); $username = $user ? $user->name : 'Unknown User'; // SAVE TO DB $feedback = FeedbackReport::create([ 'user_id' => $user_id, 'username' => $username, 'title' => $title, 'description' => $description, 'screenshot_path' => $screenshot_path, 'status' => 'submitted', ]); // Send notification to users with feedback permission $notificationCode = 'notification_feedback_report'; $notificationTitle = 'New Feedback'; $notificationMessage = sprintf( '%s submitted a new feedback with the title "%s".', $username, $title ); $notificationLink = '/admin/types/feedback-reports'; sendNotification( $notificationCode, $notificationMessage, $notificationLink, $notificationTitle, null, 1 ); echo json_encode([ 'status' => 'success', 'message' => 'Your feedback has been saved successfully!' ]); } catch (Exception $e) { echo json_encode([ 'status' => 'error', 'message' => 'Server error: ' . $e->getMessage() ]); } exit(); ?>