<?php

namespace App\Http\Controllers;

use App\Services\ChurchToolsService;
use CTApi\Exceptions\CTConnectException;
use CTApi\Exceptions\CTPermissionException;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Log;

class SyncController extends Controller
{
    public function sync(ChurchToolsService $service): RedirectResponse
    {
        try {
            $service->sync();

            return back()->with('success', 'Daten wurden aktualisiert');
        } catch (CTPermissionException $e) {
            Log::error('CTS Sync: Authentifizierungsfehler', [
                'nachricht' => $e->getMessage(),
                'exception_klasse' => $e::class,
            ]);

            return back()->with('error', 'Sync fehlgeschlagen: Authentifizierung abgelehnt. Bitte prüfe den API-Token in der .env Datei.');
        } catch (CTConnectException $e) {
            Log::error('CTS Sync: Verbindungsfehler', [
                'nachricht' => $e->getMessage(),
                'exception_klasse' => $e::class,
            ]);

            return back()->with('error', 'Sync fehlgeschlagen: Verbindung zu ChurchTools nicht möglich. Bitte prüfe die URL und Netzwerkverbindung.');
        } catch (\Throwable $e) {
            Log::error('CTS Sync: Unerwarteter Fehler', [
                'nachricht' => $e->getMessage(),
                'exception_klasse' => $e::class,
            ]);

            return back()->with('error', 'Sync fehlgeschlagen: '.$e->getMessage());
        }
    }
}
