diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php new file mode 100644 index 0000000..c24eee2 --- /dev/null +++ b/app/Http/Controllers/ActivityController.php @@ -0,0 +1,152 @@ +get(); + + $permohonan = Permohonan::with( + [ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + 'penilaian' + ], + )->findOrFail($id); + + return view('lpj::activity.activitydetail', compact('id', 'status_permohonan', 'permohonan')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + return view('lpj::edit'); + } + + /** + * Update the specified resource in storage. + */ + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply status filter if provided + if ($request->has('status') && !empty($request->get('status'))) { + $status = $request->get('status'); + $query->where('status', '=', $status); + } + + // Default sorting if no sort provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } else { + $query->orderBy('nomor_registrasi', 'asc'); // Default order by nomor_registrasi + } + + // Get the total count of records before paginating + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = (int) $request->get('page', 1); // Default page is 1 + $size = (int) $request->get('size', 10); // Default size is 10 + $offset = ($page - 1) * $size; // Calculate the offset + + // Limit results based on pagination + $query->skip($offset)->take($size); + } + + // Get the filtered count of records (after search & filters applied) + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the total number of pages + $pageCount = ceil($totalRecords / $request->get('size', 10)); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $request->get('page', 1), + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + + /** + * Download the specified resource from storage. + */ + public function download($id) + { + $document = Permohonan::find($id); + return response()->download(storage_path('app/public/' . $document->dokumen)); + } +} diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index b7d91ea..0576671 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -32,6 +32,7 @@ class PenilaianController extends Controller */ public function store(PenilaianRequest $request) { + //print_r($request->all());exit; $validatedData = $request->validated(); if ($validatedData) { try { @@ -80,14 +81,6 @@ class PenilaianController extends Controller } } - /** - * Show the specified resource. - */ - public function show($id) - { - return view('lpj::show'); - } - /** * Show the form for editing the specified resource. */ @@ -116,21 +109,40 @@ class PenilaianController extends Controller /** * Remove the specified resource from storage. */ - public function revisi(Request $request, $nomor_registrasi) + + public function revisi(PenilaianRequest $request, $nomor_registrasi) { - $validate = $request->validate([ - 'keterangan_revisi' => 'required', - 'dokumen_revisi' => 'required|file', - ]); - if ($validate) { - $permohonan = Permohonan::where('nomor_registrasi', - $nomor_registrasi); + $validatedData = $request->validated(); + if ($validatedData) { - $permohonan->update($validate); + try { + + if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) { + $file_name = $validatedData['dokumen']->getClientOriginalName(); + $validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name); + } + + $dataToUpdate = [ + 'keterangan' => $validatedData['keterangan'], + 'dokumen' => 'dokumen_revisi/' . $file_name, + 'status' => 'revisi', + ]; + + // dump($dataToUpdate); + + $permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first(); + + $permohonan->update($dataToUpdate); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi'); + } catch (Exception $e) { + dump($e->getMessage()); + // return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + } } - } + + public function dataForDatatables(Request $request) { if (is_null($this->user) || !$this->user->can('debitur.view')) { diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php index 8e215e4..0d9c1bf 100644 --- a/app/Http/Requests/PenilaianRequest.php +++ b/app/Http/Requests/PenilaianRequest.php @@ -9,20 +9,36 @@ class PenilaianRequest extends FormRequest /** * Get the validation rules that apply to the request. */ + + + public function rules(): array -{ - return [ - 'jenis_penilaian_id' => 'required|max:255', - 'teams_id' => 'required|max:255', - 'tanggal_kunjungan' => 'required|max:255', - 'status' => 'required|string', - 'nomor_registrasi' => 'required|string', - 'surveyor_id' => 'nullable|required_without:penilai_surveyor_id', - 'penilaian_id' => 'nullable|required_without:penilai_surveyor_id', - 'penilai_surveyor_id' => 'nullable|required_without:surveyor_id|required_without:penilaian_id', - 'keterangan' => 'nullable', - ]; -} + { + + + $action = $this->input('action'); + + if ($action === 'revisi') { + return [ + 'dokumen' => 'required|file|mimes:pdf', + 'keterangan' => 'required|string', + ]; + } + + + + return [ + 'jenis_penilaian_id' => 'required|max:255', + 'teams_id' => 'required|max:255', + 'tanggal_kunjungan' => 'required|max:255', + 'status' => 'required|string', + 'nomor_registrasi' => 'required|string', + 'surveyor_id' => 'nullable|required_without:penilai_surveyor_id', + 'penilaian_id' => 'nullable|required_without:penilai_surveyor_id', + 'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilaian_id', + 'keterangan' => 'nullable', + ]; + } /** diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index 65306aa..93bd3e8 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -36,6 +36,18 @@ class Penilaian extends Model return $this->belongsTo(User::class, 'user_id', 'id'); } + public function userPenilai(){ + return $this->belongsTo(User::class, 'penilaian_id', 'id'); + } + + public function userSurveyor(){ + return $this->belongsTo(User::class, 'surveyor_id', 'id'); + } + + public function userPenilaiSurveyor(){ + return $this->belongsTo(User::class, 'penilai_surveyor_id', 'id'); + } + public function permohonan(){ return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi'); } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index be453ee..5b63bdc 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PermohonanFactory; use Modules\Usermanagement\Models\User; +use Modules\Lpj\Models\TujuanPenilaian; +use Modules\Lpj\Models\JenisFasilitasKredit; class Permohonan extends Base { @@ -18,6 +20,7 @@ class Permohonan extends Base 'tujuan_penilaian_id', 'debiture_id', 'keterangan', + 'dokumen', 'jenis_fasilitas_kredit_id', 'nilai_plafond_id', 'status', @@ -55,4 +58,8 @@ class Permohonan extends Base public function jenisFasilitasKredit(){ return $this->belongsTo(JenisFasilitasKredit::class); } + + public function penilaian(){ + return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); + } } diff --git a/app/Models/TeamsUsers.php b/app/Models/TeamsUsers.php index c98b6d0..a47cae9 100644 --- a/app/Models/TeamsUsers.php +++ b/app/Models/TeamsUsers.php @@ -4,7 +4,7 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Modules\Lpj\Database\Factories\TeamsUsersFactory; -// use Modules\User\Models\User; +use Modules\Usermanagement\Models\User; use Modules\Lpj\Models\Teams; class TeamsUsers extends Model diff --git a/database/migrations/2024_09_24_014023_update_permohonan_table.php b/database/migrations/2024_09_24_014023_update_permohonan_table.php new file mode 100644 index 0000000..6103ce2 --- /dev/null +++ b/database/migrations/2024_09_24_014023_update_permohonan_table.php @@ -0,0 +1,29 @@ +string('dokumen')->nullable()->after('status'); + $table->string('keterangan')->nullable()->after('dokumen'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn('dokumen'); + $table->dropColumn('keterangan'); + }); + } +}; diff --git a/module.json b/module.json index aabe3d6..4d62cc1 100644 --- a/module.json +++ b/module.json @@ -69,7 +69,7 @@ }, { "title": "Activity", - "path": "penilaian", + "path": "activity", "icon": "ki-filled ki-some-files text-lg", "classes": "", "attributes": [], diff --git a/resources/views/activity/activitydetail.blade.php b/resources/views/activity/activitydetail.blade.php new file mode 100644 index 0000000..ec335f0 --- /dev/null +++ b/resources/views/activity/activitydetail.blade.php @@ -0,0 +1,120 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') + @push('styles') + + @endpush +
+ {{ $permohonan->keterangan }} +
++ {{ $permohonan->keterangan }} +
+Penilai:
+ {{ $penilai }} +Surveyor:
+ {{ $surveyor }} +Penilai Surveyor:
+ {{ $penilaiSurveyor }} +| + + | ++ Nomor Registrasi + + + | ++ Tanggal Permohonan + + + | ++ User Pemohon + + + | ++ Cabang Pemohon + + + | ++ Debitur + + + | ++ Tujuan Penilaian + + + | ++ Status + + + | +Action | +
|---|