From df9b68ae4684908ee4c0a5128cfb9ec0fd71d7fb Mon Sep 17 00:00:00 2001 From: majid Date: Thu, 5 Sep 2024 14:43:05 +0700 Subject: [PATCH 01/16] update migration and models (penilaian, jenis_penilaian, teams, teams_users --- app/Models/JenisPenilaian.php | 22 ++++++++++ app/Models/Penilaian.php | 38 +++++++++++++++++ app/Models/Regions.php | 26 ++++++++++++ app/Models/Teams.php | 28 +++++++++++++ app/Models/TeamsUsers.php | 32 ++++++++++++++ ...2024_09_05_030302_create_regions_table.php | 36 ++++++++++++++++ ...05_030338_create_jenis_penilaian_table.php | 37 ++++++++++++++++ .../2024_09_05_030405_create_teams_table.php | 41 ++++++++++++++++++ ..._09_05_030417_create_teams_users_table.php | 41 ++++++++++++++++++ ...24_09_05_070712_create_penilaian_table.php | 42 +++++++++++++++++++ module.json | 11 +++++ 11 files changed, 354 insertions(+) create mode 100644 app/Models/JenisPenilaian.php create mode 100644 app/Models/Penilaian.php create mode 100644 app/Models/Regions.php create mode 100644 app/Models/Teams.php create mode 100644 app/Models/TeamsUsers.php create mode 100644 database/migrations/2024_09_05_030302_create_regions_table.php create mode 100644 database/migrations/2024_09_05_030338_create_jenis_penilaian_table.php create mode 100644 database/migrations/2024_09_05_030405_create_teams_table.php create mode 100644 database/migrations/2024_09_05_030417_create_teams_users_table.php create mode 100644 database/migrations/2024_09_05_070712_create_penilaian_table.php diff --git a/app/Models/JenisPenilaian.php b/app/Models/JenisPenilaian.php new file mode 100644 index 0000000..2ac6459 --- /dev/null +++ b/app/Models/JenisPenilaian.php @@ -0,0 +1,22 @@ +hasMany(JenisPenilaian::class); + } + + public function teams(){ + return $this->hasMany(Teams::class); + } + + public function users(){ + return $this->hasMany(User::class); + } + + +} diff --git a/app/Models/Regions.php b/app/Models/Regions.php new file mode 100644 index 0000000..bfa8e0a --- /dev/null +++ b/app/Models/Regions.php @@ -0,0 +1,26 @@ +hasMany(Teams::class, 'region_id', 'id'); + } +} diff --git a/app/Models/Teams.php b/app/Models/Teams.php new file mode 100644 index 0000000..bc9f7fe --- /dev/null +++ b/app/Models/Teams.php @@ -0,0 +1,28 @@ +belongsTo(Regions::class, 'region_id', 'id'); + } + + public function teamsUsers(){ + return $this->hasMany(TeamsUsers::class, 'team_id', 'id'); + } +} diff --git a/app/Models/TeamsUsers.php b/app/Models/TeamsUsers.php new file mode 100644 index 0000000..6516730 --- /dev/null +++ b/app/Models/TeamsUsers.php @@ -0,0 +1,32 @@ +belongsTo(Teams::class, 'team_id'); + } + + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } +} diff --git a/database/migrations/2024_09_05_030302_create_regions_table.php b/database/migrations/2024_09_05_030302_create_regions_table.php new file mode 100644 index 0000000..3f942ff --- /dev/null +++ b/database/migrations/2024_09_05_030302_create_regions_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->char('status')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('regions'); + } +}; diff --git a/database/migrations/2024_09_05_030338_create_jenis_penilaian_table.php b/database/migrations/2024_09_05_030338_create_jenis_penilaian_table.php new file mode 100644 index 0000000..bf31ab4 --- /dev/null +++ b/database/migrations/2024_09_05_030338_create_jenis_penilaian_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->char('status')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jenis_penilaian'); + } +}; diff --git a/database/migrations/2024_09_05_030405_create_teams_table.php b/database/migrations/2024_09_05_030405_create_teams_table.php new file mode 100644 index 0000000..88ae841 --- /dev/null +++ b/database/migrations/2024_09_05_030405_create_teams_table.php @@ -0,0 +1,41 @@ +id(); + $table->foreignIdFor(Regions::class, 'region_id'); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->char('status')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('teams'); + } +}; diff --git a/database/migrations/2024_09_05_030417_create_teams_users_table.php b/database/migrations/2024_09_05_030417_create_teams_users_table.php new file mode 100644 index 0000000..9b4422e --- /dev/null +++ b/database/migrations/2024_09_05_030417_create_teams_users_table.php @@ -0,0 +1,41 @@ +id(); + $table->foreignIdFor(Teams::class); + $table->foreignIdFor(Users::class); + + + $table->char('status')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('teams_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 new file mode 100644 index 0000000..14d7766 --- /dev/null +++ b/database/migrations/2024_09_05_070712_create_penilaian_table.php @@ -0,0 +1,42 @@ +id(); + $table->foreignIdFor(Penilaian::class); + $table->foreignIdFor(Teams::class); + $table->foreignIdFor(Users::class); + $table->datetime('tanggal_kunjungan'); + $table->text('keterangan'); + $table->char('status'); + $table->timestamps(); + $table->char('authorized_status', 1)->nullable(); + $table->timestamp('authorized_at')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('penilaian'); + } +}; diff --git a/module.json b/module.json index 40ce5bd..de8b0cc 100644 --- a/module.json +++ b/module.json @@ -65,6 +65,17 @@ "roles": [ "Administrator" ] + }, + { + "title": "Region", + "path": "", + "icon": "ki-filled ki-some-files text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "Administrator" + ] } ], "master": [ From a51d5fbeff77cbc6b3c037b3516a7306fc955faf Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 6 Sep 2024 08:50:57 +0700 Subject: [PATCH 02/16] update model jenispenilaian, penilaian dan teamsusers --- app/Models/JenisPenilaian.php | 3 +++ app/Models/Penilaian.php | 10 +++++----- app/Models/TeamsUsers.php | 8 ++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/Models/JenisPenilaian.php b/app/Models/JenisPenilaian.php index 2ac6459..b809c91 100644 --- a/app/Models/JenisPenilaian.php +++ b/app/Models/JenisPenilaian.php @@ -18,5 +18,8 @@ class JenisPenilaian extends Model 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; + public function penilaian(){ + return $this->hasMany(Penilaian::class , 'jenis_penilaian_id', 'id'); + } } diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index 00064f1..b3620db 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -17,21 +17,21 @@ class Penilaian extends Model */ protected $table = 'penilaian'; protected $fillable = [ - 'jenis_penilaian_id', 'team_id', 'user_id', 'tanggal_kunjungan', 'keterangan', - 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', + 'jenis_penilaian_id', 'team_id', 'user_id', 'tanggal_kunjungan', 'keterangan', + 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; public function jenis_penilaian(){ - return $this->hasMany(JenisPenilaian::class); + return $this->belongsTo(JenisPenilaian::class, 'jenis_penilaian_id', 'id'); } public function teams(){ - return $this->hasMany(Teams::class); + return $this->belongsTo(Teams::class, 'team_id', 'id'); } public function users(){ - return $this->hasMany(User::class); + return $this->belongsTo(User::class, 'user_id', 'id'); } diff --git a/app/Models/TeamsUsers.php b/app/Models/TeamsUsers.php index 6516730..4704fa9 100644 --- a/app/Models/TeamsUsers.php +++ b/app/Models/TeamsUsers.php @@ -15,18 +15,18 @@ class TeamsUsers extends Model */ protected $table = 'teams_users'; protected $fillable = [ - 'team_id', 'user_id', 'status', 'authorized_status', 'authorized_at', - 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', + 'team_id', 'user_id', 'status', 'authorized_status', 'authorized_at', + 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; public function team() { - return $this->belongsTo(Teams::class, 'team_id'); + return $this->belongsTo(Teams::class, 'team_id', 'id'); } public function user() { - return $this->belongsTo(User::class, 'user_id'); + return $this->belongsTo(User::class, 'user_id', 'id'); } } From f9fea10607dbdae3b2101f5131683d8860ef8196 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 11 Sep 2024 08:31:47 +0700 Subject: [PATCH 03/16] update module senior officer --- app/Exports/RegionExport.php | 49 ++ .../Controllers/JenisPenilaianController.php | 156 ++++++ app/Http/Controllers/PermohonanController.php | 2 +- app/Http/Controllers/RegionController.php | 164 +++++++ app/Http/Controllers/TeamsController.php | 241 ++++++++++ app/Http/Requests/JenisPenilaianRequest.php | 42 ++ app/Http/Requests/RegionRequest.php | 38 ++ app/Http/Requests/TeamsRequest.php | 41 ++ app/Models/JenisPenilaian.php | 2 +- app/Models/Penilaian.php | 8 +- app/Models/Regions.php | 8 +- app/Models/Teams.php | 20 +- app/Models/TeamsUsers.php | 7 +- ...24_08_12_023807_create_debitures_table.php | 54 +++ .../2024_09_05_030405_create_teams_table.php | 4 +- ..._09_05_030417_create_teams_users_table.php | 8 +- ...24_09_05_070712_create_penilaian_table.php | 9 +- module.json | 36 +- .../views/jenis_penilaian/form.blade.php | 64 +++ .../views/jenis_penilaian/index.blade.php | 160 +++++++ resources/views/region/create.blade.php | 61 +++ resources/views/region/index.blade.php | 152 ++++++ resources/views/teams/form.blade.php | 113 +++++ resources/views/teams/index.blade.php | 174 +++++++ routes/breadcrumbs.php | 43 ++ routes/web.php | 452 ++++++++++-------- 26 files changed, 1881 insertions(+), 227 deletions(-) create mode 100644 app/Exports/RegionExport.php create mode 100644 app/Http/Controllers/JenisPenilaianController.php create mode 100644 app/Http/Controllers/RegionController.php create mode 100644 app/Http/Controllers/TeamsController.php create mode 100644 app/Http/Requests/JenisPenilaianRequest.php create mode 100644 app/Http/Requests/RegionRequest.php create mode 100644 app/Http/Requests/TeamsRequest.php create mode 100644 database/migrations/2024_08_12_023807_create_debitures_table.php create mode 100644 resources/views/jenis_penilaian/form.blade.php create mode 100644 resources/views/jenis_penilaian/index.blade.php create mode 100644 resources/views/region/create.blade.php create mode 100644 resources/views/region/index.blade.php create mode 100644 resources/views/teams/form.blade.php create mode 100644 resources/views/teams/index.blade.php diff --git a/app/Exports/RegionExport.php b/app/Exports/RegionExport.php new file mode 100644 index 0000000..a7b2b51 --- /dev/null +++ b/app/Exports/RegionExport.php @@ -0,0 +1,49 @@ +id, + $row->code, + $row->name, + $row->created_at + ]; + } + + public function headings() + : array + { + return [ + 'ID', + 'Code', + 'Name', + 'Created At' + ]; + } + + public function columnFormats() + : array + { + return [ + 'A' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_DATE_DATETIME + ]; + } + } diff --git a/app/Http/Controllers/JenisPenilaianController.php b/app/Http/Controllers/JenisPenilaianController.php new file mode 100644 index 0000000..c38f673 --- /dev/null +++ b/app/Http/Controllers/JenisPenilaianController.php @@ -0,0 +1,156 @@ +validated(); + + try { + JenisPenilaian::create($validate); + return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian created successfully'); + } catch (Exception $e) { + return redirect()->route('basicdata.jenis-penilaian.create')->with('error', $e->getMessage()); + } + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $jenisPenilaian = JenisPenilaian::find($id); + return view('lpj::jenis_penilaian.form', compact('jenisPenilaian')); + } + + /** + * Update the specified resource in storage. + */ + public function update(JenisPenilaianRequest $request, $id) + { + + + $validate = $request->validate(); + + // dump($validate); + + if ($validate) { + try { + $jenisPenilaian = JenisPenilaian::find($id); + $jenisPenilaian->update($validate); + return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian updated successfully'); + } catch (Exception $e) { + return redirect()->route('basicdata.jenis-penilaian.edit', $id)->with('error', $e->getMessage()); + } + } + + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + $jenisPenilaian = JenisPenilaian::find($id); + $jenisPenilaian->delete(); + echo json_encode(['success' => true, 'message' => 'Jenis Penilaian deleted successfully']); + + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete Jenis Penilaian']); + } + } + + public function dataForDatatables(Request $request) + { + + + if (is_null($this->user) || !$this->user->can('jenis_penilaian.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + $query = JenisPenilaian::query(); + + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('code', 'LIKE', "%$search%"); + $q->orWhere('name', 'LIKE', "%$search%"); + }); + } + + 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'); + $pageCount = 1; + + if ($size > 0) { + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $offset = ($page - 1) * $size; + $query->skip($offset)->take($size); + $filteredRecords = $query->count(); + $pageCount = ceil($totalRecords / $size); + } + + $data = $query->get(); + } else { + $filteredRecords = $totalRecords; + $data = $query->get(); + } + + $currentPage = $request->get('page') ?? 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 + ]); + } +} diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index ea6d5f3..a6b3276 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -29,7 +29,7 @@ if ($validate) { try { - // Save to database + // Save to database qq Permohonan::create($validate); return redirect() ->route('permohonan.index') diff --git a/app/Http/Controllers/RegionController.php b/app/Http/Controllers/RegionController.php new file mode 100644 index 0000000..e6aa981 --- /dev/null +++ b/app/Http/Controllers/RegionController.php @@ -0,0 +1,164 @@ +validated(); + + if ($validate) { + try { + // Save to database + Regions::create($validate); + return redirect() + ->route('basicdata.region.index') + ->with('success', 'region created successfully'); + } catch (Exception $e) { + return redirect() + ->route('basicdata.region.create') + ->with('error', 'Failed to create region'); + } + } + } + + + public function edit($id) + { + $region = Regions::find($id); + return view('lpj::region.create', compact('region')); + + } + + /** + * Update the specified resource in storage. + */ + public function update(RegionRequest $request, $id) + { + $validate = $request->validated(); + + if ($validate) { + try { + // Update in database + $region = Regions::find($id); + $region->update($validate); + return redirect() + ->route('basicdata.region.index') + ->with('success', 'Region updated successfully'); + } catch (Exception $e) { + return redirect() + ->route('basicdata.region.edit', $id) + ->with('error', 'Failed to update region'); + } + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + // Delete from database + $region = Regions::find($id); + $region->delete(); + + echo json_encode(['success' => true, 'message' => 'Region deleted successfully']); + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete region']); + } + } + + public function dataForDatatables(Request $request) + { + + + if (is_null($this->user) || !$this->user->can('region.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + $query = Regions::query(); + + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('code', 'LIKE', "%$search%"); + $q->orWhere('name', 'LIKE', "%$search%"); + }); + } + + 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); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // dump($data); + + // 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 + ]); + } + + public function export() + { + return Excel::download(new RegionExport, 'region.xlsx'); + } +} diff --git a/app/Http/Controllers/TeamsController.php b/app/Http/Controllers/TeamsController.php new file mode 100644 index 0000000..fa6fbe7 --- /dev/null +++ b/app/Http/Controllers/TeamsController.php @@ -0,0 +1,241 @@ +validated(); + + DB::beginTransaction(); + try { + $teams = Teams::create($validate); + + $users = $request->input('user', []); + + // loop untuk insert data users ke tabel teams_users + foreach ($users as $user) { + TeamsUsers::create([ + 'teams_id' => $teams->id, + 'user_id' => $user + ]); + } + + DB::commit(); + + return redirect() + ->route('basicdata.teams.index') + ->with('success', 'Data saved successfully. '); + } catch (Exception $e) { + + DB::rollBack(); + + return redirect() + ->route('basicdata.teams.create') + ->with('error', 'Failed to save data. '); + } + } + + /** + * Show the specified resource. + */ + public function show($id) + { + return view('lpj::show'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $teams = Teams::find($id); + $region = Regions::all(); + $user = User::all(); + $selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray(); + + return view('lpj::teams.form', compact('teams', 'region', 'user', 'selectedUsers')); + } + + /** + * Update the specified resource in storage. + */ + public function update(TeamsRequest $request, $id) + { + $validate = $request->validated(); + + DB::beginTransaction(); + try { + $teams = Teams::findOrFail($id); + + // Update data tim + $teams->update($validate); + $userIds = $request->input('user', []); + + $teams->teamsUsers()->delete(); + + + foreach ($userIds as $userId) { + TeamsUsers::create([ + 'teams_id' => $teams->id, + 'user_id' => $userId + ]); + } + + DB::commit(); + + return redirect() + ->route('basicdata.teams.index') + ->with('success', 'Data updated successfully. '); + } catch (Exception $e) { + + DB::rollBack(); + + return redirect() + ->route('basicdata.teams.create') + ->with('error', 'Failed to update data. '); + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + DB::beginTransaction(); + try { + + $teams = Teams::findOrFail($id); + $teams->teamsUsers()->delete(); + + // Hapus tim + $teams->delete(); + + DB::commit(); + + return redirect() + ->route('basicdata.teams.index') + ->with('success', 'Team has been deleted successfully.'); + } catch (Exception $e) { + DB::rollBack(); + + return redirect() + ->route('basicdata.teams.index') + ->with('error', 'Failed to delete team. '); + } + } + + + 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 = Teams::select('teams.id as id', 'teams.name as team_name', 'regions.name as region_name') + ->join('regions', 'teams.regions_id', '=', 'regions.id') + ->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id') + ->leftJoin('users', 'teams_users.user_id', '=', 'users.id') + ->addSelect('users.name as user_name'); + + // search filter + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('teams.name', 'LIKE', "%$search%") + ->orWhere('regions.name', 'LIKE', "%$search%") + ->orWhere('users.name', 'LIKE', "%$search%"); + }); + } + + // sorting + 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'); + $pageCount = 1; + + if ($size > 0) { + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $offset = ($page - 1) * $size; + $query->skip($offset)->take($size); + $filteredRecords = $query->count(); + $pageCount = ceil($totalRecords / $size); + } + + $data = $query->get(); + } else { + $filteredRecords = $totalRecords; + $data = $query->get(); + } + + $currentPage = $request->get('page') ?? 1; + + $formattedData = $data->groupBy('id')->map(function ($group) { + $team = $group->first(); + $team->user_team = $group->map(function ($item) { + return [ + 'nama' => $item->user_name, + // 'role' => $item->role_name, + ]; + })->toArray(); + return $team; + })->values(); + + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $formattedData + ]); + } + + + + +} diff --git a/app/Http/Requests/JenisPenilaianRequest.php b/app/Http/Requests/JenisPenilaianRequest.php new file mode 100644 index 0000000..58562ea --- /dev/null +++ b/app/Http/Requests/JenisPenilaianRequest.php @@ -0,0 +1,42 @@ + 'required|string|max:255', + 'status' => 'nullable|boolean', + 'authorized_at' => 'nullable|datetime', + 'authorized_status' => 'nullable|string|max:1', + 'authorized_by' => 'nullable|exists:users,id', + ]; + + if ($this->method() == 'PUT') { + + $rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code,' . $this->route('id'); + + + } else { + $rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code'; + } + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } +} diff --git a/app/Http/Requests/RegionRequest.php b/app/Http/Requests/RegionRequest.php new file mode 100644 index 0000000..fd9ab1d --- /dev/null +++ b/app/Http/Requests/RegionRequest.php @@ -0,0 +1,38 @@ + 'required|string|max:255', + 'status' => 'nullable|boolean', + 'authorized_at' => 'nullable|datetime', + 'authorized_status' => 'nullable|string|max:1', + 'authorized_by' => 'nullable|exists:users,id', + ]; + + if ($this->method() == 'PUT') { + $rules['code'] = 'required|string|max:3|unique:regions,code,' . $this->id; + } else { + $rules['code'] = 'required|string|max:3|unique:regions,code'; + } + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } +} diff --git a/app/Http/Requests/TeamsRequest.php b/app/Http/Requests/TeamsRequest.php new file mode 100644 index 0000000..0f1be4b --- /dev/null +++ b/app/Http/Requests/TeamsRequest.php @@ -0,0 +1,41 @@ + 'required|string|max:255', + 'status' => 'nullable|boolean', + 'regions_id' => 'nullable|exists:regions,id', + 'user.*' => 'nullable|exists:users,id', + 'authorized_at' => 'nullable|datetime', + 'authorized_status' => 'nullable|string|max:1', + 'authorized_by' => 'nullable|exists:users,id', + + ]; + + if ($this->method() == 'PUT') { + $rules['code'] = 'required|string|max:3|unique:teams,code,' . $this->id; + } else { + $rules['code'] = 'required|string|max:3|unique:teams,code'; + } + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } +} diff --git a/app/Models/JenisPenilaian.php b/app/Models/JenisPenilaian.php index b809c91..f072a82 100644 --- a/app/Models/JenisPenilaian.php +++ b/app/Models/JenisPenilaian.php @@ -4,7 +4,7 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Modules\Lpj\Database\Factories\JenisPenilaianFactory; - +use Modules\Lpj\Models\Penilaian; class JenisPenilaian extends Model { diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index b3620db..e4d6bdd 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PenilaianFactory; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Teams; -use Modules\Usermanagement\Models\User; +// use Modules\Usermanagement\Models\User; class Penilaian extends Model { @@ -30,9 +30,9 @@ class Penilaian extends Model return $this->belongsTo(Teams::class, 'team_id', 'id'); } - public function users(){ - return $this->belongsTo(User::class, 'user_id', 'id'); - } + // public function users(){ + // return $this->belongsTo(User::class, 'user_id', 'id'); + // } } diff --git a/app/Models/Regions.php b/app/Models/Regions.php index bfa8e0a..28836b5 100644 --- a/app/Models/Regions.php +++ b/app/Models/Regions.php @@ -5,6 +5,7 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\RegionsFactory; +use Modules\Lpj\Models\Teams; class Regions extends Model { @@ -14,13 +15,12 @@ class Regions extends Model * The attributes that are mass assignable. */ protected $table = 'regions'; - + protected $fillable = [ - 'code', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by', - 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' + 'code', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by' ]; public function teams(){ - return $this->hasMany(Teams::class, 'region_id', 'id'); + return $this->hasMany(Teams::class, 'regions_id', 'id'); } } diff --git a/app/Models/Teams.php b/app/Models/Teams.php index bc9f7fe..0fd48a8 100644 --- a/app/Models/Teams.php +++ b/app/Models/Teams.php @@ -5,6 +5,10 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\TeamsFactory; +use Modules\Lpj\Models\TeamsUsers; +use Modules\Lpj\Models\Regions; +use Modules\Lpj\Models\Penilaian; + class Teams extends Model { @@ -13,16 +17,24 @@ class Teams extends Model */ protected $table = 'teams'; protected $fillable = [ - 'region_id', 'code', 'name', 'status', 'authorized_status', 'authorized_at', - 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', + 'regions_id', 'code', 'name', 'status', 'authorized_status', 'authorized_at', + 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; public function regions(){ - return $this->belongsTo(Regions::class, 'region_id', 'id'); + return $this->belongsTo(Regions::class, 'regions_id', 'id'); } public function teamsUsers(){ - return $this->hasMany(TeamsUsers::class, 'team_id', 'id'); + return $this->hasMany(TeamsUsers::class, 'teams_id', 'id'); } + + public function penilaian(){ + return $this->hasMany(Penilaian::class, 'teams_id', 'id'); + } + + + } + diff --git a/app/Models/TeamsUsers.php b/app/Models/TeamsUsers.php index 4704fa9..c98b6d0 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\User\Models\User; use Modules\Lpj\Models\Teams; class TeamsUsers extends Model @@ -15,16 +15,17 @@ class TeamsUsers extends Model */ protected $table = 'teams_users'; protected $fillable = [ - 'team_id', 'user_id', 'status', 'authorized_status', 'authorized_at', + 'teams_id', 'user_id', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; public function team() { - return $this->belongsTo(Teams::class, 'team_id', 'id'); + return $this->belongsTo(Teams::class, 'teams_id', 'id'); } + public function user() { return $this->belongsTo(User::class, 'user_id', 'id'); diff --git a/database/migrations/2024_08_12_023807_create_debitures_table.php b/database/migrations/2024_08_12_023807_create_debitures_table.php new file mode 100644 index 0000000..583c859 --- /dev/null +++ b/database/migrations/2024_08_12_023807_create_debitures_table.php @@ -0,0 +1,54 @@ +id(); + $table->foreignIdFor(Branch::class)->constrained()->onDelete('cascade'); + $table->string('cif', 10)->unique(); + $table->string('name'); + $table->date('registered_at')->nullable(); + $table->string('npwp', 16)->nullable(); + $table->string('nomor_id', 16)->nullable(); + $table->string('email', 100)->nullable(); + $table->string('phone', 15)->nullable(); + $table->string('nomor_rekening', 50)->nullable(); + $table->string('province_code')->nullable()->index(); + $table->string('city_code')->nullable()->index(); + $table->string('district_code')->nullable()->index(); + $table->string('village_code')->nullable()->index(); + $table->string('postal_code', 5)->nullable(); + $table->text('address')->nullable(); + + $table->boolean('status')->default(true)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + : void + { + Schema::dropIfExists('debitures'); + } + }; diff --git a/database/migrations/2024_09_05_030405_create_teams_table.php b/database/migrations/2024_09_05_030405_create_teams_table.php index 88ae841..8ecffde 100644 --- a/database/migrations/2024_09_05_030405_create_teams_table.php +++ b/database/migrations/2024_09_05_030405_create_teams_table.php @@ -3,7 +3,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -use Mudels\Lpj\Models\Regions; +use Modules\Lpj\Models\Regions; return new class extends Migration @@ -15,7 +15,7 @@ return new class extends Migration { Schema::create('teams', function (Blueprint $table) { $table->id(); - $table->foreignIdFor(Regions::class, 'region_id'); + $table->foreignIdFor(Regions::class)->constrained()->onDelete('cascade'); $table->string('code')->unique()->index(); $table->string('name'); $table->char('status')->nullable(); diff --git a/database/migrations/2024_09_05_030417_create_teams_users_table.php b/database/migrations/2024_09_05_030417_create_teams_users_table.php index 9b4422e..32167ee 100644 --- a/database/migrations/2024_09_05_030417_create_teams_users_table.php +++ b/database/migrations/2024_09_05_030417_create_teams_users_table.php @@ -15,11 +15,9 @@ return new class extends Migration { Schema::create('teams_users', function (Blueprint $table) { $table->id(); - $table->foreignIdFor(Teams::class); - $table->foreignIdFor(Users::class); - - - $table->char('status')->nullable(); + $table->foreignIdFor(Teams::class)->constrained()->onDelete('cascade'); + $table->unsignedBigInteger('user_id'); + $table->boolean('status')->default(true)->nullable(); $table->char('authorized_status', 1)->nullable(); $table->timestamps(); $table->timestamp('authorized_at')->nullable(); 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 14d7766..9764f04 100644 --- a/database/migrations/2024_09_05_070712_create_penilaian_table.php +++ b/database/migrations/2024_09_05_070712_create_penilaian_table.php @@ -3,7 +3,8 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -use Modules\Lpj\Models\Penilaian; +use Modules\Lpj\Models\JenisPenilaian; +use Modules\Lpj\Models\Teams; return new class extends Migration { @@ -14,9 +15,9 @@ return new class extends Migration { Schema::create('penilaian', function (Blueprint $table) { $table->id(); - $table->foreignIdFor(Penilaian::class); + $table->foreignIdFor(JenisPenilaian::class); $table->foreignIdFor(Teams::class); - $table->foreignIdFor(Users::class); + $table->unsignedBigInteger('user_id'); $table->datetime('tanggal_kunjungan'); $table->text('keterangan'); $table->char('status'); @@ -28,7 +29,7 @@ return new class extends Migration $table->unsignedBigInteger('updated_by')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - + }); } diff --git a/module.json b/module.json index 559e479..568f490 100644 --- a/module.json +++ b/module.json @@ -65,17 +65,6 @@ "roles": [ "Administrator" ] - }, - { - "title": "Region", - "path": "", - "icon": "ki-filled ki-some-files text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "Administrator" - ] } ], "master": [ @@ -193,7 +182,32 @@ "attributes": [], "permission": "", "roles": [] + }, + { + "title": "Region", + "path": "basicdata.region", + "classes": "", + "attributes": [], + "permission": "", + "roles": [] + }, + { + "title": "Team Penilai", + "path": "basicdata.teams", + "classes": "", + "attributes": [], + "permission": "", + "roles": [] + }, + { + "title": "Jenis Penilaian", + "path": "basicdata.jenispenilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [] } + ] } ], diff --git a/resources/views/jenis_penilaian/form.blade.php b/resources/views/jenis_penilaian/form.blade.php new file mode 100644 index 0000000..ee73abe --- /dev/null +++ b/resources/views/jenis_penilaian/form.blade.php @@ -0,0 +1,64 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ +
+ + @if (isset($jenisPenilaian->id)) + @method('PUT') + + @endif + + @csrf +
+
+

+ {{ isset($jenisPenilaian->id) ? 'Edit' : 'Tambah' }} jenis penilaian +

+
+ Back +
+
+
+
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/jenis_penilaian/index.blade.php b/resources/views/jenis_penilaian/index.blade.php new file mode 100644 index 0000000..4d027a6 --- /dev/null +++ b/resources/views/jenis_penilaian/index.blade.php @@ -0,0 +1,160 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.jenispenilaian') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Jenis penilaian +

+ +
+
+
+ + + + + + + + + +
+ + + Code + + + Jenis penilaian + + Action
+
+ + + +
+
+
+@endsection + + + +@push('scripts') + + + +@endpush diff --git a/resources/views/region/create.blade.php b/resources/views/region/create.blade.php new file mode 100644 index 0000000..ed8ca6f --- /dev/null +++ b/resources/views/region/create.blade.php @@ -0,0 +1,61 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @if (isset($region->id)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($region->id) ? 'Edit' : 'Tambah' }} region +

+
+ Back +
+
+
+
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/region/index.blade.php b/resources/views/region/index.blade.php new file mode 100644 index 0000000..2d0bd32 --- /dev/null +++ b/resources/views/region/index.blade.php @@ -0,0 +1,152 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.region') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Region +

+ +
+
+
+ + + + + + + + + +
+ + + Code + + + Region + + Action
+
+ +
+
+
+@endsection + + + +@push('scripts') + + + +@endpush + + + diff --git a/resources/views/teams/form.blade.php b/resources/views/teams/form.blade.php new file mode 100644 index 0000000..2070f8c --- /dev/null +++ b/resources/views/teams/form.blade.php @@ -0,0 +1,113 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') + +
+ +
+ + @if (isset($teams->id)) + @method('PUT') + + @endif + @csrf +
+
+

+ {{ isset($teams->id) ? 'Edit' : 'Tambah' }} Teams +

+
+ Back +
+
+
+
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+
+@endsection diff --git a/resources/views/teams/index.blade.php b/resources/views/teams/index.blade.php new file mode 100644 index 0000000..dff81d8 --- /dev/null +++ b/resources/views/teams/index.blade.php @@ -0,0 +1,174 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.teams') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Teams +

+
+
+ +
+ +
+
+
+
+ + + + + + + + + + +
+ + + Region Name + + + Anggota Team + + Action
+
+ +
+
+
+@endsection + + + +@push('scripts') + + + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index f39cfcc..b850459 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -267,3 +267,46 @@ $trail->push('Data Permohonan'); }); + + Breadcrumbs::for('basicdata.region', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Region', route('basicdata.region.index')); + }); + Breadcrumbs::for('basicdata.region.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.region'); + $trail->push('Tambah Region', route('basicdata.region.create')); + }); + Breadcrumbs::for('basicdata.region.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.region'); + $trail->push('Edit Region'); + }); + + + Breadcrumbs::for('basicdata.teams', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Team', route('basicdata.teams.index')); + }); + Breadcrumbs::for('basicdata.teams.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.teams'); + $trail->push('Tambah Team', route('basicdata.teams.create')); + }); + + Breadcrumbs::for('basicdata.teams.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.teams'); + $trail->push('Edit Team'); + }); + + + Breadcrumbs::for('basicdata.jenispenilaian', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Jenis Penilaian', route('basicdata.jenispenilaian.index')); + }); + Breadcrumbs::for('basicdata.jenispenilaian.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.jenispenilaian'); + $trail->push('Tambah Jenis Penilaian', route('basicdata.jenispenilaian.create')); + }); + + Breadcrumbs::for('basicdata.jenispenilaian.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.jenispenilaian'); + $trail->push('Edit Jenis Penilaian'); + }); diff --git a/routes/web.php b/routes/web.php index d1737ef..e79efeb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,203 +1,279 @@ group(function () { - Route::name('basicdata.')->prefix('basic-data')->group(function () { - Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () { - Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisFasilitasKreditController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisFasilitasKreditController::class, 'export'])->name('export'); - }); - Route::resource('jenis-fasilitas-kredit', JenisFasilitasKreditController::class); +Route::middleware(['auth'])->group(function () { - Route::name('jenis-legalitas-jaminan.')->prefix('jenis-legalitas-jaminan')->group(function () { - Route::get('restore/{id}', [JenisLegalitasJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisLegalitasJaminanController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisLegalitasJaminanController::class, 'export'])->name('export'); - }); - Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); - - Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { - Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas'); - Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisJaminanController::class, 'export'])->name('export'); - }); - Route::resource('jenis-jaminan', JenisJaminanController::class); - - Route::name('tujuan-penilaian.')->prefix('tujuan-penilaian')->group(function () { - Route::get('restore/{id}', [TujuanPenilaianController::class, 'restore'])->name('restore'); - Route::get('datatables', [TujuanPenilaianController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [TujuanPenilaianController::class, 'export'])->name('export'); - }); - Route::resource('tujuan-penilaian', TujuanPenilaianController::class); - - Route::name('jenis-aset.')->prefix('jenis-aset')->group(function () { - Route::get('restore/{id}', [JenisAsetController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisAsetController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisAsetController::class, 'export'])->name('export'); - }); - Route::resource('jenis-aset', JenisAsetController::class); - - Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { - Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [JenisDokumenController::class, 'export'])->name('export'); - }); - Route::resource('jenis-dokumen', JenisDokumenController::class); - - Route::name('currency.')->prefix('mata-uang')->group(function () { - Route::get('restore/{id}', [CurrencyController::class, 'restore'])->name('restore'); - Route::get('datatables', [CurrencyController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [CurrencyController::class, 'export'])->name('export'); - }); - - Route::resource('mata-uang', CurrencyController::class, [ - 'names' => [ - 'index' => 'currency.index', - 'show' => 'currency.show', - 'create' => 'currency.create', - 'store' => 'currency.store', - 'edit' => 'currency.edit', - 'update' => 'currency.update', - 'destroy' => 'currency.destroy', - ], - ]); - - Route::name('branch.')->prefix('cabang')->group(function () { - Route::get('restore/{id}', [BranchController::class, 'restore'])->name('restore'); - Route::get('datatables', [BranchController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [BranchController::class, 'export'])->name('export'); - }); - - Route::resource('cabang', BranchController::class, [ - 'names' => [ - 'index' => 'branch.index', - 'show' => 'branch.show', - 'create' => 'branch.create', - 'store' => 'branch.store', - 'edit' => 'branch.edit', - 'update' => 'branch.update', - 'destroy' => 'branch.destroy', - ], - ]); - - Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { - Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); - Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); - }); - Route::resource('nilai-plafond', NilaiPlafondController::class); - - Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); - - Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); - - Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { - Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); - Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); - }); - Route::resource('arah-mata-angin', ArahMataAnginController::class); - - - Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { - Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); - Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables']) - ->name('datatables'); - Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); - }); - Route::resource('status-permohonan', StatusPermohonanController::class); - }); - - Route::name('permohonan.')->prefix('permohonan')->group(function () { - Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - Route::get('download/{id}', [PermohonanController::class, 'download'])->name('download'); - Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); - Route::get('datatables', [PermohonanController::class, 'dataForDatatables']) + /** ROUTE BASIC DATA ***/ + Route::name('basicdata.')->prefix('basic-data')->group(function () { + Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () { + Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisFasilitasKreditController::class, 'dataForDatatables']) ->name('datatables'); - Route::get('export', [PermohonanController::class, 'export'])->name('export'); + Route::get('export', [JenisFasilitasKreditController::class, 'export'])->name('export'); }); + Route::resource('jenis-fasilitas-kredit', JenisFasilitasKreditController::class); - Route::resource('permohonan', PermohonanController::class); - - Route::name('debitur.')->prefix('debitur')->group(function () { - Route::get('download/{id}', [DebitureController::class, 'download'])->name('download'); - Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); - Route::get('datatables', [DebitureController::class, 'dataForDatatables']) + Route::name('jenis-legalitas-jaminan.')->prefix('jenis-legalitas-jaminan')->group(function () { + Route::get('restore/{id}', [JenisLegalitasJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisLegalitasJaminanController::class, 'dataForDatatables']) ->name('datatables'); - Route::get('export', [DebitureController::class, 'export'])->name('export'); + Route::get('export', [JenisLegalitasJaminanController::class, 'export'])->name('export'); + }); + Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); + Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { + Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas'); + Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [JenisJaminanController::class, 'export'])->name('export'); + }); + Route::resource('jenis-jaminan', JenisJaminanController::class); - Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { - Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); - Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); - Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); - Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); - Route::post('store', [DokumenJaminanController::class, 'store'])->name('store'); - Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); - }); + Route::name('tujuan-penilaian.')->prefix('tujuan-penilaian')->group(function () { + Route::get('restore/{id}', [TujuanPenilaianController::class, 'restore'])->name('restore'); + Route::get('datatables', [TujuanPenilaianController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [TujuanPenilaianController::class, 'export'])->name('export'); + }); + Route::resource('tujuan-penilaian', TujuanPenilaianController::class); - Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () { - Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); - Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); - Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); - Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); - Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); - Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); - }); + Route::name('jenis-aset.')->prefix('jenis-aset')->group(function () { + Route::get('restore/{id}', [JenisAsetController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisAsetController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [JenisAsetController::class, 'export'])->name('export'); + }); + Route::resource('jenis-aset', JenisAsetController::class); + + Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { + Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [JenisDokumenController::class, 'export'])->name('export'); + }); + Route::resource('jenis-dokumen', JenisDokumenController::class); + + Route::name('currency.')->prefix('mata-uang')->group(function () { + Route::get('restore/{id}', [CurrencyController::class, 'restore'])->name('restore'); + Route::get('datatables', [CurrencyController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [CurrencyController::class, 'export'])->name('export'); }); - Route::resource('debitur', DebitureController::class); + Route::resource('mata-uang', CurrencyController::class, [ + 'names' => [ + 'index' => 'currency.index', + 'show' => 'currency.show', + 'create' => 'currency.create', + 'store' => 'currency.store', + 'edit' => 'currency.edit', + 'update' => 'currency.update', + 'destroy' => 'currency.destroy', + ], + ]); + + Route::name('branch.')->prefix('cabang')->group(function () { + Route::get('restore/{id}', [BranchController::class, 'restore'])->name('restore'); + Route::get('datatables', [BranchController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [BranchController::class, 'export'])->name('export'); + }); + + Route::resource('cabang', BranchController::class, [ + 'names' => [ + 'index' => 'branch.index', + 'show' => 'branch.show', + 'create' => 'branch.create', + 'store' => 'branch.store', + 'edit' => 'branch.edit', + 'update' => 'branch.update', + 'destroy' => 'branch.destroy', + ], + ]); + + Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { + Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); + Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); + }); + Route::resource('nilai-plafond', NilaiPlafondController::class); + + Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); + + Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); + + Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { + Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); + Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); + }); + Route::resource('arah-mata-angin', ArahMataAnginController::class); + + + Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { + Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); + Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); + }); + Route::resource('status-permohonan', StatusPermohonanController::class); + + Route::name('region.')->prefix('region')->group(function () { + Route::get('restore/{id}', [RegionController::class, 'restore'])->name('restore'); + Route::get('datatables', [RegionController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [RegionController::class, 'export'])->name('export'); + }); + + + Route::resource('region', RegionController::class, [ + 'names' => [ + 'index' => 'region.index', + 'show' => 'region.show', + 'create' => 'region.create', + 'store' => 'region.store', + 'edit' => 'region.edit', + 'update' => 'region.update', + 'destroy' => 'region.destroy', + ], + ]); + + Route::resource('region', RegionController::class); + + + Route::name('teams.')->prefix('teams')->group(function () { + Route::get('restore/{id}', [TeamsController::class, 'restore'])->name('restore'); + Route::get('datatables', [TeamsController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [TeamsController::class, 'export'])->name('export'); + }); + + Route::resource('teams', TeamsController::class, [ + 'names' => [ + 'index' => 'teams.index', + 'show' => 'teams.show', + 'create' => 'teams.create', + 'store' => 'teams.store', + 'edit' => 'teams.edit', + 'update' => 'teams.update', + 'destroy' => 'teams.destroy', + ], + ]); + + Route::name('jenispenilaian.')->prefix('jenispenilaian')->group(function () { + Route::get('restore/{id}', [JenisPenilaianController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisPenilaianController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [JenisPenilaianController::class, 'export'])->name('export'); + }); + + Route::resource('jenispenilaian', JenisPenilaianController::class, [ + 'names' => [ + 'index' => 'jenispenilaian.index', + 'show' => 'jenispenilaian.show', + 'create' => 'jenispenilaian.create', + 'store' => 'jenispenilaian.store', + 'edit' => 'jenispenilaian.edit', + 'update' => 'jenispenilaian.update', + 'destroy' => 'jenispenilaian.destroy', + ], + ]); + + }); + /** END ROUTE BASIC DATA ***/ + + Route::name('permohonan.')->prefix('permohonan')->group(function () { + Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); + Route::get('download/{id}', [PermohonanController::class, 'download'])->name('download'); + Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); + Route::get('datatables', [PermohonanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [PermohonanController::class, 'export'])->name('export'); + }); + + Route::resource('permohonan', PermohonanController::class); + + Route::name('debitur.')->prefix('debitur')->group(function () { + Route::get('download/{id}', [DebitureController::class, 'download'])->name('download'); + Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); + Route::get('datatables', [DebitureController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [DebitureController::class, 'export'])->name('export'); + + + Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { + Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); + Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); + Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); + Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); + Route::post('store', [DokumenJaminanController::class, 'store'])->name('store'); + Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); + }); + + Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () { + Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); + Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); + Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); + Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); + Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); + Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); + }); + }); + + Route::resource('debitur', DebitureController::class); + + + + + + Route::get('/cities/{province_code}', [DebitureController::class, 'getCities']); + Route::get('/districts/{city_code}', [DebitureController::class, 'getDistricts']); + Route::get('/villages/{district_code}', [DebitureController::class, 'getVillages']); + + +}); From e7d69c4e837976dcd3288f45a59ba0f16936aac9 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 11 Sep 2024 08:39:12 +0700 Subject: [PATCH 04/16] delete route city, district, vilage --- routes/web.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/routes/web.php b/routes/web.php index e79efeb..fc30aa1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -35,7 +35,7 @@ use Modules\Lpj\Http\Controllers\JenisPenilaianController; Route::middleware(['auth'])->group(function () { - /** ROUTE BASIC DATA ***/ + /** ROUTE BASIC DATA ***/ Route::name('basicdata.')->prefix('basic-data')->group(function () { Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () { Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore'); @@ -266,14 +266,4 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('debitur', DebitureController::class); - - - - - - Route::get('/cities/{province_code}', [DebitureController::class, 'getCities']); - Route::get('/districts/{city_code}', [DebitureController::class, 'getDistricts']); - Route::get('/villages/{district_code}', [DebitureController::class, 'getVillages']); - - }); From eac8e21b2eef86402297b4b0a8ba16bf85ff6c1e Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 11 Sep 2024 14:39:47 +0700 Subject: [PATCH 05/16] Update export di module senior officer --- app/Exports/JenisPenilaianExport.php | 46 +++++++ app/Exports/TeamPenilaianExport.php | 57 ++++++++ .../Controllers/JenisPenilaianController.php | 18 +-- app/Http/Controllers/PenilaianController.php | 67 +++++++++ app/Http/Controllers/TeamsController.php | 32 +++-- app/Http/Requests/JenisPenilaianRequest.php | 3 +- app/Http/Requests/PenilaianRequest.php | 26 ++++ module.json | 10 +- .../views/jenis_penilaian/form.blade.php | 4 +- .../views/jenis_penilaian/index.blade.php | 14 +- resources/views/penilaian/index.blade.php | 128 ++++++++++++++++++ resources/views/teams/form.blade.php | 2 +- routes/breadcrumbs.php | 19 ++- routes/web.php | 37 +++-- 14 files changed, 415 insertions(+), 48 deletions(-) create mode 100644 app/Exports/JenisPenilaianExport.php create mode 100644 app/Exports/TeamPenilaianExport.php create mode 100644 app/Http/Controllers/PenilaianController.php create mode 100644 app/Http/Requests/PenilaianRequest.php create mode 100644 resources/views/penilaian/index.blade.php diff --git a/app/Exports/JenisPenilaianExport.php b/app/Exports/JenisPenilaianExport.php new file mode 100644 index 0000000..7d633eb --- /dev/null +++ b/app/Exports/JenisPenilaianExport.php @@ -0,0 +1,46 @@ +id, + $row->code, + $row->name, + $row->created_at + ]; + } + + public function headings(): array + { + return [ + 'ID', + 'Code', + 'Jenis Penilaian', + 'Created At' + ]; + } + + public function columnFormats(): array + { + return [ + 'A' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_DATE_DATETIME + ]; + } +} diff --git a/app/Exports/TeamPenilaianExport.php b/app/Exports/TeamPenilaianExport.php new file mode 100644 index 0000000..3fdc1f7 --- /dev/null +++ b/app/Exports/TeamPenilaianExport.php @@ -0,0 +1,57 @@ +join('regions', 'teams.regions_id', '=', 'regions.id') + ->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id') + ->leftJoin('users', 'teams_users.user_id', '=', 'users.id') + ->groupBy('teams.id', 'teams.name', 'regions.name') + ->get(); + } + + public function map($row): array + { + return [ + $row->team_name, + $row->region_name, + $row->team_group, + ]; + } + + public function headings(): array + { + return [ + 'Name', + 'Region', + 'Anggota Team', + ]; + } + + public function columnFormats(): array + { + return [ + 'A' => NumberFormat::FORMAT_TEXT, + 'B' => NumberFormat::FORMAT_TEXT, + 'C' => NumberFormat::FORMAT_TEXT, + ]; + } +} diff --git a/app/Http/Controllers/JenisPenilaianController.php b/app/Http/Controllers/JenisPenilaianController.php index c38f673..3e16ce1 100644 --- a/app/Http/Controllers/JenisPenilaianController.php +++ b/app/Http/Controllers/JenisPenilaianController.php @@ -6,15 +6,12 @@ use Exception; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Http\Response; use Modules\Lpj\Models\JenisPenilaian; - use Modules\Lpj\Http\Requests\JenisPenilaianRequest; - - +use Modules\Lpj\Exports\JenisPenilaianExport; +use Maatwebsite\Excel\Facades\Excel; class JenisPenilaianController extends Controller { - public $user; /** * Display a listing of the resource. @@ -62,7 +59,6 @@ class JenisPenilaianController extends Controller public function update(JenisPenilaianRequest $request, $id) { - $validate = $request->validate(); // dump($validate); @@ -96,8 +92,6 @@ class JenisPenilaianController extends Controller public function dataForDatatables(Request $request) { - - if (is_null($this->user) || !$this->user->can('jenis_penilaian.view')) { //abort(403, 'Sorry! You are not allowed to view users.'); } @@ -112,7 +106,7 @@ class JenisPenilaianController extends Controller }); } - if($request->has('sortOrder') && !empty($request->get('sortOrder'))){ + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); $query->orderBy($column, $order); @@ -153,4 +147,10 @@ class JenisPenilaianController extends Controller 'data' => $data ]); } + + + public function export() + { + return Excel::download(new JenisPenilaianExport(), 'jenis-penilaian.xlsx'); + } } diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php new file mode 100644 index 0000000..831c163 --- /dev/null +++ b/app/Http/Controllers/PenilaianController.php @@ -0,0 +1,67 @@ +toArray(); + $region = Regions::whereNotIn('id', $regionTeam)->get(); + + // cek user apakah sudah ada di tabel teams_users + $userTeam = TeamsUsers::pluck('user_id')->toArray(); + $user = User::whereNotIn('id', $userTeam)->get(); return view('lpj::teams.form', compact('region', 'user')); } @@ -86,8 +93,13 @@ class TeamsController extends Controller public function edit($id) { $teams = Teams::find($id); + + $region = Regions::all(); - $user = User::all(); + $usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray(); + + $user = User::whereNotIn('id', $usedUsers)->get(); + // Ambil user yang sudah ada di tim ini $selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray(); return view('lpj::teams.form', compact('teams', 'region', 'user', 'selectedUsers')); @@ -149,15 +161,11 @@ class TeamsController extends Controller DB::commit(); - return redirect() - ->route('basicdata.teams.index') - ->with('success', 'Team has been deleted successfully.'); + echo json_encode(['success' => true, 'message' => 'Team has been deleted successfully']); + } catch (Exception $e) { DB::rollBack(); - - return redirect() - ->route('basicdata.teams.index') - ->with('error', 'Failed to delete team. '); + echo json_encode(['success' => false, 'message' => 'Failed to delete Team']); } } @@ -236,6 +244,10 @@ class TeamsController extends Controller } + public function export() + { + return Excel::download(new TeamPenilaianExport, 'team-penilai.xlsx'); + } } diff --git a/app/Http/Requests/JenisPenilaianRequest.php b/app/Http/Requests/JenisPenilaianRequest.php index 58562ea..f8479f0 100644 --- a/app/Http/Requests/JenisPenilaianRequest.php +++ b/app/Http/Requests/JenisPenilaianRequest.php @@ -22,8 +22,7 @@ class JenisPenilaianRequest extends FormRequest if ($this->method() == 'PUT') { - $rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code,' . $this->route('id'); - + $rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code,' . $this->id; } else { $rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code'; diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php new file mode 100644 index 0000000..8b29d51 --- /dev/null +++ b/app/Http/Requests/PenilaianRequest.php @@ -0,0 +1,26 @@ +
@if (isset($jenisPenilaian->id)) @@ -23,7 +23,7 @@ {{ isset($jenisPenilaian->id) ? 'Edit' : 'Tambah' }} jenis penilaian diff --git a/resources/views/jenis_penilaian/index.blade.php b/resources/views/jenis_penilaian/index.blade.php index 4d027a6..7e26e37 100644 --- a/resources/views/jenis_penilaian/index.blade.php +++ b/resources/views/jenis_penilaian/index.blade.php @@ -1,14 +1,14 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.jenispenilaian') }} + {{ Breadcrumbs::render('basicdata.jenis-penilaian') }} @endsection @section('content')
+ data-api-url="{{ route('basicdata.jenis-penilaian.datatables') }}">

Daftar Jenis penilaian @@ -16,14 +16,14 @@ @@ -91,7 +91,7 @@ } }); - $.ajax(`basic-data/jenispenilaian/${data}`, { + $.ajax(`basic-data/jenis-penilaian/${data}`, { type: 'DELETE' }).then((response) => { swal.fire('Deleted!', 'User has been deleted.', 'success').then(() => { @@ -135,7 +135,7 @@ title: 'Status', render: (item, data) => { return `
- + diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php new file mode 100644 index 0000000..cfd8309 --- /dev/null +++ b/resources/views/penilaian/index.blade.php @@ -0,0 +1,128 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{-- {{ Breadcrumbs::render('penilaian') }} --}} +@endsection + +@section('content') +
+ +
+ +
+ + + {{-- @if (isset($debitur->id)) + @method('PUT') + @endif + @csrf --}} +
+ +
+ + +
+
+
+ +
+ + @error('cif') + {{ $message }} + @enderror +
+
+
+ +
+ + @enderror +
+
+
+ +
+ + @error('name') + + @enderror +
+
+
+ +
+ + @error('npwp') + + @enderror +
+
+
+ +
+ + @error('email') + + @enderror +
+
+
+ +
+ + @error('phone') + + @enderror +
+
+ +
+ +
+ +
+
+ +
+@endsection diff --git a/resources/views/teams/form.blade.php b/resources/views/teams/form.blade.php index 2070f8c..3f0ab33 100644 --- a/resources/views/teams/form.blade.php +++ b/resources/views/teams/form.blade.php @@ -78,7 +78,7 @@
- +
+ @endif @csrf diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php new file mode 100644 index 0000000..7f094c9 --- /dev/null +++ b/resources/views/penilaian/form.blade.php @@ -0,0 +1,511 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@push('styles') + +@endpush + + +@section('content') +
+ +
+
+

+ Form Data Jaminan +

+
+ + Back +
+
+
+ +
+
+
+
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+

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 diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index cfd8309..8bbb9e8 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -1,128 +1,262 @@ @extends('layouts.main') @section('breadcrumbs') - {{-- {{ Breadcrumbs::render('penilaian') }} --}} + {{ Breadcrumbs::render('basicdata.penilaian') }} @endsection @section('content')
-
-

- {{ isset($debitur->id) ? 'Edit' : 'Tambah' }} Debitur -

-
- @if (isset($debitur->id)) - Buat - Permohonan +
+ @if (isset($status_permohonan)) + @foreach ($status_permohonan as $item) + {{ $item->name }} + @endforeach @endif - - Back +
+
+ +
+
+

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

+ +
+
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
+
+ +
+
+
+
+@endsection + +{{-- @section('content') +
+
+
+

+ Daftar penilaian +

+
- -
- {{-- @if (isset($debitur->id)) - @method('PUT') - @endif - @csrf --}} -
- -
- - +
+ + + + + + + + + +
+ + + Code + + + penilaian + + Action
+
+
-
-@endsection +@endsection --}} + + + +@push('scripts') + + + +@endpush diff --git a/resources/views/teams/form.blade.php b/resources/views/teams/form.blade.php index 3f0ab33..6301281 100644 --- a/resources/views/teams/form.blade.php +++ b/resources/views/teams/form.blade.php @@ -57,9 +57,10 @@
- - @if (isset($region)) @foreach ($region as $regions) @if (isset($teams)) @@ -71,31 +72,45 @@ @endif @endforeach @endif - - + + @error('regions_id') + {{ $message }} + @enderror
- @if (isset($user)) @foreach ($user as $users) @if (isset($teams)) + {{ $users->name . ' | ' }} + @foreach ($users->roles as $role) + {{ $role->name }} + @endforeach + @else - + @endif @endforeach @endif - + @error('user') + {{ $message }} + @enderror
diff --git a/resources/views/teams/index.blade.php b/resources/views/teams/index.blade.php index dff81d8..de782ec 100644 --- a/resources/views/teams/index.blade.php +++ b/resources/views/teams/index.blade.php @@ -141,7 +141,9 @@ title: 'User Team', render: (item, data) => { if (data.user_team && data.user_team.length) { - return `
    ${data.user_team.map(user => `
  • ${user.nama}
  • `).join('')}
`; + return `
    ${data.user_team.map(user => + `
  • ${user.nama} | ${user.roles.join(', ')}
  • ` + ).join('')}
`; } else { return '
  • N/A
'; } diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 8638b9c..5b39fe9 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -311,7 +311,12 @@ $trail->push('Edit Jenis Penilaian'); }); + Breadcrumbs::for('basicdata.penilaian', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); - $trail->push('Jenis Penilaian', route('basicdata.penilaian.index')); + $trail->push('Penilaian', route('basicdata.penilaian.index')); + }); + Breadcrumbs::for('basicdata.penilaian.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.penilaian'); + $trail->push('Buat Penilaian'); }); diff --git a/routes/web.php b/routes/web.php index 9a1da7b..e26f7c6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -285,4 +285,5 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('debitur', DebitureController::class); + }); From eb92e1b8f76823457438def959c237c90cc65e21 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 18 Sep 2024 17:40:24 +0700 Subject: [PATCH 07/16] penambahan form assign so --- app/Http/Controllers/PenilaianController.php | 205 +++--- app/Http/Requests/PenilaianRequest.php | 16 +- app/Models/Penilaian.php | 4 +- ...24_09_05_070712_create_penilaian_table.php | 6 +- module.json | 21 +- resources/views/penilaian/form.blade.php | 620 +++++------------- resources/views/penilaian/index.blade.php | 111 +--- routes/breadcrumbs.php | 8 +- routes/web.php | 65 +- 9 files changed, 366 insertions(+), 690 deletions(-) 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') - +@endpush From 9a238ddb8327afdc7b0311ea907b79319e8f86b9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 19 Sep 2024 11:09:59 +0700 Subject: [PATCH 12/16] penambahan detail permonan pada form assignment --- app/Http/Controllers/PenilaianController.php | 368 +++++++++--------- app/Http/Controllers/PermohonanController.php | 156 +------- resources/views/penilaian/form.blade.php | 228 ++++++++++- 3 files changed, 413 insertions(+), 339 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 194cde6..dadfd09 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -1,211 +1,203 @@ 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 { + $permohonan = Permohonan::findOrFail($request->permohonan_id); + $permohonan->update([ + 'status' => 'assign', + ]); - $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()); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + } catch (Exception $e) { + 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 specified resource. - */ - public function show($id) - { - return view('lpj::show'); - } + /** + * Update the specified resource in storage. + */ + public function update(PenilaianRequest $request, $id) + { + $validate = $request->validated(); - /** - * Show the form for editing the specified resource. - */ - public function edit($id) - { + if ($validate) { + try { + $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); - $permohonan = Permohonan::with(['user', 'debiture.province','debiture.city','debiture.district','debiture.village','branch', 'tujuanPenilaian'])->findOrFail($id); + $penilaian->update($validate); + $permohonan = Permohonan::findOrFail($id); + $permohonan->update([ + 'status' => 'assign', + ]); - $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')); - } - - /** - * Update the specified resource in storage. - */ - 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()); + 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. - */ - 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); + /** + * Show the specified resource. + */ + public function show($id) + { + return view('lpj::show'); } - return response()->json([], 200); + /** + * 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); + } + + } - - -} diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 5fe6996..2cd35d0 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -1,6 +1,6 @@ validated(); + public function index() + { + return view('lpj::permohonan.index'); + } public function store(PermohonanRequest $request) { @@ -53,7 +49,8 @@ class PermohonanController extends Controller } else { return redirect() ->route('permohonan.create') - ->with('error', 'Failed to create permohonan' . $e->getMessage()); + ->with('success', 'error naon iye') + ->withInput(); } } @@ -308,138 +305,3 @@ class PermohonanController extends Controller return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); } } - - public function create() - { - - return view('lpj::permohonan.create'); - } - - public function createPermohonan($debitur) - { - $branches = Branch::all(); - $debitur = Debiture::find($debitur); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view('lpj::permohonan.form', compact('branches', 'debitur', 'tujuanPenilaian', 'status')); - } - - public function edit($id) - { - $permohonan = Permohonan::find($id); - $branches = Branch::all(); - $debitur = Debiture::find($permohonan->debiture_id); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - - return view( - 'lpj::permohonan.form', - compact('permohonan', 'branches', 'debitur', 'tujuanPenilaian', 'status'), - ); - } - - public function update(PermohonanRequest $request, $id) - { - $validate = $request->validated(); - - if ($validate) { - try { - // Update in database - $permohonan = Permohonan::find($id); - $permohonan->update($validate); - return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan updated successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.edit', $id) - ->with('error', 'Failed to update permohonan'); - } - } - } - - public function destroy($id) - { - try { - // Delete from database - $permohonan = Permohonan::find($id); - $permohonan->delete(); - - echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); - } catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); - } - } - - 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, - ]); - } - - public function export() - { - return Excel::download(new PermohonanExport(), 'permohonan.xlsx'); - } -} diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 6ea1260..68e7bc0 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -18,7 +18,229 @@ @section('content')
+
+
+

+ Data Permohonan +

+
+
+
+

+ Nomor Register Permohonan: +

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

+ Pemohon: +

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

+ Tujan Permohonan: +

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

+ Detail Debutur +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ Name + + {{ $permohonan->debiture->name ?? "" }} +
+ Email + + {{ $permohonan->debiture->email ?? "" }} +
+ Phone + + {{ $permohonan->debiture->phone ?? "" }} +
+ Address + + {{ $permohonan->debiture->address ?? "" }} +
+   + + {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} +
+
+
+ + + + + + + + + + + + + + + + + +
+ Cabang + + {{ $permohonan->debiture->branch->name ?? "" }} +
+ CIF + + {{ $permohonan->debiture->cif ?? "" }} +
+ Nomor Rekening + + {{ $permohonan->debiture->nomor_rekening ?? "" }} +
+ NPWP + + {{ $permohonan->debiture->npwp ?? "" }} +
+
+
+
+
+ +
+
+

+ Data Jaminan +

+
+
+ @foreach($permohonan->debiture->documents as $dokumen) +
+ + +
+ @endforeach +
+
+

@@ -34,12 +256,8 @@
- @if (isset($penilaian->permohonan_id)) @method('PUT') - - @else - @endif @csrf
@@ -47,11 +265,13 @@ +
+
+ +
+ +
+
+ +
+ +
+ +
+
- +

diff --git a/resources/views/permohonan/form.blade.php b/resources/views/permohonan/form.blade.php index 45be1d5..7c82edd 100644 --- a/resources/views/permohonan/form.blade.php +++ b/resources/views/permohonan/form.blade.php @@ -128,6 +128,34 @@

+
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('nilai_njop') + {{ $message }} + @enderror +
+
+
+
+ +
+ + @error('status') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('nilai_njop') + {{ $message }} + @enderror +
+
+

- @foreach($permohonan->debiture->documents as $dokumen) -
+ @foreach ($permohonan->debiture->documents as $dokumen) +

- {{ $dokumen->pemilik->name?? "" }} + {{ $dokumen->pemilik->name ?? '' }}
@@ -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'); From 91d70c9e2ee68f8017329b8b97f8497f631b2dcc Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 25 Sep 2024 09:44:35 +0700 Subject: [PATCH 16/16] 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 {{}} --}} +

+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
{{ $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 ?? '' }}
+ + + + + + + + + + + + + +
+ + + 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 @@
-