From 91d70c9e2ee68f8017329b8b97f8497f631b2dcc Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 25 Sep 2024 09:44:35 +0700 Subject: [PATCH] penambahan menu activity dan perbaikan menu assingment --- app/Http/Controllers/ActivityController.php | 152 +++++++++++++ app/Http/Controllers/PenilaianController.php | 48 ++-- app/Http/Requests/PenilaianRequest.php | 42 ++-- app/Models/Penilaian.php | 12 + app/Models/Permohonan.php | 7 + app/Models/TeamsUsers.php | 2 +- ...4_09_24_014023_update_permohonan_table.php | 29 +++ module.json | 2 +- .../views/activity/activitydetail.blade.php | 120 ++++++++++ .../activity/components/status.blade.php | 94 ++++++++ resources/views/activity/index.blade.php | 211 ++++++++++++++++++ resources/views/penilaian/form.blade.php | 150 ++++++++----- routes/breadcrumbs.php | 10 +- routes/web.php | 14 +- 14 files changed, 805 insertions(+), 88 deletions(-) create mode 100644 app/Http/Controllers/ActivityController.php create mode 100644 database/migrations/2024_09_24_014023_update_permohonan_table.php create mode 100644 resources/views/activity/activitydetail.blade.php create mode 100644 resources/views/activity/components/status.blade.php create mode 100644 resources/views/activity/index.blade.php 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 cf6d5e6..227246d 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', @@ -54,4 +57,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 +
+
+
+

+ Activity Permohonan +

+
+ + Back +
+
+
+
+

+ Nomor Register Permohonan: +

+ + {{ $permohonan->nomor_registrasi }} + +
+ +
+

+ Pemohon: +

+ + {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }} + +
+ +
+

+ Tujan Permohonan: +

+ + {{ $permohonan->tujuanPenilaian->name }} + +
+ +
+
+ + +
+
+

+ Status Activity +

+
+
+
+ @foreach ($status_permohonan as $index => $status) + {{-- Cek apakah status adalah "Revisi" dan status permohonan tidak sama, maka tidak ditampilkan --}} + @if (strtolower($status->name) == 'revisi' && strtolower($status->name) != strtolower($permohonan->status)) + @continue + @endif + +
+ @if ($index < count($status_permohonan) - 1) +
+
+ @endif + +
+ @switch(strtolower($status->name)) + @case('order') + + @break + + @case('revisi') + + @break + + @case('register') + + @break + + @case('assign') + + @break + + @case('survey') + + @break + + @default + + @endswitch + +
+ @include('lpj::activity.components.status') +
+ @endforeach +
+
+ +
+
+@endsection diff --git a/resources/views/activity/components/status.blade.php b/resources/views/activity/components/status.blade.php new file mode 100644 index 0000000..0952cc3 --- /dev/null +++ b/resources/views/activity/components/status.blade.php @@ -0,0 +1,94 @@ +
+
+
+ {{ $status->name . ' ' . $status->description }} +
+ + @if (strtolower($status->name) == 'order') + {{ $permohonan->created_at }} + @elseif (strtolower($status->name) == strtolower($permohonan->status)) + {{ $permohonan->updated_at }} + @endif + +
+ + @php + $isCurrentStatus = strtolower($status->name) == strtolower($permohonan->status); + $hasKeterangan = isset($permohonan->keterangan); + @endphp + + {{-- Tampilkan keterangan jika status 'register' --}} + @if (strtolower($status->name) == 'register' && $hasKeterangan && $isCurrentStatus) +
+
+

+ {{ $permohonan->keterangan }} +

+
+
+ @endif + + {{-- Tampilkan dokumen dan keterangan jika status 'revisi' --}} + @if (strtolower($status->name) == 'revisi' && $hasKeterangan) +
+
+ + {{ basename($permohonan->dokumen) }} + + +

+ {{ $permohonan->keterangan }} +

+
+
+ @endif + + {{-- Tampilkan informasi assign jika status 'assign' --}} + @if (strtolower($status->name) == 'assign' && $isCurrentStatus) +
+
+ {{-- Informasi Penilai, Surveyor, dan Penilai Surveyor --}} +
+ @isset($permohonan->penilaian) + @if ($penilai = $permohonan->penilaian->userPenilai->name ?? null) +
+

Penilai:

+ {{ $penilai }} +
+ @endif + + @if ($surveyor = $permohonan->penilaian->userSurveyor->name ?? null) +
+

Surveyor:

+ {{ $surveyor }} +
+ @endif + + @if ($penilaiSurveyor = $permohonan->penilaian->userPenilaiSurveyor->name ?? null) +
+

Penilai Surveyor:

+ {{ $penilaiSurveyor }} +
+ @endif + @endisset +
+ + {{-- Teams --}} +
+

Teams:

+
    + @foreach ($permohonan->penilaian->teams->teamsUsers as $item) +
  • {{ $item->user->name }}
  • + @endforeach +
+
+ + {{-- Catatan --}} +
+

Catatan:

+ {{ $permohonan->penilaian->keterangan }} +
+
+
+ @endif +
diff --git a/resources/views/activity/index.blade.php b/resources/views/activity/index.blade.php new file mode 100644 index 0000000..4dd0179 --- /dev/null +++ b/resources/views/activity/index.blade.php @@ -0,0 +1,211 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('activity') }} +@endsection +@section('content') +
+
+
+
+ Activity +
+
+

+ {{-- Daftar {{}} --}} +

+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + + Tanggal Permohonan + + + + User Pemohon + + + + Cabang Pemohon + + + + Debitur + + + + Tujuan Penilaian + + + + Status + + + Action
+
+ +
+
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 4112b0a..63b642c 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -27,6 +27,10 @@

Data Permohonan

+
+ + Back +
@@ -330,7 +334,7 @@ Surveyor yang di tunjuk
- @@ -414,56 +418,65 @@
-