From 00f568fb6d27bcc00dbc2e4c928335bdc4bd6267 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 20 Sep 2024 15:05:53 +0700 Subject: [PATCH] update filed penilai, surveyor dan tambah buton revisi --- app/Http/Controllers/PenilaianController.php | 374 +++++++++--------- app/Http/Requests/PenilaianRequest.php | 25 +- ...24_09_05_070712_create_penilaian_table.php | 6 +- module.json | 13 +- resources/views/penilaian/form.blade.php | 291 +++++++++----- resources/views/penilaian/index.blade.php | 2 +- routes/breadcrumbs.php | 4 +- routes/web.php | 3 +- 8 files changed, 429 insertions(+), 289 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index dadfd09..b7d91ea 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -1,203 +1,213 @@ validated(); + /** + * Store a newly created resource in storage. + */ + public function store(PenilaianRequest $request) + { + $validatedData = $request->validated(); + if ($validatedData) { + try { + $penilaian = Penilaian::create($validatedData); - if ($validatedData) { - try { - $penilaian = Penilaian::create($validatedData); + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); + $permohonan->update([ + 'status' => 'assign', + ]); - $permohonan = Permohonan::findOrFail($request->permohonan_id); - $permohonan->update([ - 'status' => 'assign', - ]); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + } catch (Exception $e) { - return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); - } catch (Exception $e) { - return redirect()->route('penilaian.index')->with('error', $e->getMessage()); - } + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } + } - /** - * Show the form for creating a new resource. - */ - public function create($id) - { - return view('lpj::penilaian.form'); - } + /** + * Show the form for creating a new resource. + */ + public function create($id) + { + return view('lpj::penilaian.form'); + } - /** - * Update the specified resource in storage. - */ - public function update(PenilaianRequest $request, $id) - { - $validate = $request->validated(); + /** + * Update the specified resource in storage. + */ + public function update(PenilaianRequest $request, $id) + { + $validate = $request->validated(); + if ($validate) { + try { + $penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->firstOrFail(); + $penilaian->update($validate); + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); + $permohonan->update([ + 'status' => 'assign', + ]); - if ($validate) { - try { - $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); - - $penilaian->update($validate); - $permohonan = Permohonan::findOrFail($id); - $permohonan->update([ - 'status' => 'assign', - ]); - - return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); - } catch (Exception $e) { - return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); - } + return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); + } catch (Exception $e) { + return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); } } + } - /** - * Show the specified resource. - */ - public function show($id) - { - return view('lpj::show'); + /** + * Show the specified resource. + */ + public function show($id) + { + return view('lpj::show'); + } + + /** + * Show the form for editing the specified resource. + */ + public function assignment($id) + { + $permohonan = Permohonan::with( + [ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + ], + )->findOrFail($id); + + $jenisPenilaian = JenisPenilaian::all(); + $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); + + $penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); + + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); + } + + /** + * Remove the specified resource from storage. + */ + public function revisi(Request $request, $nomor_registrasi) + { + $validate = $request->validate([ + 'keterangan_revisi' => 'required', + 'dokumen_revisi' => 'required|file', + ]); + if ($validate) { + $permohonan = Permohonan::where('nomor_registrasi', + $nomor_registrasi); + + $permohonan->update($validate); } - /** - * Show the form for editing the specified resource. - */ - public function edit($id) - { - $permohonan = Permohonan::with( - [ - 'user', - 'debiture.province', - 'debiture.city', - 'debiture.district', - 'debiture.village', - 'branch', - 'tujuanPenilaian', - ], - )->findOrFail($id); - - $jenisPenilaian = JenisPenilaian::all(); - $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); - - $penilaian = Penilaian::where('permohonan_id', $id)->first(); - - return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); - } - - /** - * Remove the specified resource from storage. - */ - public function destroy($id) - { - // - } - - 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.'); - } - - - $query = Permohonan::query(); - - 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 . '%'); - }); - } - - // Filter to show only records with status 'register' - $query->where('status', 'register'); - - - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - $filteredRecords = $query->count(); - - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - $pageCount = ceil($totalRecords / $request->get('size')); - - $currentPage = $page; - - - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); - } - - - public function getUserTeams($id) - { - $teamsUser = TeamsUsers::where('teams_id', $id)->get(); - $userIds = $teamsUser->pluck('user_id'); - $users = User::whereIn('id', $userIds)->get(); - - if ($users->isNotEmpty()) { - return response()->json($users, 200); - } - - return response()->json([], 200); - } - - } + + 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.'); + } + + $query = Permohonan::query(); + + 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 . '%'); + }); + } + + $query->whereRaw('LOWER(status) = ?', ['register']); + + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + $totalRecords = $query->count(); + + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; + + $query->skip($offset)->take($size); + } + + $filteredRecords = $query->count(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $pageCount = ceil($totalRecords / $size); + + $currentPage = max(1, $request->get('page', 1)); + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + + + public function getUserTeams($id) + { + $teamsUser = TeamsUsers::where('teams_id', $id)->get(); + $userIds = $teamsUser->pluck('user_id'); + $users = User::whereIn('id', $userIds) + ->with('roles') + ->get(); + + + if ($users->isNotEmpty()) { + return response()->json($users, 200); + } + + return response()->json([], 200); + } + + +} diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php index 6be90ac..8e215e4 100644 --- a/app/Http/Requests/PenilaianRequest.php +++ b/app/Http/Requests/PenilaianRequest.php @@ -10,17 +10,20 @@ 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', - 'user_id' => 'required|max:255', - 'tanggal_kunjungan' => 'required|max:255', - 'status' => 'required|max:10', - 'keterangan' => 'nullable', - 'permohonan_id' => 'required', - ]; - } +{ + 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', + ]; +} + /** * Determine if the user is authorized to make this request. diff --git a/database/migrations/2024_09_05_070712_create_penilaian_table.php b/database/migrations/2024_09_05_070712_create_penilaian_table.php index d25274b..cb0a397 100644 --- a/database/migrations/2024_09_05_070712_create_penilaian_table.php +++ b/database/migrations/2024_09_05_070712_create_penilaian_table.php @@ -19,9 +19,9 @@ return new class () extends Migration { $table->foreignIdFor(Teams::class); $table->datetime('tanggal_kunjungan'); $table->text('keterangan')->nullable(); - $table->char('status'); - $table->foreignIdFor(Permohonan::class)->nullable(); - $table->integer('penilaian_id'); + $table->string('status')->nullable(); + $table->string('nomor_registrasi')->references('nomor_registrasi')->on(Permohonan::class)->nullable(); + $table->integer('penilaian_id')->nullable(); $table->integer('surveyor_id')->nullable(); $table->integer('penilai_surveyor_id')->nullable(); $table->timestamps(); diff --git a/module.json b/module.json index f2c4211..aabe3d6 100644 --- a/module.json +++ b/module.json @@ -59,6 +59,17 @@ { "title": "Assignment", "path": "penilaian", + "icon": "ki-filled ki-badge", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "Administrator" + ] + }, + { + "title": "Activity", + "path": "penilaian", "icon": "ki-filled ki-some-files text-lg", "classes": "", "attributes": [], @@ -196,7 +207,7 @@ "roles": [] }, { - "title": "Team Penilai", + "title": "Staff Appraisal", "path": "basicdata.teams", "classes": "", "attributes": [], diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 1a11cde..4112b0a 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -6,11 +6,15 @@ @push('styles') @endpush @@ -70,7 +74,7 @@ Name - {{ $permohonan->debiture->name ?? "" }} + {{ $permohonan->debiture->name ?? '' }} @@ -78,7 +82,7 @@ Email - {{ $permohonan->debiture->email ?? "" }} + {{ $permohonan->debiture->email ?? '' }} @@ -86,7 +90,7 @@ Phone - {{ $permohonan->debiture->phone ?? "" }} + {{ $permohonan->debiture->phone ?? '' }} @@ -95,7 +99,7 @@ Address - {{ $permohonan->debiture->address ?? "" }} + {{ $permohonan->debiture->address ?? '' }} @@ -103,7 +107,11 @@   - {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} + {{ $permohonan->debiture->village->name ?? '' }}, + {{ $permohonan->debiture->district->name ?? '' }}, + {{ $permohonan->debiture->city->name ?? '' }}, + {{ $permohonan->debiture->province->name ?? '' }} - + {{ $permohonan->debiture->village->postal_code ?? '' }} @@ -115,7 +123,7 @@ Cabang - {{ $permohonan->debiture->branch->name ?? "" }} + {{ $permohonan->debiture->branch->name ?? '' }} @@ -123,7 +131,7 @@ CIF - {{ $permohonan->debiture->cif ?? "" }} + {{ $permohonan->debiture->cif ?? '' }} @@ -131,7 +139,7 @@ Nomor Rekening - {{ $permohonan->debiture->nomor_rekening ?? "" }} + {{ $permohonan->debiture->nomor_rekening ?? '' }} @@ -139,7 +147,7 @@ NPWP - {{ $permohonan->debiture->npwp ?? "" }} + {{ $permohonan->debiture->npwp ?? '' }} @@ -155,8 +163,9 @@
- @foreach($permohonan->debiture->documents as $dokumen) -
+ @foreach ($permohonan->debiture->documents as $dokumen) +
@@ -181,7 +190,7 @@ Jenis Jaminan: - {{ $dokumen->jenisJaminan->name?? "" }} + {{ $dokumen->jenisJaminan->name ?? '' }}
@@ -189,7 +198,7 @@ Hubungan Pemilik Jaminan: - {{ $dokumen->pemilik->hubungan_pemilik->name?? "" }} + {{ $dokumen->pemilik->hubungan_pemilik->name ?? '' }}
@@ -197,20 +206,24 @@ Alamat Pemilik Jaminan: - {{ $dokumen->pemilik->address ?? ""}}, -
{{ $dokumen->pemilik->village->name ?? "" }}, {{ $dokumen->pemilik->district->name ?? "" }}, {{ $dokumen->pemilik->city->name ?? "" }}, {{ $dokumen->pemilik->province->name ?? "" }} - {{ $dokumen->pemilik->village->postal_code ?? "" }} + {{ $dokumen->pemilik->address ?? '' }}, +
{{ $dokumen->pemilik->village->name ?? '' }}, + {{ $dokumen->pemilik->district->name ?? '' }}, + {{ $dokumen->pemilik->city->name ?? '' }}, + {{ $dokumen->pemilik->province->name ?? '' }} - + {{ $dokumen->pemilik->village->postal_code ?? '' }}
- @foreach($dokumen->detail as $detail) + @foreach ($dokumen->detail as $detail) @@ -218,8 +231,9 @@ Dokumen Jaminan @@ -229,7 +243,7 @@ Keterangan @endforeach @@ -240,32 +254,30 @@ @endforeach - +

Form Assignment

-
- - Back -
+
- @if (isset($penilaian->permohonan_id)) + @if (isset($penilaian->nomor_registrasi)) @method('PUT') @endif @csrf -
+
- +
@foreach ($teamPenilai as $item) - @if (isset($penilaian->permohonan_id)) + @if (isset($penilaian->nomor_registrasi)) @@ -318,22 +330,14 @@ Surveyor yang di tunjuk
- + -
-
-
- -
- + @error('surveyor_id') + {{ $message }} + @enderror
@@ -342,13 +346,32 @@ Penilai yang di tunjuk
- + @error('penilaian_id') + {{ $message }} + @enderror
+
+ +
+ + @error('penilai_surveyor_id') + {{ $message }} + @enderror +
+
+ +
- +
@error('keterangan') {{ $message }} @enderror
- + +
+ +
-
@endsection - - @push('scripts') + + + @endpush diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index 278ae14..0a5db4c 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -29,7 +29,7 @@ -
+
diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index e93be5b..9fd18ba 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -299,9 +299,9 @@ $trail->parent('basicdata'); $trail->push('Penilaian', route('penilaian.index')); }); - Breadcrumbs::for('penilaian.edit', function (BreadcrumbTrail $trail) { + Breadcrumbs::for('penilaian.assignment', function (BreadcrumbTrail $trail) { $trail->parent('penilaian'); - $trail->push('Buat Penilaian'); + $trail->push('Assignment'); }); Breadcrumbs::for('authorization.index', function (BreadcrumbTrail $trail) { diff --git a/routes/web.php b/routes/web.php index fdcfb0b..0853af9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -268,8 +268,9 @@ Route::get('/getUserTeams/{id}', [PenilaianController::class, 'getUserTeams']); Route::get('/', [PenilaianController::class, 'index'])->name('index'); - Route::get('{id}/edit', [PenilaianController::class, 'edit'])->name('edit'); + Route::get('{id}/assignment', [PenilaianController::class, 'assignment'])->name('assignment'); Route::put('{id}', [PenilaianController::class, 'update'])->name('update'); + Route::put('{nomor_registrasi}', [PenilaianController::class, 'revisi'])->name('revisi'); Route::post('create', [PenilaianController::class, 'create'])->name('create'); Route::post('store', [PenilaianController::class, 'store'])->name('store');
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - {{ $detail->name ?? "" }} + {{ $detail->name ?? '' }}
- @if(isset($detail->dokumen_jaminan)) - {{ basename($detail->dokumen_jaminan) }} + @if (isset($detail->dokumen_jaminan)) + {{ basename($detail->dokumen_jaminan) }} @endif - {{ $detail->keterangan ?? "" }} + {{ $detail->keterangan ?? '' }}