pmtool / src /services /communicationApi.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
3.63 kB
import axios from 'axios';
import apiClient from '@/lib/api/axios-instance';
import { createHeaders } from '@/lib/api';
import { API_BASE_URL } from '../config';
import {
Communication,
ResponseData
} from '../types';
// API endpoints for communications
export const getCommunications = async (): Promise<ResponseData<Communication[]> | Communication[]> => {
try {
const response = await apiClient.get(`/api/Communication`);
console.log("Raw Communication API response:", response);
// If the response already has success property, it's in the expected format
if (response.data && typeof response.data.success !== 'undefined') {
return response.data;
}
// If the response is an array, let's wrap it in a ResponseData
if (Array.isArray(response.data)) {
console.log("Wrapping array response in ResponseData structure");
return {
data: response.data,
success: true
};
}
// Handle other potential formats
console.warn("API returned unexpected format:", response.data);
return {
data: Array.isArray(response.data) ? response.data : [],
success: true
};
} catch (error) {
console.error("Error in getCommunications:", error);
return {
data: [],
success: false,
message: error instanceof Error ? error.message : "Unknown error occurred"
};
}
};
// Export alias for compatibility
export const getAllCommunications = getCommunications;
export const getCommunicationById = async (id: number): Promise<ResponseData<Communication>> => {
const response = await apiClient.get(`/api/Communication/${id}`);
return response.data;
};
export const createCommunication = async (communication: any): Promise<ResponseData<Communication>> => {
const response = await apiClient.post(`/api/Communication`, communication);
return response.data;
};
export const updateCommunication = async (id: number, communication: any): Promise<ResponseData<Communication>> => {
const response = await apiClient.put(`/api/Communication/${id}`, communication);
return response.data;
};
export const deleteCommunication = async (id: number): Promise<ResponseData<boolean>> => {
const response = await apiClient.delete(`/api/Communication/${id}`);
return {
data: response.status === 200,
success: response.status === 200
};
};
// Additional helper methods
export const getCommunicationsByProjectId = async (projectId: number): Promise<ResponseData<Communication[]>> => {
const response = await getCommunications();
// Extract the communications array depending on the response type
const communications = Array.isArray(response) ? response : response.data;
const filteredCommunications = communications.filter(comm => comm.projectId === projectId);
return {
data: filteredCommunications,
success: true
};
};
export const getCommunicationsByDate = async (startDate: string, endDate: string): Promise<ResponseData<Communication[]>> => {
const response = await getCommunications();
// Extract the communications array depending on the response type
const communications = Array.isArray(response) ? response : response.data;
const start = new Date(startDate);
const end = new Date(endDate);
const filteredCommunications = communications.filter(comm => {
const commDate = new Date(comm.communicationDate);
return commDate >= start && commDate <= end;
});
return {
data: filteredCommunications,
success: true
};
};