import React from 'react';
import { Button } from '@mui/material';
import { VarrometerTreatment } from '../../types/varrometer';
import { downloadPDF } from '../../utils/pdfGenerator';
import { formatDate } from '../../utils/dateUtils';

interface TreatmentReportPDFProps {
  assessmentDate: Date;
  beekeepingType: string;
  timePerHive: string;
  hiveType: string;
  frames: string;
  geneticResistance: string;
  treatmentAvailable: string;
  infestationLevel: string;
  reference: string;
  recommendedTreatments: VarrometerTreatment[];
  currentInfestation: number;
  projectedInfestation: number[];
  treatmentStartDate: Date;
  treatmentEndDate: Date;
  currentRiskLevel: number;
  afterTreatmentRiskLevel: number;
}

const TreatmentReportPDF: React.FC<TreatmentReportPDFProps> = ({
  assessmentDate,
  beekeepingType,
  timePerHive,
  hiveType,
  frames,
  geneticResistance,
  treatmentAvailable,
  infestationLevel,
  reference,
  recommendedTreatments,
  currentInfestation,
  projectedInfestation,
  treatmentStartDate,
  treatmentEndDate,
  currentRiskLevel,
  afterTreatmentRiskLevel,
}) => {
  const handleDownload = () => {
    const data = {
      date: formatDate(assessmentDate),
      colonyInfo: {
        beekeepingType,
        timePerHive,
        hiveType,
        frames,
        geneticResistance,
        treatmentAvailable,
        infestationLevel,
      },
      reference,
      riskLevels: {
        current: currentRiskLevel,
        afterTreatment: afterTreatmentRiskLevel,
      },
      projections: {
        currentInfestation,
        projectedInfestation,
        treatmentStart: formatDate(treatmentStartDate),
        treatmentEnd: formatDate(treatmentEndDate),
        assessmentDate: formatDate(assessmentDate),
      },
      recommendedTreatments: recommendedTreatments.map(treatment => ({
        name: treatment.name,
        type: treatment.type || '',
        effectiveness: treatment.effectiveness || 0,
        applicationTime: typeof treatment.applicationTime === 'number' ? treatment.applicationTime : parseInt(treatment.applicationTime) || 0,
        description: treatment.description || '',
        cost: treatment.cost || '',
        availability: treatment.availability || '',
        restrictions: treatment.restrictions || '',
        advantages: treatment.advantages || [],
        disadvantages: treatment.disadvantages || [],
        temperatureMin: treatment.temperatureMin,
        temperatureMax: treatment.temperatureMax,
        activeSubstance: treatment.activeSubstance,
        duration: typeof treatment.duration === 'string' ? parseInt(treatment.duration) || 0 : treatment.duration || 0,
        environmentalPrecautions: treatment.environmentalPrecautions || ''
      }))
    };

    downloadPDF(data);
  };

  return (
    <Button
      variant="contained"
      color="primary"
      onClick={handleDownload}
      sx={{ mt: 2 }}
    >
      Download Treatment Report
    </Button>
  );
};

export default TreatmentReportPDF;
