import React from 'react';
import { useAuth } from '@/contexts/AuthContext.tsx';
import { useTranslation } from '@/hooks/useI18n.tsx';
import { Organization, SymbiosisMatch, WebIntelligenceResult } from '@/types.ts';
import Button from '@/components/ui/Button.tsx';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card.tsx';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/Tabs.tsx';
import { Text } from '@/components/ui/Typography.tsx';
import AIAnalysisTab from '@/components/organization/AIAnalysisTab.tsx';
import DirectMatchesTab from '@/components/organization/DirectMatchesTab.tsx';
import ProposalList from '@/components/organization/ProposalList.tsx';
import WebIntelTab from '@/components/organization/WebIntelTab.tsx';

interface PartnershipHubProps {
  organization: Organization;
  onSelectOrg: (org: Organization) => void;
  ai: {
    symbiosisResult: SymbiosisMatch[] | null;
    isAnalyzing: boolean;
    analysisError: string | null;
    handleAnalyzeSymbiosis: () => void;
    webIntelResult: WebIntelligenceResult | null;
    isFetchingWebIntel: boolean;
    webIntelError: string | null;
    handleFetchWebIntelligence: () => void;
  };
}

const PartnershipHub = ({ organization, onSelectOrg, ai }: PartnershipHubProps) => {
  const { t } = useTranslation();
  const { isAuthenticated } = useAuth();
  const [activeTab, setActiveTab] = React.useState('proposals');

  return (
    <Card>
      <CardHeader>
        <CardTitle>{t('organizationPage.partnershipHub.title')}</CardTitle>
      </CardHeader>
      <CardContent>
        <Tabs value={activeTab} onValueChange={setActiveTab}>
          <TabsList>
            <TabsTrigger value="proposals">
              {t('organizationPage.partnershipHub.proposals')}
            </TabsTrigger>
            <TabsTrigger value="ai_analysis">
              {t('organizationPage.partnershipHub.aiAnalysis')}
            </TabsTrigger>
            <TabsTrigger value="direct_matches">
              {t('organizationPage.partnershipHub.directMatches')}
            </TabsTrigger>
            <TabsTrigger value="web_intel">
              {t('organizationPage.partnershipHub.webIntel')}
            </TabsTrigger>
          </TabsList>

          <TabsContent value="proposals">
            <ProposalList organization={organization} />
          </TabsContent>

          <TabsContent value="ai_analysis">
            {isAuthenticated ? (
              <AIAnalysisTab
                symbiosisResult={ai.symbiosisResult}
                isAnalyzing={ai.isAnalyzing}
                analysisError={ai.analysisError}
                handleAnalyzeSymbiosis={ai.handleAnalyzeSymbiosis}
                onSelectOrg={onSelectOrg}
              />
            ) : (
              <div className="text-center py-8">
                <p className="text-muted-foreground mb-4">
                  {t('organizationPage.partnershipHub.authRequired')}
                </p>
                <Button onClick={() => (window.location.href = '/login')}>
                  {t('common.login')}
                </Button>
              </div>
            )}
          </TabsContent>

          <TabsContent value="direct_matches">
            <DirectMatchesTab organization={organization} onSelectOrg={onSelectOrg} />
          </TabsContent>

          <TabsContent value="web_intel">
            {isAuthenticated ? (
              <WebIntelTab
                webIntelResult={ai.webIntelResult}
                isFetchingWebIntel={ai.isFetchingWebIntel}
                webIntelError={ai.webIntelError}
                handleFetchWebIntelligence={ai.handleFetchWebIntelligence}
              />
            ) : (
              <div className="text-center py-8">
                <p className="text-muted-foreground mb-4">
                  {t('organizationPage.partnershipHub.authRequired')}
                </p>
                <Button onClick={() => (window.location.href = '/login')}>
                  {t('common.login')}
                </Button>
              </div>
            )}
          </TabsContent>
        </Tabs>
      </CardContent>
    </Card>
  );
};

export default React.memo(PartnershipHub);
