import { Injectable } from '@angular/core';

export interface ValidationMessage {
  field: string;
  message: string;
}

@Injectable({
  providedIn: 'root',
})
export class ValidationService {
  private messages: ValidationMessage[] = [];

  constructor() {}

  /**
   * Fügt Validierungsnachrichten hinzu oder aktualisiert bestehende
   * @param messages Array von Validierungsnachrichten
   */
  setMessages(messages: ValidationMessage[]): void {
    this.messages = messages;
  }

  /**
   * Löscht alle Validierungsmeldungen
   */
  clearMessages(): void {
    this.messages = [];
  }

  /**
   * Prüft, ob für ein bestimmtes Feld eine Validierungsmeldung existiert
   * @param field Name des Feldes
   * @returns true, wenn eine Meldung existiert
   */
  hasMessage(field: string): boolean {
    return this.messages.some(message => message.field === field);
  }

  /**
   * Gibt die Validierungsmeldung für ein bestimmtes Feld zurück
   * @param field Name des Feldes
   * @returns ValidationMessage oder null, wenn keine Meldung existiert
   */
  getMessage(field: string): ValidationMessage | null {
    return this.messages.find(message => message.field === field) || null;
  }

  /**
   * Hilfsmethode zur Verarbeitung von API-Fehlermeldungen
   * @param error API-Fehler mit message-Array
   */
  handleApiError(error: any): void {
    if (error && error.message && Array.isArray(error.message)) {
      this.setMessages(error.message);
    } else {
      this.clearMessages();
    }
  }
}
