// src/services/about.service.ts
import apiGlobal from '@/services/apiGlobal';

export interface UpdateTestimonialPayload {
  fullName?: string;
  designation?: string;
  content?: string;
  profileImage?: File;
  media?: File[];
  removeMedia?: string[];
  removeProfileImage?: boolean;
}

export interface UpdateSuccessStoryPayload {
  fullName?: string;
  content?: string;
  profileImage?: File;
  media?: File[];
  removeMedia?: string[];
  removeProfileImage?: boolean;
}

export interface ApiResponse {
  success: boolean;
  message: string;
  statusCode: number;
  data: any;
}

// Update Testimonial
export const updateTestimonial = async (
  id: string,
  payload: UpdateTestimonialPayload
): Promise<ApiResponse> => {
  try {
    const formData = new FormData();
    
    if (payload.fullName) {
      formData.append('fullName', payload.fullName);
    }
    if (payload.designation) {
      formData.append('designation', payload.designation);
    }
    if (payload.content) {
      formData.append('content', payload.content);
    }
    if (payload.removeProfileImage) {
      formData.append('removeProfileImage', 'true');
    }
    if (payload.profileImage) {
      formData.append('profileImage', payload.profileImage);
    }
    if (payload.removeMedia && payload.removeMedia.length > 0) {
      formData.append('removeMedia', JSON.stringify(payload.removeMedia));
    }
    if (payload.media && payload.media.length > 0) {
      payload.media.forEach((file) => {
        formData.append('media', file);
      });
    }

    const response = await apiGlobal.put(`/updateTestimonial/${id}`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });

    return response.data;
  } catch (error: any) {
    console.error('Error updating testimonial:', error);
    throw new Error(error.response?.data?.message || 'Failed to update testimonial');
  }
};

// Delete Testimonial
export const deleteTestimonial = async (id: string): Promise<ApiResponse> => {
  try {
    const response = await apiGlobal.delete(`/deleteTestimonial/${id}`);
    return response.data;
  } catch (error: any) {
    console.error('Error deleting testimonial:', error);
    throw new Error(error.response?.data?.message || 'Failed to delete testimonial');
  }
};

// Update Success Story
export const updateSuccessStory = async (
  id: string,
  payload: UpdateSuccessStoryPayload
): Promise<ApiResponse> => {
  try {
    const formData = new FormData();
    
    if (payload.fullName) {
      formData.append('fullName', payload.fullName);
    }
    if (payload.content) {
      formData.append('content', payload.content);
    }
    if (payload.removeProfileImage) {
      formData.append('removeProfileImage', 'true');
    }
    if (payload.profileImage) {
      formData.append('profileImage', payload.profileImage);
    }
    if (payload.removeMedia && payload.removeMedia.length > 0) {
      formData.append('removeMedia', JSON.stringify(payload.removeMedia));
    }
    if (payload.media && payload.media.length > 0) {
      payload.media.forEach((file) => {
        formData.append('media', file);
      });
    }

    const response = await apiGlobal.put(`/updateSuccessStory/${id}`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });

    return response.data;
  } catch (error: any) {
    console.error('Error updating success story:', error);
    throw new Error(error.response?.data?.message || 'Failed to update success story');
  }
};

// Delete Success Story
export const deleteSuccessStory = async (id: string): Promise<ApiResponse> => {
  try {
    const response = await apiGlobal.delete(`/deleteSuccessStory/${id}`);
    return response.data;
  } catch (error: any) {
    console.error('Error deleting success story:', error);
    throw new Error(error.response?.data?.message || 'Failed to delete success story');
  }
};

