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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user