diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php
index 2a581e6..cc300a7 100644
--- a/app/Http/Controllers/ActivityController.php
+++ b/app/Http/Controllers/ActivityController.php
@@ -14,6 +14,8 @@ use Modules\Lpj\Models\PenilaianTeam;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Exports\PermohonanExport;
use Maatwebsite\Excel\Facades\Excel;
+use Modules\Lpj\Models\Teams;
+use Illuminate\Support\Facades\DB;
class ActivityController extends Controller
{
@@ -46,6 +48,7 @@ class ActivityController extends Controller
$teamId = $userTeam?->teams_id;
}
+
$teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions', 'user.roles'])
->whereHas('team', function ($q) use ($regionId, $teamId) {
$q->when($regionId, fn ($q) => $q->where('regions_id', $regionId))
@@ -55,7 +58,15 @@ class ActivityController extends Controller
->whereHas('user.roles', fn ($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai']))
->get();
- return view('lpj::activity.progres_activity.index', compact('teamsActivity'));
+ $teamId = is_array($teamId) ? $teamId : [$teamId];
+
+ $teamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])->whereNotIn(
+ 'id',
+ $teamId
+ )->get();
+
+
+ return view('lpj::activity.progres_activity.index', compact('teamsActivity', 'teamPenilai'));
}
@@ -63,23 +74,31 @@ class ActivityController extends Controller
{
try {
// Validasi input
- $request->validate([
+ $validatedData = $request->validate([
'id' => 'required|integer', // penilaian_id
- 'team_member_id' => 'required|integer',
+ 'team_member_id' => 'nullable|integer',
+ 'region_id' => 'nullable|integer',
'permohonan_id' => 'required|integer',
'user_id' => 'required|integer',
+ 'team_id' => 'required|integer',
+ ], [
+ 'team_member_id.required_without' => 'Field team_member_id atau region_id harus diisi.',
+ 'region_id.required_without' => 'Field region_id atau team_member_id harus diisi.',
]);
- $penilaianId = $request->input('id');
- $teamMemberId = $request->input('team_member_id');
- $permohonanId = $request->input('permohonan_id');
- $user_id = $request->input('user_id');
+
+ $penilaianId = $validatedData['id'];
+ $teamMemberId = $validatedData['team_member_id'] ?? null;
+ $regionId = $validatedData['region_id'] ?? null;
+ $permohonanId = $validatedData['permohonan_id'];
+ $userId = $validatedData['user_id'];
+ $teamId = $validatedData['team_id'];
// Cek apakah permohonan ada
$permohonan = Permohonan::findOrFail($permohonanId);
// Validasi status permohonan
- if ($permohonan->status != 'assign') {
+ if ($permohonan->status !== 'assign') {
return response()->json([
'status' => 'error',
'message' => 'Tidak bisa ganti tim, permohonan ini sudah mengatur jadwal.',
@@ -88,7 +107,7 @@ class ActivityController extends Controller
// Ambil tim berdasarkan penilaian_id dan user_id
$teams = PenilaianTeam::where('penilaian_id', $penilaianId)
- ->where('user_id', $user_id)
+ ->where('user_id', $userId)
->get();
// Cek apakah tim ditemukan
@@ -99,39 +118,66 @@ class ActivityController extends Controller
]);
}
- // Flag untuk mendeteksi perubahan
+ // Mulai transaksi
+ DB::beginTransaction();
$updated = false;
- // Proses update berdasarkan role
- foreach ($teams as $team) {
- if ($team->role == 'surveyor') {
- // Jika role-nya surveyor, update user_id menjadi teamMemberId
- $team->user_id = $teamMemberId;
- $team->save();
- $updated = true;
- } elseif ($team->role == 'penilai') {
- // Jika role-nya penilai, update user_id menjadi teamMemberId
- $team->user_id = $teamMemberId;
- $team->save();
- $updated = true;
+ // Proses update berdasarkan region_id
+ if ($regionId) {
+ foreach ($teams as $team) {
+ if ($team->role === 'surveyor') {
+ $team->update([
+ 'team_id' => $regionId,
+ 'user_id' => null]);
+ $permohonan->update([
+ 'status' => 'registered']);
+ $updated = true;
+ }
+
+ if ($team->role === 'penilai') {
+ $team->update([
+ 'team_id' => $regionId,
+ 'user_id' => null,
+ ]);
+ $permohonan->update([
+ 'status' => 'registered',
+ 'region_id' => $regionId,
+ ]);
+ $updated = true;
+ }
}
}
+ // Proses update berdasarkan team_member_id
+ if ($teamMemberId) {
+ foreach ($teams as $team) {
+ if ($team->role === 'surveyor' || $team->role === 'penilai') {
+ $team->update(['user_id' => $teamMemberId]);
+ $updated = true;
+ }
+ }
+ }
+
+
if ($updated) {
+ DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data tim berhasil diperbarui.',
]);
}
+ DB::rollBack();
return response()->json([
'status' => 'error',
'message' => 'Tidak ada perubahan yang dilakukan.',
]);
} catch (\Throwable $th) {
+ // Rollback transaksi jika terjadi error
+ DB::rollBack();
return response()->json([
'status' => 'error',
- 'message' => $th->getMessage(),
+ 'message' => 'Terjadi kesalahan: ' . $th->getMessage(),
], 500);
}
}
@@ -139,6 +185,7 @@ class ActivityController extends Controller
+
public function senior()
{
return view('lpj::activity.senior_officer.index');
diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php
index 05d90f4..5295020 100644
--- a/app/Http/Controllers/PenilaianController.php
+++ b/app/Http/Controllers/PenilaianController.php
@@ -142,7 +142,7 @@ class PenilaianController extends Controller
]);
DB::commit();
- return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
+ return response()->json(['success' => true, 'message' => 'Data berhasil di-assign.'], 200);
} catch (Exception $e) {
DB::rollBack();
@@ -194,7 +194,7 @@ class PenilaianController extends Controller
'status' => 'assign',
]);
DB::commit();
- return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
+ return response()->json(['success' => true, 'message' => 'Data berhasil di-assign.'], 200);
} catch (Exception $e) {
DB::rollBack();
return response()->json(['success' => false, 'error' => $e->getMessage()]);
diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php
index 09c636c..df7f2e7 100644
--- a/resources/views/activity/progres_activity/index.blade.php
+++ b/resources/views/activity/progres_activity/index.blade.php
@@ -249,7 +249,7 @@
paparan: {
title: 'Paparan',
- render: (item, data) => {
+ render: (item, data) => {
if (!data.due_date_sla) {
return `Sudah melewati batas`;
}
@@ -279,7 +279,7 @@
actions: {
title: 'Action',
render: (item, data) => `
-
+
`,
},
@@ -311,68 +311,110 @@
}
-
+ };
+
+ // Mulai dari pemilihan kategori
+ selectCategory();
+ }
+
+
@endpush