/*
 * File: dashboardAPI.ts
 * Description: API service for dashboard operations using apisauce
 * Design & Developed by Tech4Biz Solutions
 * Copyright (c) Spurrin Innovations. All rights reserved.
 */

import { create } from 'apisauce';
import { API_CONFIG, buildHeaders } from '../../../shared/utils';

const api = create({
  baseURL: API_CONFIG.BASE_URL
});

/**
 * Dashboard API Service
 * 
 * Purpose: Handle all dashboard-related API operations
 * 
 * Features:
 * - Get AI analysis dashboard statistics
 * - Get feedback statistics for AI cases
 * - Get real-time dashboard metrics
 * - Get time-based analysis data
 */
export const dashboardAPI = {
  /**
   * Get AI Analysis Dashboard Statistics
   * 
   * Purpose: Fetch comprehensive dashboard statistics for AI analysis
   * 
   * @param token - Authentication token
   * @returns Promise with dashboard statistics data
   */
  getDashboardStatistics: (token: string) => {
    return api.get('/api/ai-cases/feedbacks/statistics', {}, buildHeaders({ token }));
  },

  /**
   * Get Real-time Dashboard Metrics
   * 
   * Purpose: Fetch real-time dashboard metrics for live updates
   * 
   * @param token - Authentication token
   * @returns Promise with real-time dashboard metrics
   */
  getRealTimeMetrics: (token: string) => {
    return api.get('/api/ai-cases/feedbacks/statistics/realtime', {}, buildHeaders({ token }));
  },

  /**
   * Get Time-based Analysis Data
   * 
   * Purpose: Fetch time-based analysis data for trend visualization
   * 
   * @param token - Authentication token
   * @param timeRange - Time range for analysis (today, week, month, year)
   * @returns Promise with time-based analysis data
   */
  getTimeBasedAnalysis: (token: string, timeRange: 'today' | 'week' | 'month' | 'year') => {
    return api.get(`/api/ai-cases/feedbacks/statistics/time-analysis/${timeRange}`, {}, buildHeaders({ token }));
  },

  /**
   * Get Hospital-specific Statistics
   * 
   * Purpose: Fetch statistics for a specific hospital
   * 
   * @param token - Authentication token
   * @param hospitalId - Hospital identifier
   * @returns Promise with hospital-specific statistics
   */
  getHospitalStatistics: (token: string, hospitalId: string) => {
    return api.get(`/api/ai-cases/feedbacks/statistics/hospital/${hospitalId}`, {}, buildHeaders({ token }));
  },

  /**
   * Get Department Performance Metrics
   * 
   * Purpose: Fetch performance metrics for specific departments
   * 
   * @param token - Authentication token
   * @param department - Department name
   * @returns Promise with department performance data
   */
  getDepartmentMetrics: (token: string, department: string) => {
    return api.get(`/api/ai-cases/feedbacks/statistics/department/${department}`, {}, buildHeaders({ token }));
  },

  /**
   * Get Confidence Score Distribution
   * 
   * Purpose: Fetch confidence score distribution for AI predictions
   * 
   * @param token - Authentication token
   * @param timeRange - Optional time range filter
   * @returns Promise with confidence score distribution data
   */
  getConfidenceDistribution: (token: string, timeRange?: 'today' | 'week' | 'month' | 'year') => {
    const params = timeRange ? { timeRange } : {};
    return api.get('/api/ai-cases/feedbacks/statistics/confidence-distribution', params, buildHeaders({ token }));
  },

  /**
   * Get Urgency Level Distribution
   * 
   * Purpose: Fetch urgency level distribution for AI cases
   * 
   * @param token - Authentication token
   * @param timeRange - Optional time range filter
   * @returns Promise with urgency level distribution data
   */
  getUrgencyDistribution: (token: string, timeRange?: 'today' | 'week' | 'month' | 'year') => {
    const params = timeRange ? { timeRange } : {};
    return api.get('/api/ai-cases/feedbacks/statistics/urgency-distribution', params, buildHeaders({ token }));
  },

  /**
   * Get Feedback Analysis Data
   * 
   * Purpose: Fetch feedback analysis and coverage metrics
   * 
   * @param token - Authentication token
   * @param timeRange - Optional time range filter
   * @returns Promise with feedback analysis data
   */
  getFeedbackAnalysis: (token: string, timeRange?: 'today' | 'week' | 'month' | 'year') => {
    const params = timeRange ? { timeRange } : {};
    return api.get('/api/ai-cases/feedbacks/statistics/feedback-analysis', params, buildHeaders({ token }));
  },

  /**
   * Get Critical Findings Statistics
   * 
   * Purpose: Fetch statistics for critical findings and cases
   * 
   * @param token - Authentication token
   * @param timeRange - Optional time range filter
   * @returns Promise with critical findings statistics
   */
  getCriticalFindingsStats: (token: string, timeRange?: 'today' | 'week' | 'month' | 'year') => {
    const params = timeRange ? { timeRange } : {};
    return api.get('/api/ai-cases/feedbacks/statistics/critical-findings', params, buildHeaders({ token }));
  },

  /**
   * Get Prediction Breakdown Statistics
   * 
   * Purpose: Fetch breakdown of AI predictions by category
   * 
   * @param token - Authentication token
   * @param timeRange - Optional time range filter
   * @returns Promise with prediction breakdown data
   */
  getPredictionBreakdown: (token: string, timeRange?: 'today' | 'week' | 'month' | 'year') => {
    const params = timeRange ? { timeRange } : {};
    return api.get('/api/ai-cases/feedbacks/statistics/prediction-breakdown', params, buildHeaders({ token }));
  }
};

/*
 * End of File: dashboardAPI.ts
 * Design & Developed by Tech4Biz Solutions
 * Copyright (c) Spurrin Innovations. All rights reserved.
 */
