feat(pemohon): menambahkan fitur reschedule jadwal kunjungan
fix(surveyor): memperbaiki nama placeholder dan call report
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user