diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 2e9dd5c..194cde6 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -13,11 +13,16 @@ use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\TujuanPenilaian; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\TeamsUsers; +use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\NilaiPlafond; use Modules\Lpj\Models\JenisFasilitasKredit; - - +use Modules\Usermanagement\Models\User; +use Modules\Lpj\Http\Requests\PenilaianRequest; +use Modules\Lpj\Models\DetailDokumenJaminan; +use Modules\Lpj\Models\DokumenJaminan; +use Modules\Lpj\Exports\PermohonanExport; class PenilaianController extends Controller { @@ -42,11 +47,28 @@ class PenilaianController extends Controller /** * Store a newly created resource in storage. */ - public function store(Request $request): RedirectResponse + public function store(PenilaianRequest $request) { - // + $validatedData = $request->validated(); + + if ($validatedData) { + try { + + $penilaian = Penilaian::create($validatedData); + + $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('error', $e->getMessage()); + } + } } + /** * Show the specified resource. */ @@ -66,26 +88,36 @@ class PenilaianController extends Controller $jenisPenilaian = JenisPenilaian::all(); $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); - $jenisJaminan = JenisJaminan::all(); + $penilaian = Penilaian::where('permohonan_id', $id)->first(); - $nilaiPlafond = NilaiPlafond::all(); - $jenisFasilitas = JenisFasilitasKredit::all(); - - - - - - return view('lpj::penilaian.form', compact('permohonan', 'jenisPenilaian', 'teamPenilai', 'jenisJaminan', 'nilaiPlafond', 'jenisFasilitas')); + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); } /** * Update the specified resource in storage. */ - public function update(Request $request, $id): RedirectResponse + public function update(PenilaianRequest $request, $id) { - // + $validate = $request->validated(); + + 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()); + } + } } + /** * Remove the specified resource from storage. */ @@ -95,68 +127,85 @@ class PenilaianController extends Controller } 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 sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - // Get the total count of records - $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); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 1; - - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); +{ + 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); + } + + } diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php index 8b29d51..6be90ac 100644 --- a/app/Http/Requests/PenilaianRequest.php +++ b/app/Http/Requests/PenilaianRequest.php @@ -12,7 +12,13 @@ class PenilaianRequest extends FormRequest 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', ]; } @@ -23,4 +29,12 @@ class PenilaianRequest extends FormRequest { return true; } + + protected function prepareForValidation() + { + // Menetapkan nilai default untuk 'status' jika tidak ada dalam request + $this->merge([ + 'status' => $this->status ?? 'assign', + ]); + } } diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index b3620db..34a5098 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -17,7 +17,7 @@ class Penilaian extends Model */ protected $table = 'penilaian'; protected $fillable = [ - 'jenis_penilaian_id', 'team_id', 'user_id', 'tanggal_kunjungan', 'keterangan', + 'jenis_penilaian_id', 'teams_id', 'user_id', 'tanggal_kunjungan', 'keterangan','permohonan_id', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; @@ -27,7 +27,7 @@ class Penilaian extends Model } public function teams(){ - return $this->belongsTo(Teams::class, 'team_id', 'id'); + return $this->belongsTo(Teams::class, 'teams_id', 'id'); } public function users(){ 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 9764f04..da22785 100644 --- a/database/migrations/2024_09_05_070712_create_penilaian_table.php +++ b/database/migrations/2024_09_05_070712_create_penilaian_table.php @@ -6,8 +6,7 @@ use Illuminate\Support\Facades\Schema; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; -return new class extends Migration -{ +return new class () extends Migration { /** * Run the migrations. */ @@ -19,8 +18,9 @@ return new class extends Migration $table->foreignIdFor(Teams::class); $table->unsignedBigInteger('user_id'); $table->datetime('tanggal_kunjungan'); - $table->text('keterangan'); + $table->text('keterangan')->nullable(); $table->char('status'); + $table->integer('permohonan_id'); $table->timestamps(); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); diff --git a/module.json b/module.json index 9b93b6e..e91a8f7 100644 --- a/module.json +++ b/module.json @@ -20,7 +20,7 @@ "permission": "", "roles": [ "Administrator" - + ] }, { @@ -56,6 +56,17 @@ "Administrator" ] }, + { + "title": "Penilaian Jaminan", + "path": "penilaian", + "icon": "ki-filled ki-some-files text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "Administrator" + ] + }, { "title": "Laporan", "path": "", @@ -207,14 +218,6 @@ "attributes": [], "permission": "", "roles": [] - }, - { - "title": "Penilaian Jaminan", - "path": "basicdata.penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] } ] diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 7f094c9..90ca57d 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -12,12 +12,6 @@ background-color: #ddd; margin: 20px 0; } - - .h1 { - font-size: 16px; - font-weight: 600; - margin-bottom: 10px; - } @endpush @@ -28,484 +22,194 @@

- Form Data Jaminan + Form Penilai Jaminan

+
+
- -
-
-
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
+ @if (isset($penilaian->permohonan_id)) + @method('PUT') + + @else + + @endif + @csrf +
+
+ +
+ + @error('jenis_penilaian_id') + {{ $message }} + @enderror
-
-
- -
- -
+
+ +
+ + @error('teams_id') + {{ $message }} + @enderror
+
-
- -
- -
-
- -
- -
- -
+
+ +
+
-
-
- -
- -
-
+
+ -
- -
- -
+
+ + @error('tanggal_kunjungan') + {{ $message }} + @enderror
+ +
+ +
+ +
+ @error('keterangan') + {{ $message }} + @enderror +
- -
-
-
-
-

1. IDENTITAS DEBITUR

-
-
- -
- -
-
- -
- -
-

- {{ $permohonan->debiture->address . ' ' . $permohonan->debiture->village->name . ', ' . $permohonan->debiture->district->name . ', ' . $permohonan->debiture->city->name . ', ' . $permohonan->debiture->province->name . ' ' . '(' . $permohonan->debiture->postal_code . ')' }} - -

-
-
- -
- -
- -
-
-
-
- -
-

2. LETAK JAMINAN

-
-
- -
- -
-
- -
- -
-
- -
-
-
- -
- -
- -
-
-
- -
- -
-
-
-
- -
-

3. FASILITAS KREDIT

-
- - -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- - -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
-
- - -
-

4. TUJUAN PENILAIAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
-
-
- -
-

5. JENIS JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
-
- -
-

6. TIPE JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- - -
-
- -
-

7. DATA-DATA

-
- -
- -
-
-
- - @error('province_code') - {{ $message }} - @enderror -
-
- - @error('city_code') - {{ $message }} - @enderror -
-
-
-
- - -
- -
- -
-
- -
-

6. TIPE JAMINAN

-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
- -
- - @error('tujuan_penilaian_id') - {{ $message }} - @enderror -
-
- -
- -
- -
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
-
-
- - @error('province_code') - {{ $message }} - @enderror -
-
- - @error('city_code') - {{ $message }} - @enderror -
-
-
-
-
-
- - -
- -
-
- - - - -
+
@endsection + + +@push('scripts') + +@endpush diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index 8bbb9e8..a8a29e6 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -1,7 +1,7 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.penilaian') }} + {{ Breadcrumbs::render('penilaian') }} @endsection @section('content') @@ -9,15 +9,8 @@
- @if (isset($status_permohonan)) - @foreach ($status_permohonan as $item) - {{ $item->name }} - @endforeach - @endif + Daftar Penilaian
-
- -

{{-- Daftar {{}} --}} @@ -25,16 +18,19 @@

+
+ +
+
@@ -93,99 +89,10 @@ @endsection -{{-- @section('content') -
-
-
-

- Daftar penilaian -

- -
-
-
-
- - - - - - - - -
- - - Code - - - penilaian - - Action
-
- -
-
-
-@endsection --}} - @push('scripts') -