<?php

declare(strict_types=1);

namespace App\Http\Controllers\Api;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB;

class MobileController extends Controller
{
    /**
     * Cihazın push bildirim token'ını kaydet veya güncelle.
     * iOS APNs ve Android FCM token'larını destekler.
     */
    public function registerPushToken(Request $request): JsonResponse
    {
        $validated = $request->validate([
            'token' => ['required', 'string', 'max:500'],
            'platform' => ['required', 'in:ios,android'],
            'device_info' => ['nullable', 'array'],
        ]);

        DB::table('mobile_push_tokens')->updateOrInsert(
            [
                'user_id' => auth()->id(),
                'token' => $validated['token'],
            ],
            [
                'platform' => $validated['platform'],
                'device_info' => json_encode($validated['device_info']),
                'last_used_at' => now(),
                'updated_at' => now(),
                'created_at' => now(),
            ]
        );

        return response()->json(['ok' => true]);
    }

    /**
     * Çıkış yapıldığında veya bildirimler devre dışı bırakıldığında token'ı sil.
     */
    public function unregisterPushToken(Request $request): JsonResponse
    {
        $request->validate([
            'token' => ['required', 'string', 'max:500'],
        ]);

        DB::table('mobile_push_tokens')
            ->where('user_id', auth()->id())
            ->where('token', $request->input('token'))
            ->delete();

        return response()->json(['ok' => true]);
    }
}
