88 lines
3.1 KiB
PHP
88 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\PbgTaskApplicationTypes;
|
|
use App\Enums\PbgTaskStatus;
|
|
use App\Http\Resources\TaskAssignmentsResource;
|
|
use App\Models\PbgTask;
|
|
use App\Models\TaskAssignment;
|
|
use Illuminate\Http\Request;
|
|
|
|
class QuickSearchController extends Controller
|
|
{
|
|
public function index(){
|
|
return view("quick-search.index");
|
|
}
|
|
|
|
public function search_result(Request $request){
|
|
$keyword = $request->get("keyword");
|
|
|
|
return view('quick-search.result', compact('keyword'));
|
|
}
|
|
|
|
public function quick_search_datatable(Request $request)
|
|
{
|
|
try {
|
|
$query = PbgTask::orderBy('id', 'desc');
|
|
|
|
if ($request->filled('search')) {
|
|
$search = $request->get('search');
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('name', 'LIKE', "%$search%")
|
|
->orWhere('registration_number', 'LIKE', "%$search%")
|
|
->orWhere('address', 'LIKE', "%$search%")
|
|
->orWhere('document_number', 'LIKE', "%$search%");
|
|
});
|
|
}
|
|
|
|
return response()->json($query->paginate());
|
|
} catch (\Throwable $e) {
|
|
\Log::error("Error fetching datatable data: " . $e->getMessage());
|
|
return response()->json([
|
|
'message' => 'Terjadi kesalahan saat mengambil data.',
|
|
'error' => $e->getMessage(),
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
try {
|
|
$data = PbgTask::with([
|
|
'pbg_task_retributions',
|
|
'pbg_task_index_integrations',
|
|
'pbg_task_retributions.pbg_task_prasarana'
|
|
])->findOrFail($id);
|
|
|
|
$statusOptions = PbgTaskStatus::getStatuses();
|
|
$applicationTypes = PbgTaskApplicationTypes::labels();
|
|
|
|
return view("quick-search.detail", compact("data", 'statusOptions', 'applicationTypes'));
|
|
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
|
|
\Log::warning("PbgTask with ID {$id} not found.");
|
|
return redirect()->route('quick-search.index')->with('error', 'Data tidak ditemukan.');
|
|
} catch (\Throwable $e) {
|
|
\Log::error("Error in QuickSearchController@show: " . $e->getMessage());
|
|
return response()->view('pages.404', [], 500); // Optional: create `resources/views/errors/500.blade.php`
|
|
}
|
|
}
|
|
|
|
public function task_assignments(Request $request, $uuid){
|
|
try{
|
|
$query = TaskAssignment::query()
|
|
->where('pbg_task_uid', $uuid)
|
|
->orderBy('id', 'desc');
|
|
|
|
if ($request->filled('search')) {
|
|
$query->where('name', 'like', "%{$request->get('search')}%")
|
|
->orWhere('email', 'like', "%{$request->get('search')}%");
|
|
}
|
|
|
|
return TaskAssignmentsResource::collection($query->paginate(config('app.paginate_per_page', 50)));
|
|
}catch(\Exception $exception){
|
|
return response()->json(['message' => $exception->getMessage()], 500);
|
|
}
|
|
}
|
|
}
|