"""
Messenger API - Data Helpers.

JSON-based file storage for contacts, conversations, messages, and groups.
"""

import json
from typing import List, Dict
from pathlib import Path

# Datenspeicherung (JSON-basiert fuer einfache Persistenz)
DATA_DIR = Path(__file__).parent / "data" / "messenger"
DATA_DIR.mkdir(parents=True, exist_ok=True)

CONTACTS_FILE = DATA_DIR / "contacts.json"
CONVERSATIONS_FILE = DATA_DIR / "conversations.json"
MESSAGES_FILE = DATA_DIR / "messages.json"
GROUPS_FILE = DATA_DIR / "groups.json"


def load_json(filepath: Path) -> List[Dict]:
    """Laedt JSON-Daten aus Datei."""
    if not filepath.exists():
        return []
    try:
        with open(filepath, "r", encoding="utf-8") as f:
            return json.load(f)
    except Exception:
        return []


def save_json(filepath: Path, data: List[Dict]):
    """Speichert Daten in JSON-Datei."""
    with open(filepath, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)


def get_contacts() -> List[Dict]:
    return load_json(CONTACTS_FILE)


def save_contacts(contacts: List[Dict]):
    save_json(CONTACTS_FILE, contacts)


def get_conversations() -> List[Dict]:
    return load_json(CONVERSATIONS_FILE)


def save_conversations(conversations: List[Dict]):
    save_json(CONVERSATIONS_FILE, conversations)


def get_messages() -> List[Dict]:
    return load_json(MESSAGES_FILE)


def save_messages(messages: List[Dict]):
    save_json(MESSAGES_FILE, messages)


def get_groups() -> List[Dict]:
    return load_json(GROUPS_FILE)


def save_groups(groups: List[Dict]):
    save_json(GROUPS_FILE, groups)


# ==========================================
# DEFAULT TEMPLATES
# ==========================================

DEFAULT_TEMPLATES = [
    {
        "id": "1",
        "name": "Terminbestaetigung",
        "content": "Vielen Dank fuer Ihre Terminanfrage. Ich bestaetige den Termin am [DATUM] um [UHRZEIT]. Bitte geben Sie mir Bescheid, falls sich etwas aendern sollte.",
        "category": "termin"
    },
    {
        "id": "2",
        "name": "Hausaufgaben-Info",
        "content": "Zur Information: Die Hausaufgaben fuer diese Woche umfassen [THEMA]. Abgabetermin ist [DATUM]. Bei Fragen stehe ich gerne zur Verfuegung.",
        "category": "hausaufgaben"
    },
    {
        "id": "3",
        "name": "Entschuldigung bestaetigen",
        "content": "Ich bestaetige den Erhalt der Entschuldigung fuer [NAME] am [DATUM]. Die Fehlzeiten wurden entsprechend vermerkt.",
        "category": "entschuldigung"
    },
    {
        "id": "4",
        "name": "Gespraechsanfrage",
        "content": "Ich wuerde gerne einen Termin fuer ein Gespraech mit Ihnen vereinbaren, um [THEMA] zu besprechen. Waeren Sie am [DATUM] um [UHRZEIT] verfuegbar?",
        "category": "gespraech"
    },
    {
        "id": "5",
        "name": "Krankmeldung bestaetigen",
        "content": "Vielen Dank fuer Ihre Krankmeldung fuer [NAME]. Ich wuensche gute Besserung. Bitte reichen Sie eine schriftliche Entschuldigung nach, sobald Ihr Kind wieder gesund ist.",
        "category": "krankmeldung"
    }
]
