feat(pemohon): menambahkan fitur reschedule jadwal kunjungan

fix(surveyor): memperbaiki nama placeholder dan call report
This commit is contained in:
majid
2025-02-12 18:03:05 +07:00
parent 2d99b6ab7a
commit c860daa1d5
14 changed files with 1009 additions and 540 deletions

View File

@@ -82,6 +82,7 @@ use Modules\Lpj\Http\Requests\FormSurveyorRequest;
use Modules\Lpj\Emails\SendJadwalKunjunganEmail;
use App\Helpers\Lpj;
use Modules\Lpj\Models\Authorization;
use Illuminate\Support\Facades\Log;
class SurveyorController extends Controller
{
@@ -929,46 +930,14 @@ class SurveyorController extends Controller
->route('surveyor.index')
->with('success', 'Jadwal berhasil dibuat.');
} catch (\Exception $e) {
\Log::error('Error sending email: ' . $e->getMessage());
return redirect()
->route('surveyor.index')
->with('error', 'Tanggal dan catatan tidak boleh kosong');
->with('error', 'Internal Server Error: ' . $e->getMessage());
}
}
public function storeAproved(Request $request, $id): JsonResponse
{
$data = [];
if (request()->ajax()) {
try {
$penilaian = Penilaian::findOrFail($id);
$penilaian->update([
'authorized_status' => 1,
]);
$permohonan = Permohonan::findOrFail($request->permohonan_id);
$permohonan->update([
'status' => 'survey'
]);
$data['status'] = 'success';
$data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove';
} catch (\Exception $e) {
$data['status'] = 'error';
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
}
} else {
$data['status'] = 'error';
$data['message'] = "no ajax request";
}
return response()->json($data);
}
public function storeFreeze($id, Request $request)
{
try {
@@ -2048,7 +2017,7 @@ class SurveyorController extends Controller
});
}
$query->whereRaw('LOWER(status) IN (?, ?)', ['assign', 'survey']);
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ? ,?)', ['assign', 'survey', 'proses-survey', 'request-reschedule', 'reschedule', 'rejected-reschedule', 'approved-reschedule' ]);
if (!Auth::user()->hasRole('administrator')) {
@@ -3553,5 +3522,117 @@ class SurveyorController extends Controller
return $pdf->download($fileName);
}
public function approveReschedule(Request $request, $id)
{
try {
// Validasi data yang diterima
$validatedData = $request->validate([
'permohonan_id' => 'required|exists:permohonan,id',
'nomor_registrasi' => 'required'
]);
// Memulai transaksi
DB::beginTransaction();
// Update status permohonan menjadi "reschedule"
$permohonan = Permohonan::findOrFail($validatedData['permohonan_id']);
$permohonan->update([
'status' => 'approved-reschedule',
]);
// Update data penilaian dengan waktu reschedule
$penilaian = Penilaian::findOrFail($id);
$penilaian->update([
'waktu_penilaian' => $penilaian->reschedule_date,
]);
// Commit transaksi
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Reschedule jadwal dengan nomor registrasi ' . $validatedData['nomor_registrasi'] . ' berhasil disetujui.',
]);
} catch (\Exception $e) {
// Rollback jika ada error
DB::rollBack();
return response()->json([
'status' => 'error',
'message' => 'Gagal menyetujui reschedule: ' . $e->getMessage(),
], 500);
}
}
/**
* Reject reschedule request.
*/
public function rejectReschedule(Request $request, $id)
{
try {
// Validasi data yang diterima
$validatedData = $request->validate([
'permohonan_id' => 'required|exists:permohonan,id',
'rejected_note' => 'required|string|max:255',
'nomor_registrasi' => 'required|string',
]);
// Memulai transaksi
DB::beginTransaction();
// Update status permohonan menjadi "rejected-reschedule"
$permohonan = Permohonan::findOrFail($validatedData['permohonan_id']);
$permohonan->update([
'status' => 'rejected-reschedule',
]);
// Update data penilaian dengan catatan penolakan
$penilaian = Penilaian::findOrFail($id);
$penilaian->update([
'rejected_note' => $validatedData['rejected_note'],
]);
// Commit transaksi
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Reschedule jadwal dengan nomor registrasi ' . $validatedData['nomor_registrasi'] . ' berhasil ditolak dengan alasan: ' . $validatedData['rejected_note'],
]);
} catch (\Exception $e) {
// Rollback jika ada error
DB::rollBack();
return response()->json([
'status' => 'error',
'message' => 'Gagal menolak reschedule: ' . $e->getMessage(),
], 500);
}
}
public function storeProsesSurvey(Request $request, $id)
{
try {
$validated = $request->validate([
'permohonan_id' => 'required|integer|exists:permohonan,id',
]);
$permohonan = Permohonan::findOrFail($id);
$permohonan->status = 'survey';
$permohonan->save();
// Berikan respons JSON
return response()->json([
'status' => 'success',
'message' => 'Status permohonan berhasil diubah menjadi "survey".',
]);
} catch (\Exception $e) {
// Tangani error
return response()->json([
'status' => 'error',
'message' => $e->getMessage(),
], 500);
}
}
}