Refactor user and session migrations to use UUIDs; update DatabaseSeeder for test user creation; enhance LetterController with search functionality and API route protection

This commit is contained in:
NoBody313
2025-03-24 11:26:00 +07:00
parent 6d431d9610
commit e7477e204f
9 changed files with 559 additions and 127 deletions
+36 -1
View File
@@ -33,6 +33,7 @@ class LetterController extends Controller
{
try {
$letters = Letter::with('fileUpload')
->latest() // Sort by latest created_at
->get()
->map(fn($letter) => $this->formatLetterResponse($letter));
@@ -49,6 +50,40 @@ class LetterController extends Controller
}
}
/**
* Search letters based on given criteria
*
* @param Request $request
* @return JsonResponse
*/
public function search(Request $request): JsonResponse
{
try {
$query = Letter::with('fileUpload');
// Search by NIM
if ($request->has('nim')) {
$query->where('nomor_induk_mahasiswa', 'like', '%' . $request->nim . '%');
}
$letters = $query
->latest() // Always sort by latest
->get()
->map(fn($letter) => $this->formatLetterResponse($letter));
return response()->json([
'success' => true,
'data' => $letters
]);
} catch (Exception $e) {
return response()->json([
'success' => false,
'message' => 'Error searching letters',
'error' => $e->getMessage()
], 500);
}
}
/**
* Store a newly created letter
*
@@ -69,7 +104,7 @@ class LetterController extends Controller
'tahun_ajaran' => 'required|string',
'start_date' => 'required|date',
'completion_date' => 'required|date',
'lampiran' => 'nullable|file|mimes:pdf,jpg,png|max:2048', // Max 2MB
'lampiran' => 'nullable|file|mimes:pdf,jpg,png|max:2048',
]);
// Create letter with UUID and optional fields