Menambahkan fitur untuk mengunggah dokumen persetujuan penawaran, surat representasi, dan bukti bayar saat menyimpan persetujuan penawaran. Sekaligus mengupdate status permohonan terkait menjadi 'spk'. Menambahkan tampilan baru untuk formulir persetujuan penawaran dan memperbarui breadcrumb untuk mendukung halaman baru ini.
188 lines
6.5 KiB
PHP
188 lines
6.5 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest;
|
|
use Modules\Lpj\Models\Permohonan;
|
|
use Modules\Lpj\Models\PersetujuanPenawaran;
|
|
|
|
class PersetujuanPenawaranController extends Controller
|
|
{
|
|
public $user;
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
$persetujuanPenawarans = PersetujuanPenawaran::all();
|
|
return view('lpj::persetujuan_penawaran.index', compact('persetujuanPenawarans'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(PersetujuanPenawaranRequest $request)
|
|
{
|
|
$validated = $request->validated();
|
|
$validated['created_by'] = Auth::id();
|
|
|
|
$persetujuanPenawaran = PersetujuanPenawaran::updateOrCreate(
|
|
['penawaran_id' => $validated['penawaran_id']],
|
|
$validated,
|
|
);
|
|
|
|
$folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id'];
|
|
|
|
if ($request->hasFile('file_persetujuan_penawaran')) {
|
|
$persetujuanPenawaran->file_persetujuan_penawaran = $request->file('file_persetujuan_penawaran')->store(
|
|
$folderPath,
|
|
'public',
|
|
);
|
|
}
|
|
|
|
if ($request->hasFile('surat_representasi')) {
|
|
$persetujuanPenawaran->surat_representasi = $request->file('surat_representasi')->store(
|
|
$folderPath,
|
|
'public',
|
|
);
|
|
}
|
|
|
|
if ($request->hasFile('bukti_bayar')) {
|
|
$persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->store($folderPath, 'public');
|
|
}
|
|
|
|
$persetujuanPenawaran->save();
|
|
|
|
// Update the status of the related permohonan to 'spk'
|
|
$permohonan = Permohonan::find(request()->get('permohonan_id'));
|
|
if ($permohonan) {
|
|
$permohonan->status = 'spk';
|
|
$permohonan->save();
|
|
}
|
|
|
|
return redirect()
|
|
->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran berhasil disimpan.');
|
|
}
|
|
|
|
/**
|
|
* 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($id)
|
|
{
|
|
$permohonan = Permohonan::with(['debiture', 'penawaranTender.detail'])->find($id);
|
|
|
|
return view('lpj::persetujuan_penawaran.form', compact('permohonan'));
|
|
}
|
|
|
|
/**
|
|
* 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', 'penawaranTender.persetujuan'])->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,
|
|
]);
|
|
}
|
|
}
|