From e696604be6355c3006a5ddba45ee59bfeee2ea2c Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:47:01 +0700 Subject: [PATCH] Tambahkan PersetujuanPenawaranController Menambahkan `PersetujuanPenawaranController` untuk mengelola persetujuan penawaran. Controller ini mencakup operasi CRUD dasar (Create, Read, Update, Delete) serta menyediakan fitur pencarian dan paginasi melalui metode `dataForDatatables`. Metode-metode ini memudahkan interaksi pengguna dengan data persetujuan penawaran, memastikan data valid, dan mengelola otorisasi pengguna. --- .../PersetujuanPenawaranController.php | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 app/Http/Controllers/PersetujuanPenawaranController.php diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php new file mode 100644 index 0000000..73f7429 --- /dev/null +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -0,0 +1,147 @@ +validated(); + $validated['created_by'] = Auth::id(); + + PersetujuanPenawaran::create($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran created successfully.'); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('lpj::persetujuan_penawaran.create'); + } + + /** + * Display the specified resource. + */ + public function show(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.show', compact('persetujuanPenawaran')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.edit', compact('persetujuanPenawaran')); + } + + /** + * Update the specified resource in storage. + */ + public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran) + { + $validated = $request->validated(); + $validated['updated_by'] = Auth::id(); + + $persetujuanPenawaran->update($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(PersetujuanPenawaran $persetujuanPenawaran) + { + $persetujuanPenawaran->delete(); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran deleted successfully'); + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('persetujuan_penawaran.view')) { + //abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where(['status' => 'persetujuan-penawaran']); + + // 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%"); + }); + } + + // 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(['debiture','penawaranTender.detail'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $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, + ]); + } + }