Merge remote-tracking branch 'origin/feature/senior-officer' into staging

This commit is contained in:
Daeng Deni Mardaeni
2025-03-14 09:24:04 +07:00
7 changed files with 293 additions and 162 deletions

View File

@@ -73,7 +73,8 @@ class ActivityController extends Controller
public function updateTeamAssingment(Request $request)
{
try {
// Validasi input
// dd($request->all());
$validatedData = $request->validate([
'id' => 'required|integer', // penilaian_id
'team_member_id' => 'nullable|integer',
@@ -81,6 +82,7 @@ class ActivityController extends Controller
'permohonan_id' => 'required|integer',
'user_id' => 'required|integer',
'team_id' => 'required|integer',
'penugasan' => 'required|string',
], [
'team_member_id.required_without' => 'Field team harus diisi.',
'.required_without' => 'Field harus diisi.',
@@ -93,6 +95,7 @@ class ActivityController extends Controller
$permohonanId = $validatedData['permohonan_id'];
$userId = $validatedData['user_id'];
$teamId = $validatedData['team_id'];
$penugasan = $validatedData['penugasan'];
// Cek apakah permohonan ada
$permohonan = Permohonan::findOrFail($permohonanId);
@@ -106,55 +109,101 @@ class ActivityController extends Controller
// }
// Ambil tim berdasarkan penilaian_id dan user_id
$teams = PenilaianTeam::where('penilaian_id', $penilaianId)
if ($penugasan === 'sama') {
$teams = PenilaianTeam::where('penilaian_id', $penilaianId)
->where('user_id', $userId)
->get();
// Cek apakah tim ditemukan
if ($teams->isEmpty()) {
return response()->json([
'status' => 'error',
'message' => 'Data tim tidak ditemukan.',
]);
}
// Cek apakah tim ditemukan
if ($teams->isEmpty()) {
return response()->json([
'status' => 'error',
'message' => 'Data tim tidak ditemukan.',
]);
}
// Mulai transaksi
DB::beginTransaction();
$updated = false;
// Mulai transaksi
DB::beginTransaction();
$updated = false;
$status_permohonan = $permohonan->status;
// 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;
// Proses update berdasarkan region_id
if ($regionId) {
foreach ($teams as $team) {
if ($team->role === 'surveyor') {
$team->update([
'team_id' => $regionId,
'user_id' => null,
'status' => $status_permohonan,
]);
$permohonan->update([
'status' => 'reassign'
]);
$updated = true;
}
if ($team->role === 'penilai') {
$team->update([
'team_id' => $regionId,
'user_id' => null,
'status' => $status_permohonan
]);
$permohonan->update([
'status' => 'reassign',
'region_id' => $regionId,
]);
$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;
}
}
}
}
// 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 ($penugasan === 'surveyor' || $penugasan === 'penilai') {
$teams = PenilaianTeam::where('penilaian_id', $penilaianId)
->where('user_id', $userId)
->where('role', $penugasan)
->first();
// Cek apakah tim ditemukan
if (!$teams) {
return response()->json([
'status' => 'error',
'message' => 'Data tim tidak ditemukan.',
]);
}
// Mulai transaksi
DB::beginTransaction();
$updated = false;
// Proses update berdasarkan region_id
if ($regionId) {
$teams->update([
'team_id' => $regionId,
'user_id' => null
]);
$permohonan->update([
'status' => $status_permohonan,
'region_id' => $regionId,
]);
$updated = true;
}
// Proses update berdasarkan team_member_id
if ($teamMemberId) {
$teams->update(['user_id' => $teamMemberId]);
$updated = true;
}
}
@@ -306,7 +355,7 @@ class ActivityController extends Controller
}
// Filter for specific roles
if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) {
if (in_array($userRole, ['surveyor', 'penilai'])) {
$query->whereHas('penilaian.userPenilai', function ($q) use ($user) {
$q->where('user_id', $user->id);
});
@@ -451,17 +500,17 @@ class ActivityController extends Controller
$hari = $hariPaparan = 0;
if($type_report == "sederhana"){
if ($type_report == "sederhana") {
$hari = 2;
$item->paparan = 'Tidak Ada';
} else{
} else {
if ($plafond == '< 2M') {
$item->paparan = 'Tidak Ada';
$hari = 3;
}else if($plafond == '2 M - 5 M'){
} elseif ($plafond == '2 M - 5 M') {
$hari = 3;
$hariPaparan = 2;
}else {
} else {
$hari = 5;
$hariPaparan = 3;
}
@@ -495,7 +544,7 @@ class ActivityController extends Controller
if (!$tanggalMulai instanceof Carbon) {
$tanggalMulai = Carbon::parse($tanggalMulai);
}
$hariKerjaBerikutnya = hitungHariKerja($tanggalMulai->toDateString(),$tanggalMulai->copy()->addDays(1));
$hariKerjaBerikutnya = hitungHariKerja($tanggalMulai->toDateString(), $tanggalMulai->copy()->addDays(1));
$hariKerjaBerikutnya = max($hariKerjaBerikutnya, 1);
$tanggalMulai = $tanggalMulai->copy()->addDays($hariKerjaBerikutnya);

View File

@@ -558,6 +558,7 @@ class PenilaiController extends Controller
$query = Permohonan::query();
// Apply search filter if provided
$query = $query->orderBy('nomor_registrasi', 'desc');
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$columns = ['debiture.name', 'branch.name', 'user.name', 'tujuanPenilaian.name', 'jenisfasilitasKredit.name'];
@@ -575,7 +576,7 @@ class PenilaiController extends Controller
if (!Auth::user()->hasRole('administrator')) {
$query->whereHas('penilaian.userPenilai', function ($q) {
$q
->where('role', 'penilai')
->where('role', ['surveyor','penilai'])
->where('user_id', Auth::user()->id);
});
}

View File

@@ -253,7 +253,7 @@ class PenilaianController extends Controller
$teamPenilai = $userTeam->flatMap(function ($team) {
return $team->teamsUsers->filter(function ($teamUser) {
return $teamUser->user->roles->contains(function ($role) {
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'administrator';
return $role->name === 'surveyor' || $role->name === 'penilai' || $role->name === 'administrator';
});
})->map(function ($teamUser) {
return $teamUser->user;
@@ -279,6 +279,8 @@ class PenilaianController extends Controller
$penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get();
}
// dd($penilaianTeam);
return view(
'lpj::penilaian.form',
compact(
@@ -347,8 +349,9 @@ class PenilaianController extends Controller
$query->whereIn('status', ['registered', 'registrasi-final', 'reassign']);
// Filter berdasarkan role
if (Auth::user()->roles[0]->name !== 'administrator') {
$query->whereHas('region.teams.teamsUsers.user', function ($q) {
$q->where('id', Auth::user()->id);
});
@@ -376,7 +379,8 @@ class PenilaianController extends Controller
$filteredRecords = $query->count();
$data = $query->with(
['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisPenilaian', 'region.teams.teamsUsers.user'],
['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisPenilaian', 'region.teams.teamsUsers.user',
]
)->get();
$pageCount = ceil($totalRecords / $size);
@@ -738,8 +742,8 @@ class PenilaianController extends Controller
'tujuanPenilaian',
'nilaiPlafond',
'penilaian.userPenilai' => function ($q) {
$q->where('role', 'penilai')->with(['user', 'team.regions']);
},
$q->where('role', 'penilai')->with(['user', 'team.regions']);
},
'penilai',
'approveSo',
'approveEo',
@@ -900,7 +904,7 @@ class PenilaianController extends Controller
public function revisiLaporan(Request $request, $id)
{
// dd($id);
if($request->dataHeader=='Paparan' || $request->dataHeader=='Freze SLA'){
if ($request->dataHeader == 'Paparan' || $request->dataHeader == 'Freze SLA') {
$authorization = Authorization::find($id);
$permohonan = Permohonan::find($authorization->permohonan_id);
} else {
@@ -914,13 +918,13 @@ class PenilaianController extends Controller
}
$status = 'revisi-paparan';
}else if($permohonan->status === 'request-freeze'){
} elseif ($permohonan->status === 'request-freeze') {
if ($authorization) {
$authorization->delete();
}
$status = 'reject-freeze';
}elseif ($permohonan->status === 'proses-laporan' && $userRole === 'EO Appraisal') {
} elseif ($permohonan->status === 'proses-laporan' && $userRole === 'EO Appraisal') {
$permohonan->update([
'approval_so' => 0,
'approval_so_at' => null,

View File

@@ -2008,7 +2008,7 @@ class SurveyorController extends Controller
}
$query = Permohonan::query();
$query = $query->orderBy('nomor_registrasi', 'desc');
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
@@ -2028,7 +2028,7 @@ class SurveyorController extends Controller
if (!Auth::user()->hasRole('administrator')) {
$query->whereHas('penilaian.userPenilai', function ($q) {
$q->where('user_id', Auth::user()->id);
$q->where('role', 'surveyor');
$q->where('role', ['surveyor', 'penilai']);
});
}