diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 12bd5b3..496f1b4 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -7,9 +7,12 @@ use Exception; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; +use Modules\Lpj\Models\Penilaian; +use Modules\Lpj\Models\TeamsUsers; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Exports\PermohonanExport; use Maatwebsite\Excel\Facades\Excel; + class ActivityController extends Controller { public $user; @@ -26,6 +29,34 @@ class ActivityController extends Controller * Show the form for creating a new resource. */ + + public function progres_activity() + { + // Ambil user yang sedang login + $user = auth()->user(); + $roles = $user->load('roles'); + $regionId = null; + + // Cek apakah user memiliki role 'senior officer' + if ($roles->roles->pluck('name')->contains('senior officer')) { + $regionId = TeamsUsers::with('team.regions') + ->where('user_id', $user->id) + ->first()?->team->regions_id; + } + + $teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions']) + ->whereHas('team', function ($q) use ($regionId) { + if ($regionId) { + $q->where('regions_id', $regionId); + } + }) + ->where('user_id', '!=', $user->id) + ->get(); + + return view('lpj::activity.progres_activity.index', compact('teamsActivity')); + } + + public function senior() { return view('lpj::activity.senior_officer.index'); @@ -155,7 +186,61 @@ class ActivityController extends Controller public function export() { - return Excel::download(new PermohonanExport, 'activity.xlsx'); + return Excel::download(new PermohonanExport(), 'activity.xlsx'); + } + + + + + public function dataTablesForActivity(Request $request, $id) + { + // Query Penilaian dengan relasi yang diperlukan + $query = Penilaian::with(['permohonan', 'permohonan.debiture', 'permohonan.tujuanPenilaian']) + ->where(function($q) use ($id) { + $q->where('surveyor_id', $id) + ->orWhere('penilaian_id', $id) + ->orWhere('penilai_surveyor_id', $id); + }); + + // Filter pencarian + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', "%$search%") + ->orWhere('status', 'LIKE', "%$search%"); + }); + } + + // Sorting + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Hitung total records + $totalRecords = $query->count(); + + // Pagination + $size = $request->get('size', 10); + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; + + // Ambil data dengan pagination + $data = $query->skip($offset)->take($size)->get(); + $filteredRecords = $data->count(); + $pageCount = ceil($totalRecords / $size); + + // Return data dalam bentuk JSON + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $page, + 'totalCount' => $totalRecords, + 'data' => $data + ]); } } diff --git a/app/Models/TeamsUsers.php b/app/Models/TeamsUsers.php index a47cae9..b94df81 100644 --- a/app/Models/TeamsUsers.php +++ b/app/Models/TeamsUsers.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Modules\Lpj\Database\Factories\TeamsUsersFactory; use Modules\Usermanagement\Models\User; use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\Penilaian; class TeamsUsers extends Model { @@ -30,4 +31,10 @@ class TeamsUsers extends Model { return $this->belongsTo(User::class, 'user_id', 'id'); } + + public function penilaian() + { + return $this->belongsTo(Penilaian::class, 'teams_id', 'id'); + } + } diff --git a/module.json b/module.json index bca6ad3..1c7fd40 100644 --- a/module.json +++ b/module.json @@ -100,7 +100,7 @@ "attributes": [], "permission": "", "roles": [ - "Administrator" + "senior officer" ] }, { @@ -115,14 +115,14 @@ ] }, { - "title": "Activity Progress", - "path": "activity", + "title": "Team Activity", + "path": "activity.progres", "icon": "ki-filled ki-questionnaire-tablet text-lg", "classes": "", "attributes": [], "permission": "", "roles": [ - "Administrator" + "senior officer" ] }, { diff --git a/resources/views/activity/activitydetail.blade.php b/resources/views/activity/activitydetail.blade.php index df4b3e2..097fd25 100644 --- a/resources/views/activity/activitydetail.blade.php +++ b/resources/views/activity/activitydetail.blade.php @@ -81,6 +81,9 @@ {{ strtolower($status->name) == strtolower($permohonan->status) ? 'btn-outline btn-primary' : 'bg-gray-100 border-gray-300 text-gray-600' }} size-9"> @switch(strtolower($status->name)) + @case('preregister') + + @break @case('order') @break diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php new file mode 100644 index 0000000..7f824da --- /dev/null +++ b/resources/views/activity/progres_activity/index.blade.php @@ -0,0 +1,244 @@ +@extends('layouts.main') +@section('breadcrumbs') + {{ Breadcrumbs::render('activity.progres') }} +@endsection +@section('content') + @push('styles') + + @endpush + +