import { AlertItem } from "../Shared/Alert";

const validateMatchSentences = (
    sentences: {id: string; sentence: string; solution: string;}[],
    setAlerts: React.Dispatch<React.SetStateAction<AlertItem[]>>
): boolean => {
    let hasErrors = false;
    
    const emptySentences = sentences.filter(s => !s.sentence.trim());
    if (emptySentences.length > 0) {
        hasErrors = true;
        setAlerts(prev => {
            const filteredAlerts = prev.filter(alert => !alert.tag?.startsWith('empty-sentence'));
            return [...filteredAlerts, ...emptySentences.map(s => ({
                variant: "error" as const,
                tag: `empty-sentence-${s.id}`,
                description: `Heading ${s.id} is empty`
            }))];
        });
    } else {
        setAlerts(prev => prev.filter(alert => !alert.tag?.startsWith('empty-sentence')));
    }

    const unmatchedSentences = sentences.filter(s => !s.solution);
    if (unmatchedSentences.length > 0) {
        hasErrors = true;
        setAlerts(prev => {
            const filteredAlerts = prev.filter(alert => !alert.tag?.startsWith('unmatched-sentence'));
            return [...filteredAlerts, ...unmatchedSentences.map(s => ({
                variant: "error" as const,
                tag: `unmatched-sentence-${s.id}`,
                description: `Heading ${s.id} has no paragraph selected`
            }))];
        });
    } else {
        setAlerts(prev => prev.filter(alert => !alert.tag?.startsWith('unmatched-sentence')));
    }

    return !hasErrors;
};

export default validateMatchSentences;
