MIF_E31230910_MP-HRIS-WEB/app/Http/Controllers/Api/NotifikasiApiController.php

67 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Helpers\ApiResponse;
use App\Models\Notifikasi;
use App\Models\DeviceToken;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class NotifikasiApiController extends Controller
{
public function index(Request $request)
{
$notifikasi = Notifikasi::forUser(Auth::id())
->whereNotIn('tipe', ['training'])
->orderBy('created_at', 'desc')
->paginate(20);
return ApiResponse::success($notifikasi);
}
public function unreadCount()
{
$count = Notifikasi::forUser(Auth::id())
->whereNotIn('tipe', ['training'])
->unread()
->count();
return ApiResponse::success(['count' => $count]);
}
public function markAsRead($id)
{
$notif = Notifikasi::where('id_user', Auth::id())->findOrFail($id);
$notif->update(['is_read' => true]);
return ApiResponse::success(null, 'Notifikasi ditandai sudah dibaca.');
}
public function markAllAsRead()
{
Notifikasi::forUser(Auth::id())
->whereNotIn('tipe', ['training'])
->unread()
->update(['is_read' => true]);
return ApiResponse::success(null, 'Semua notifikasi ditandai sudah dibaca.');
}
public function saveDeviceToken(Request $request)
{
$request->validate([
'fcm_token' => 'required|string',
'device_type' => 'nullable|in:android,ios',
]);
DeviceToken::updateOrCreate(
['fcm_token' => $request->fcm_token],
[
'id_user' => Auth::id(),
'device_type' => $request->device_type ?? 'android',
]
);
return ApiResponse::success(null, 'Device token berhasil disimpan.');
}
}