'use client' import React, { useState, useEffect } from 'react'; import Link from 'next/link'; import { Phone, Mail, Share, ChevronRight, Check, } from 'lucide-react'; import { TeamMember, FacultyService } from '../../lib/facultyData'; interface TeamMemberDetailProps { memberId: number; memberData?: TeamMember; } const TeamMemberDetail: React.FC = ({ memberId, memberData }) => { const [member, setMember] = useState(memberData || null); const [loading, setLoading] = useState(!memberData); const [error, setError] = useState(null); const [showSocialShare, setShowSocialShare] = useState(false); const [imageError, setImageError] = useState(false); useEffect(() => { const loadMemberData = async () => { if (memberData) return; // Already have data try { setLoading(true); const fetchedMember = await FacultyService.getFacultyById(memberId); if (fetchedMember) { setMember(fetchedMember); } else { setError('Faculty member not found'); } } catch (err) { console.error('Failed to load faculty member:', err); setError('Failed to load faculty member data'); } finally { setLoading(false); } }; loadMemberData(); }, [memberId, memberData]); if (loading) { return (

Loading faculty member details...

); } if (error || !member) { return (

{error || 'Faculty member not found'}

Back to Faculty
); } const isTrainee = member.category === 'TRAINEE_FELLOW'; // Check if image URL is valid and not a default placeholder const hasValidImage = member.image && member.image.trim() !== '' && !member.image.includes('default-avatar') && !member.image.includes('placeholder.') && !member.image.includes('robot') && // Only filter if URL ENDS with /profile-image (backend default endpoint) !(member.image.endsWith('/profile-image') || member.image.includes('/profile-image?') || member.image === 'https://via.placeholder.com/400'); const shouldShowImage = !isTrainee && hasValidImage && !imageError; // Create a comprehensive description from the member's details const getFullDescription = () => { return member.description || `${member.name} is a dedicated member of our ${isTrainee ? 'trainee program' : 'faculty'} with expertise in ${member.specialty?.toLowerCase() || 'medical practice'}. They bring valuable experience in ${isTrainee ? 'clinical training' : 'surgical education'}, patient care, and clinical research to Christian Medical College, Vellore.`; }; // Parse phone numbers if multiple are provided const getFormattedPhone = () => { if (!member.phone || member.phone === 'Not available') { return 'Contact through main office'; } return member.phone.includes(',') ? member.phone.split(',').map(p => p.trim()).join(' / ') : member.phone; }; const handleImageError = (e: React.SyntheticEvent) => { console.error('Image failed to load:', member.image); setImageError(true); }; return (
{/* Breadcrumb Section */}
{/* Page Header */}

{member.name}

{isTrainee && ( Trainee/Fellow )}

{member.designation || member.position} {member.experience && `with ${member.experience} of experience`} at CMC Vellore

{/* Main Content */}
{/* Sidebar */}
{/* Profile Image or Avatar */}
{shouldShowImage ? ( {member.name} ) : (
)}
{/* Profile Info */}
{member.designation || member.position}

{member.name}

{member.specialty || `${member.name} is a dedicated ${isTrainee ? 'trainee' : 'faculty member'} at CMC Vellore.`}

Phone
{getFormattedPhone()}
{member.experience && (
Experience
{member.experience}
)} {member.department && (
Department
{member.department}
)} {member.officeLocation && (
Office Location
{member.officeLocation}
)}
{/* Social Share */}
{/* Main Content */}
{/* Personal Info */}

About

{getFullDescription()}

As a dedicated member of the Department of {member.department || 'Medicine'} at Christian Medical College, Vellore, {member.name.split(' ')[1] || member.name} contributes to advancing medical education, patient care, and clinical research. Their commitment to excellence in healthcare and medical education makes them an invaluable asset to the medical community and the patients they serve.

{/* Details Grid */}
Clinical Focus & Specialty
{member.specialty || 'General Medicine'}
Education & Certification
{member.certification || 'Medical certification details available upon request'}
Training & Professional Development
{member.training || 'Professional training details available upon request'}
{member.workDays && member.workDays.length > 0 && (
Clinical Days
{member.workDays.map((day, index) => (
{day}
))}
)}
{/* Skills and Awards */}
{/* Research Interests & Skills */} {member.skills && member.skills.length > 0 && (

Research Interests & Expertise

Areas of clinical expertise, research focus, and professional competencies that contribute to advancing medical practice and education at CMC Vellore.

{member.skills.map((skill, index) => (
{skill.name} {skill.level}
))}
)} {/* Awards */} {member.awards && member.awards.length > 0 && (

Awards and Recognition

Professional achievements, awards, and recognition received for excellence in medical practice, research, and education.

{member.awards.map((award, index) => (
{award.title} { const target = e.target as HTMLImageElement; target.src = '/images/award-icon.png'; }} />
{award.year}

{award.title}

{award.description}

))}
)}
); }; export default TeamMemberDetail;