T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/lavocat.ca/private_html/src/hooks/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.ca/private_html/src/hooks/useTestimonials.ts
import { useState, useEffect } from 'react';
import { useSession } from 'next-auth/react';

export interface TestimonialData {
  id: string;
  title: string;
  content: string;
  category: string;
  impactLevel: string;
  isPublic: boolean;
  isFeatured: boolean;
  helpfulVotes: number;
  views: number;
  createdAt: string;
  beforeSituation?: string;
  afterSituation?: string;
  client?: {
    id: string;
    name: string;
    profilePicture?: string;
  };
  lawyer?: {
    id: string;
    name: string;
    profilePicture?: string;
  };
  case?: {
    id: string;
    title: string;
  };
}

export interface TestimonialsData {
  testimonials: TestimonialData[];
  reviews: TestimonialData[];
  isLoading: boolean;
  error: string | null;
}

export function useTestimonials(userId: string): TestimonialsData {
  const { data: session } = useSession();
  const [testimonialsData, setTestimonialsData] = useState<TestimonialsData>({
    testimonials: [],
    reviews: [],
    isLoading: true,
    error: null,
  });

  useEffect(() => {
    if (!userId) return;

    const fetchTestimonialsData = async () => {
      try {
        setTestimonialsData(prev => ({ ...prev, isLoading: true, error: null }));

        // Fetch testimonials where user is the lawyer (client testimonials about them)
        const testimonialsResponse = await fetch(`/api/users/${userId}/testimonials`);
        const testimonialsData = testimonialsResponse.ok ? await testimonialsResponse.json() : { testimonials: [] };

        // Fetch reviews where user is the client (reviews they wrote about lawyers)
        const reviewsResponse = await fetch(`/api/users/${userId}/reviews`);
        const reviewsData = reviewsResponse.ok ? await reviewsResponse.json() : { reviews: [] };

        setTestimonialsData({
          testimonials: testimonialsData.testimonials || [],
          reviews: reviewsData.reviews || [],
          isLoading: false,
          error: null,
        });

      } catch (error) {
        console.error('Error fetching testimonials data:', error);
        setTestimonialsData(prev => ({
          ...prev,
          isLoading: false,
          error: error instanceof Error ? error.message : 'Failed to fetch testimonials data',
        }));
      }
    };

    fetchTestimonialsData();
  }, [userId]);

  return testimonialsData;
} 

CasperSecurity Mini