diff --git a/app/Exports/KJPPExport.php b/app/Exports/KJPPExport.php index 86f3473..3b0cb13 100644 --- a/app/Exports/KJPPExport.php +++ b/app/Exports/KJPPExport.php @@ -53,7 +53,7 @@ class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, 'ID', 'Code', 'Name', - 'Jenis Kantor / Cabang', + 'Jenis Kantor', 'Nomor Ijin Usaha', 'Province Code', 'City Code', diff --git a/app/Exports/TujuanPenilaianKJPPExport.php b/app/Exports/TujuanPenilaianKJPPExport.php new file mode 100644 index 0000000..073db3a --- /dev/null +++ b/app/Exports/TujuanPenilaianKJPPExport.php @@ -0,0 +1,46 @@ +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/TujuanPenilaianKJPPController.php b/app/Http/Controllers/TujuanPenilaianKJPPController.php new file mode 100644 index 0000000..1ee7c9c --- /dev/null +++ b/app/Http/Controllers/TujuanPenilaianKJPPController.php @@ -0,0 +1,174 @@ +validated(); + + if ($validate) { + try { + TujuanPenilaianKJPP::create($validate); + return redirect() + ->route('basicdata.tujuan_penilaian_kjpp.index') + ->with('success', 'Tujuan Penilaian KJPP created successfully'); + } catch (Throwable $e) { + return redirect() + ->route('basicdata.tujuan_penilaian_kjpp.create') + ->with('success', 'Failed to create Tujuan Penilaian KJPP: ' . $e); + } + } + } + + /** + * Show the specified resource. + */ + public function show($id) + { + return view('lpj::show'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id); + return view('lpj::tujuan_penilaian_kjpp.create', compact('tujuanPenilaianKJPP')); + } + + /** + * Update the specified resource in storage. + */ + public function update(JenisPenilaianKJPPRequest $request, $id) + { + $validate = $request->validated(); + + if ($validate) { + try { + $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id); + $tujuanPenilaianKJPP->update($validate); + return redirect() + ->route('basicdata.tujuan_penilaian_kjpp.index') + ->with('success', 'Tujuan Penilaian KJPP updated successfully'); + } catch (Throwable $e) { + return redirect() + ->route('basicdata.tujuan_penilaian_kjpp.edit', $id) + ->with('success', 'Failed to update Tujuan Penilaian KJPP: ' . $e); + } + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + // Delete from database + $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id); + $tujuanPenilaianKJPP->delete(); + + echo json_encode(['success' => true, 'message' => 'Tujuan Penilaian deleted successfully']); + } catch (Throwable $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete deleted']); + } + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('jenis_jaminan.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = TujuanPenilaianKJPP::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('code', 'LIKE', "%$search%"); + $q->orWhere('name', '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->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 TujuanPenilaianKJPPExport, 'jenis_laporan.xlsx'); + } +} diff --git a/app/Http/Requests/JenisPenilaianKJPPRequest.php b/app/Http/Requests/JenisPenilaianKJPPRequest.php new file mode 100644 index 0000000..851b00c --- /dev/null +++ b/app/Http/Requests/JenisPenilaianKJPPRequest.php @@ -0,0 +1,45 @@ + 'required|max:5', + 'name' => 'required|max:255', + ]; + + if ($this->method() == 'PUT') { + $rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code,' . $this->id; + } else { + $rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code'; + } + + return $rules; + } + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } + + public function messages(): array + { + return [ + 'code.required' => 'Kode Tujuan Penilaian KJPP Wajib diisi!', + 'code.max' => 'Kode Tujuan Penilaian KJPP maksimum 5 huruf!', + 'code.unique' => 'Kode Tujuan Penilaian KJPP tidak boleh sama!', + 'name.required' => 'Nama Tujuan Penilaian KJPP Wajib diisi!', + 'name.max' => 'Nama Tujuan Penilaian KJPP Wajib diisi!' + ]; + } +} diff --git a/app/Models/TujuanPenilaianKJPP.php b/app/Models/TujuanPenilaianKJPP.php new file mode 100644 index 0000000..40adbea --- /dev/null +++ b/app/Models/TujuanPenilaianKJPP.php @@ -0,0 +1,19 @@ + - Jenis Kantor / Cabang + Jenis Kantor Action @@ -130,7 +130,7 @@ title: 'Nama KJPP', }, jenis_kantor: { - title: 'Jenis Kantor / Cabang', + title: 'Jenis Kantor', }, actions: { title: 'Action', diff --git a/resources/views/tujuan_penilaian_kjpp/create.blade.php b/resources/views/tujuan_penilaian_kjpp/create.blade.php new file mode 100644 index 0000000..92dd1b2 --- /dev/null +++ b/resources/views/tujuan_penilaian_kjpp/create.blade.php @@ -0,0 +1,77 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @if (isset($tujuanPenilaianKJPP->id)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($tujuanPenilaianKJPP->id) ? 'Edit' : 'Tambah' }} Tujuan Penilaian KJPP +

+
+ Back +
+
+
+ @if (isset($tujuanPenilaianKJPP->id)) +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @else +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @endif +
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/tujuan_penilaian_kjpp/index.blade.php b/resources/views/tujuan_penilaian_kjpp/index.blade.php new file mode 100644 index 0000000..e41fc78 --- /dev/null +++ b/resources/views/tujuan_penilaian_kjpp/index.blade.php @@ -0,0 +1,154 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.tujuan_penilaian_kjpp') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Tujuan Penilaian KJPP +

+ +
+
+
+ + + + + + + + + +
+ + + Kode Tujuan Penilaian KJPP + + + Nama Tujuan Penilaian KJPP + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 7642794..d583b2d 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -82,6 +82,21 @@ Breadcrumbs::for('basicdata.tujuan-penilaian.edit', function (BreadcrumbTrail $t $trail->push('Edit Tujuan Penilaian'); }); +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Tujuan Penilaian KJPP', route('basicdata.tujuan_penilaian_kjpp.index')); +}); + +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.tujuan_penilaian_kjpp'); + $trail->push('Tambah Tujuan Penilaian KJPP', route('basicdata.tujuan_penilaian_kjpp.create')); +}); + +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.tujuan_penilaian_kjpp'); + $trail->push('Edit Tujuan Penilaian KJPP'); +}); + Breadcrumbs::for('basicdata.jenis-dokumen', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('Jenis Dokumen', route('basicdata.jenis-dokumen.index')); diff --git a/routes/web.php b/routes/web.php index 7d51643..a981482 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,7 @@ use Modules\Lpj\Http\Controllers\StatusPermohonanController; use Modules\Lpj\Http\Controllers\TeamsController; use Modules\Lpj\Http\Controllers\TenderController; use Modules\Lpj\Http\Controllers\TujuanPenilaianController; +use Modules\Lpj\Http\Controllers\TujuanPenilaianKJPPController; /* |-------------------------------------------------------------------------- @@ -73,6 +74,13 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('tujuan-penilaian', TujuanPenilaianController::class); + Route::name('tujuan_penilaian_kjpp.')->prefix('tujuan_penilaian_kjpp')->group(function () { + Route::get('datatables', [TujuanPenilaianKJPPController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [TujuanPenilaianKJPPController::class, 'export'])->name('export'); + }); + Route::resource('tujuan_penilaian_kjpp', TujuanPenilaianKJPPController::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'])