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

This commit is contained in:
Daeng Deni Mardaeni
2025-02-28 09:53:28 +07:00
20 changed files with 906 additions and 907 deletions

View File

@@ -275,15 +275,26 @@ class PenilaiController extends Controller
]
);
if ($request->hasFile('file_paparan')) {
// Menyimpan atau memperbarui data Penilai
$penilai = Penilai::updateOrCreate(
[
'permohonan_id' => $request->permohonanId,
'dokument_id' => $request->documentId,
'inspeksi_id' => $request->inspeksiId,
]
);
// Menyimpan fil
$file = $request->file('file_paparan');
$path = $file->store('public/file_paparan');
$penilai = Penilai::where('permohonan_id', $id)->first();
$penilai->file_paparan = $path;
$penilai->save();
}
return redirect()
->route('penilai.show', ['id' => $id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.');
@@ -497,7 +508,7 @@ class PenilaiController extends Controller
});
}
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ?,?)', ['assign','survey-completed', 'proses-laporan', 'paparan', 'proses-paparan','paparan', 'revisi-laporan']);
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ?,?, ?)', ['assign','survey-completed', 'proses-laporan', 'paparan', 'proses-paparan','paparan', 'revisi-laporan','revisi-paparan']);
if (!Auth::user()->hasRole('administrator')) {
$query->whereHas('penilaian.userPenilai', function ($q) {

View File

@@ -494,27 +494,22 @@ class PenilaianController extends Controller
break;
case 'pelaporan':
if (Auth::user()->roles[0]->name === 'senior-officer') {
$permohonan->update([
'status' => 'proses-laporan',
'approval_so' => Auth::user()->id,
'approval_so_at' => now(),
'keterangan' => $request->message,
]);
} elseif (Auth::user()->roles[0]->name === 'EO Appraisal') {
$permohonan->update([
'status' => 'proses-laporan',
'approval_eo' => Auth::user()->id,
'approval_eo_at' => now(),
'keterangan' => $request->message,
]);
} elseif (Auth::user()->roles[0]->name === 'DD Appraisal') {
$permohonan->update([
'status' => 'done',
'approval_dd' => Auth::user()->id,
'approval_dd_at' => now(),
'keterangan' => $request->message,
]);
$role = Auth::user()->roles[0]->name;
$status = 'done';
$approvalField = null;
if ($role === 'senior-officer') {
$approvalField = 'approval_so';
$status = in_array($permohonan->nilai_plafond_id, [3]) ? 'done' : 'proses-laporan';
} elseif ($role === 'EO Appraisal') {
$approvalField = 'approval_eo';
$status = in_array($permohonan->nilai_plafond_id, [2, 1]) ? 'done' : 'proses-laporan';
} elseif ($role === 'DD Appraisal') {
$approvalField = 'approval_dd';
$status = 'done';
}
if ($approvalField) {
$this->updatePermohonan($permohonan, $status, $approvalField, $request->message);
}
break;
@@ -613,6 +608,15 @@ class PenilaianController extends Controller
]);
}
public function updatePermohonan($permohonan, $status, $approvalField, $message)
{
$permohonan->update([
'status' => $status,
$approvalField => Auth::user()->id,
"{$approvalField}_at" => now(),
'keterangan' => $message,
]);
}
public function dataForAuthorization(Request $request, $otorisator)
{
@@ -883,15 +887,48 @@ class PenilaianController extends Controller
public function revisiLaporan(Request $request, $id)
{
$permohonan = Permohonan::findOrFail($id);
$userRole = Auth::user()->roles[0]->name;
if ($permohonan->status === 'proses-paparan' && in_array($userRole, ['EO Appraisal', 'DD Appraisal'])) {
Authorization::delete([
'permohonan_id' => $permohonan->id,
'jenis' => 'paparan',
'request' => 'paparan',
]);
$status = 'revisi-paparan';
} elseif ($permohonan->status === 'proses-laporan' && $userRole === 'EO Appraisal') {
$permohonan->update([
'approve_so' => null,
'approve_so_at' => null,
]);
$status = 'revisi-laporan';
} elseif ($permohonan->status === 'proses-laporan' && $userRole === 'DD Appraisal') {
$permohonan->update([
'approve_so' => null,
'approve_so_at' => null,
'approve_eo' => null,
'approve_eo_at' => null,
]);
$status = 'revisi-laporan';
} else {
return response()->json([
'success' => false,
'message' => 'Tidak ada tindakan yang dapat dilakukan untuk status saat ini.',
], 400);
}
// Perbarui status dan informasi lainnya
$permohonan->update([
'status' => 'revisi-laporan',
'status' => $status,
'keterangan' => $request->message,
'submitted_at' => now()
'submitted_at' => now(),
]);
return response()->json([
'success' => true,
'message' => 'Berhasil Revisi Laporan penilai',
'message' => 'Berhasil Revisi Laporan penilai.',
], 200);
}
}

View File

@@ -79,7 +79,7 @@ use Modules\Lpj\Models\LaluLintasLokasi;
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
use Modules\Lpj\Http\Requests\SurveyorRequest;
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
use Modules\Lpj\Emails\SendJadwalKunjunganEmail;
use Modules\Lpj\Jobs\SendJadwalKunjunganEmailJob;
use App\Helpers\Lpj;
use Modules\Lpj\Models\Authorization;
use Modules\Lpj\Services\SurveyorValidateService;
@@ -955,7 +955,7 @@ class SurveyorController extends Controller
}
public function storeJadwal(Request $request)
public function storeJadwal(Request $request, $id)
{
try {
$validate = $request->validate([
@@ -964,7 +964,15 @@ class SurveyorController extends Controller
'deskripsi_penilaian' => 'required'
]);
$penilaian = Penilaian::findOrFail($validate['id']);
$penilaian = Penilaian::findOrFail($id);
if (Carbon::parse($validate['waktu_penilaian']) <= Carbon::parse($penilaian->tanggal_kunjungan)) {
return response()->json([
'success' => false,
'message' => 'Waktu penilaian harus lebih besar dari tanggal assign.'
], 422);
}
$emailData = [
'email' => $penilaian->permohonan->user->email,
@@ -973,28 +981,26 @@ class SurveyorController extends Controller
];
Mail::to($emailData['email'])->send(new SendJadwalKunjunganEmail($emailData, $penilaian->permohonan->nomor_resitrasi, $penilaian->permohonan->debiture));
SendJadwalKunjunganEmailJob::dispatch($emailData);
if (Carbon::parse($validate['waktu_penilaian']) <= Carbon::parse($penilaian->tanggal_kunjungan)) {
return redirect()
->route('surveyor.index')
->with('error', 'Waktu penilaian harus lebih besar dari tanggal assign.');
}
$penilaian->update([
'waktu_penilaian' => $validate['waktu_penilaian'],
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
]);
return redirect()
->route('surveyor.index')
->with('success', 'Jadwal berhasil dibuat.');
return response()->json([
'success' => true,
'message' => 'Berhasil kirim jadwal kunjungan'
], 200);
} catch (\Exception $e) {
\Log::error('Error sending email: ' . $e->getMessage());
return redirect()
->route('surveyor.index')
->with('error', 'Internal Server Error: ' . $e->getMessage());
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',
'error' => $e->getMessage()
], 500);
}
}
@@ -2635,7 +2641,8 @@ class SurveyorController extends Controller
'foto_gistaru',
'foto_bhumi',
'foto_argis_region',
'foto_tempat'
'foto_tempat',
'foto_sentuh_tanahku'
];
if ($inspeksi) {