perbaikan team activity di so
This commit is contained in:
@@ -4,6 +4,7 @@ namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
@@ -47,38 +48,97 @@ class ActivityController extends Controller
|
||||
|
||||
$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))
|
||||
->when($teamId, fn($q) => $q->where('id', $teamId));
|
||||
$q->when($regionId, fn ($q) => $q->where('regions_id', $regionId))
|
||||
->when($teamId, fn ($q) => $q->where('id', $teamId));
|
||||
})
|
||||
->where('user_id', '!=', $user->id)
|
||||
->whereHas('user.roles', fn($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai']))
|
||||
->whereHas('user.roles', fn ($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai']))
|
||||
->get();
|
||||
|
||||
return view('lpj::activity.progres_activity.index', compact('teamsActivity'));
|
||||
}
|
||||
|
||||
|
||||
function updateTeamAssingment(Request $request) {
|
||||
|
||||
public function updateTeamAssingment(Request $request)
|
||||
{
|
||||
try {
|
||||
$id = $request->input('id');
|
||||
$user = PenilaianTeam::where('penilaian_id', $id)->get();
|
||||
if ($user) {
|
||||
foreach ($user as $item) {
|
||||
if($item->role == 'surveyor') {
|
||||
$item->update(['user_id' => $request->surveyor_id]);
|
||||
}
|
||||
}
|
||||
return redirect()->route('activity.progres.index')->with('success', 'Surveyor berhasil diganti');
|
||||
// Validasi input
|
||||
$request->validate([
|
||||
'id' => 'required|integer', // penilaian_id
|
||||
'team_member_id' => 'required|integer',
|
||||
'permohonan_id' => 'required|integer',
|
||||
'user_id' => 'required|integer',
|
||||
]);
|
||||
|
||||
$penilaianId = $request->input('id');
|
||||
$teamMemberId = $request->input('team_member_id');
|
||||
$permohonanId = $request->input('permohonan_id');
|
||||
$user_id = $request->input('user_id');
|
||||
|
||||
// Cek apakah permohonan ada
|
||||
$permohonan = Permohonan::findOrFail($permohonanId);
|
||||
|
||||
// Validasi status permohonan
|
||||
if ($permohonan->status != 'assign') {
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Tidak bisa ganti tim, permohonan ini sudah mengatur jadwal.',
|
||||
]);
|
||||
}
|
||||
|
||||
// Ambil tim berdasarkan penilaian_id dan user_id
|
||||
$teams = PenilaianTeam::where('penilaian_id', $penilaianId)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
// Cek apakah tim ditemukan
|
||||
if ($teams->isEmpty()) {
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Data tim tidak ditemukan.',
|
||||
]);
|
||||
}
|
||||
|
||||
// Flag untuk mendeteksi perubahan
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
if ($updated) {
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Data tim berhasil diperbarui.',
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Tidak ada perubahan yang dilakukan.',
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
return redirect()->route('activity.progres.index')->with('success', $th->getMessage());
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => $th->getMessage(),
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function senior()
|
||||
{
|
||||
return view('lpj::activity.senior_officer.index');
|
||||
@@ -246,7 +306,9 @@ class ActivityController extends Controller
|
||||
'permohonan.debiture',
|
||||
'permohonan.tujuanPenilaian',
|
||||
'permohonan.debiture.documents.jenisJaminan',
|
||||
'userPenilai',
|
||||
'userPenilai' => function ($query) use ($id) {
|
||||
$query->where('user_id', $id);
|
||||
},
|
||||
'permohonan.penilai',
|
||||
'permohonan.approveEo',
|
||||
'permohonan.approveDd',
|
||||
@@ -288,6 +350,73 @@ class ActivityController extends Controller
|
||||
|
||||
// Ambil data dengan pagination
|
||||
$data = $query->skip($offset)->take($size)->get();
|
||||
|
||||
$data = $data->map(function ($item) {
|
||||
$jeniAsset = null;
|
||||
$statusPembayaran = trim(strtolower($item->permohonan->status_bayar ?? ''));
|
||||
$tujuanPenilaian = $item->permohonan->tujuanPenilaian->name ?? null;
|
||||
$now = Carbon::now();
|
||||
|
||||
// $plafond = $item->permohonan->nilaiPlafond->name ?? null;
|
||||
// $type_report = $item->permohonan->penilai->type_penilai;
|
||||
|
||||
// $hari = 0;
|
||||
// if ($plafond == '< 1M') {
|
||||
// $item->paparan = 'Tidak Ada';
|
||||
// }else if($plafond == '2 M - 5 M'){
|
||||
// $hari = 2;
|
||||
// }else if($plafond == '5 M - 10 M'){
|
||||
// $hari = 3;
|
||||
// }
|
||||
|
||||
|
||||
if ($item->permohonan && $item->permohonan->debiture) {
|
||||
$jeniAsset = $item->permohonan->debiture->documents->first() ?? null;
|
||||
}
|
||||
|
||||
$hariTambahan = 0;
|
||||
|
||||
if ($tujuanPenilaian == 'RAP') {
|
||||
$hariTambahan = 2;
|
||||
} else {
|
||||
if ($statusPembayaran == 'sudah_bayar') {
|
||||
$hariTambahan = 1; // H+1 untuk yang sudah bayar
|
||||
} else {
|
||||
$hariTambahan = 2; // H+2 untuk yang belum bayar
|
||||
}
|
||||
}
|
||||
|
||||
$tanggalMulai = $item->waktu_penilaian;
|
||||
|
||||
if ($tanggalMulai) {
|
||||
// Konversi string tanggal ke objek Carbon jika belum
|
||||
if (!$tanggalMulai instanceof Carbon) {
|
||||
$tanggalMulai = Carbon::parse($tanggalMulai);
|
||||
}
|
||||
|
||||
// Hitung tanggal selesai berdasarkan hari tambahan
|
||||
$tanggalSelesai = $tanggalMulai->copy()->addDays($hariTambahan);
|
||||
|
||||
// Hitung hari kerja
|
||||
$hariKerja = hitungHariKerja($tanggalMulai->toDateString(), $tanggalSelesai->toDateString());
|
||||
|
||||
// Set due date SLA
|
||||
$dueDateSla = $tanggalMulai->copy()->addDays($hariKerja);
|
||||
|
||||
// Cek apakah sudah melewati due date
|
||||
if ($now->greaterThan($dueDateSla)) {
|
||||
$item->due_date_sla = null;
|
||||
} else {
|
||||
$item->due_date_sla = $dueDateSla->toDateString();
|
||||
}
|
||||
} else {
|
||||
$item->due_date_sla = null;
|
||||
|
||||
}
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
$filteredRecords = $data->count();
|
||||
$pageCount = ceil($totalRecords / $size);
|
||||
|
||||
|
||||
@@ -709,6 +709,7 @@ class PenilaiController extends Controller
|
||||
'asuransi_luas_bangunan' => $request->input('asuransi_luas_bangunan'),
|
||||
'asuransi_nilai_1' => $request->input('asuransi_nilai_1'),
|
||||
'asuransi_nilai_2' => $request->input('asuransi_nilai_2'),
|
||||
'keterangan_penilai' => $request->input('keterangan_penilai') ?? [],
|
||||
];
|
||||
|
||||
$npwData = [];
|
||||
|
||||
@@ -1972,7 +1972,8 @@ class SurveyorController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
$query->whereRaw('LOWER(status) = ?', ['assign']);
|
||||
$query->whereRaw('LOWER(status) IN (?, ?)', ['assign', 'survey']);
|
||||
|
||||
|
||||
if (!Auth::user()->hasRole('administrator')) {
|
||||
$query->whereHas('penilaian.userPenilai', function ($q) {
|
||||
|
||||
Reference in New Issue
Block a user